Modeling hydarulic fracturing in rock medium

Asked by Najm

Hi Guys,

I am interested in modeling hydraulic fracturing in rock medium. I have played around with YADE (no fluids) for a month now and I understand the implementation on the cohesive elements. Now it’s time to add the fluids part in. I have read the thesis of Emanuele Catalano and Timos Papachristos and their related publications. From my understanding, FluidEngine might not be the best option rather DFNFlow would be a better choice [1]. I can't find any documentation or example on DFNFlow. Can anyone direct me to understand how to implement DFNFlow in my YADE model.

Thank you soo much!

[1] https://github.com/yade/trunk/blob/master/pkg/pfv/DFNFlow.cpp#L170

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Najm
Solved:
Last query:
Last reply:

This question was reopened

  • by Najm
Revision history for this message
Robert Caulk (rcaulk) said :
#1

There does not exist any documentation or example scripts at the moment. It is a pity since I think the paper you reference is quite nice. In fact, DFNFlow is still not even compiled by default. You will need to compile from sources and activate DFNFlow by modifying the source code. Uncomment this line [1]. As for adding DFNFlow to a script, there is nothing particularly special to do besides replacing FlowEngine in your engine list with DFNFlowEngine. You have some attributes that should be controlled (same way as you control normal flowengine attributes) as highlighted in the source [2]. Finally, make sure you use JCFpm, since that is the only material/constitutive law that will work with DFNFlow right now. Then you should be good to go.

If you wish to exactly reproduce the Papachristos paper that you reference, you will need to contact the corresponding author of that publication to request more info.

Cheers,

Robert

[1]https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/pfv/DFNFlow.cpp#L17
[2]https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/pfv/DFNFlow.cpp#L191

Revision history for this message
Najm (mrhappy) said :
#2

Thank you so much for your help, Robert. I will look into now.
I really appreciate your detailed response.

Revision history for this message
Najm (mrhappy) said :
#3

Hey Robert,

I tried to compile Yade by downloading the source file from [1] yade-2020.01a.tar.bz2. I uncommented the line [2]. During the compiling (command: make), I got the following error:

[ 81%] Building CXX object CMakeFiles/yade.dir/pkg/pfv/DFNFlow.cpp.o
[ 81%] Building CXX object CMakeFiles/yade.dir/pkg/pfv/DummyFlowEngine.cpp.o
[ 82%] Building CXX object CMakeFiles/yade.dir/pkg/pfv/FlowEngine.cpp.o
[ 82%] Building CXX object CMakeFiles/yade.dir/pkg/pfv/PeriodicFlowEngine.cpp.o
/home/nabid/Documents/myYade/trunk/pkg/pfv/DFNFlow.cpp: In member function ‘void yade::DFNBoundingSphere::saveVtk(const char*, bool)’:
/home/nabid/Documents/myYade/trunk/pkg/pfv/DFNFlow.cpp:59:40: error: unused parameter ‘withBoundaries’ [-Werror=unused-parameter]
  void saveVtk(const char* folder, bool withBoundaries) //FIXME: withBoundaries does nothing in DFNFlow right now. Needed for consistent templating.
                                        ^~~~~~~~~~~~~~
/home/nabid/Documents/myYade/trunk/pkg/pfv/DFNFlow.cpp: In member function ‘void yade::DFNFlowEngine::interpolateCrack(yade::TemplateFlowEngine_DFNFlowEngineT<yade::DFNCellInfo, yade::DFNVertexInfo, yade::CGT::_Tesselation<yade::CGT::TriangulationTypes<yade::DFNVertexInfo, yade::DFNCellInfo> >, yade::DFNBoundingSphere>::Tesselation&, yade::TemplateFlowEngine_DFNFlowEngineT<yade::DFNCellInfo, yade::DFNVertexInfo, yade::CGT::_Tesselation<yade::CGT::TriangulationTypes<yade::DFNVertexInfo, yade::DFNCellInfo> >, yade::DFNBoundingSphere>::Tesselation&)’:
/home/nabid/Documents/myYade/trunk/pkg/pfv/DFNFlow.cpp:208:22: error: variable ‘cellEnd’ set but not used [-Werror=unused-but-set-variable]
  FiniteCellsIterator cellEnd = newTri.finite_cells_end();
                      ^~~~~~~
[ 83%] Building CXX object CMakeFiles/yade.dir/pkg/pfv/SoluteFlowEngine.cpp.o
[ 83%] Building CXX object CMakeFiles/yade.dir/pkg/pfv/Thermal.cpp.o
[ 84%] Building CXX object CMakeFiles/yade.dir/pkg/pfv/TwoPhaseFlowEngine.cpp.o
[ 84%] Building CXX object CMakeFiles/yade.dir/pkg/pfv/UnsaturatedEngine.cpp.o
[ 85%] Building CXX object CMakeFiles/yade.dir/lib/base/Math.cpp.o
[ 85%] Building CXX object CMakeFiles/yade.dir/lib/factory/ClassFactory.cpp.o
[ 86%] Building CXX object CMakeFiles/yade.dir/lib/factory/DynLibManager.cpp.o
[ 86%] Building CXX object CMakeFiles/yade.dir/lib/base/Logging.cpp.o
[ 87%] Building CXX object CMakeFiles/yade.dir/lib/serialization/Serializable.cpp.o
[ 87%] Building CXX object CMakeFiles/yade.dir/lib/pyutil/gil.cpp.o
[ 88%] Building CXX object CMakeFiles/yade.dir/core/main/pyboot.cpp.o
[ 88%] Building CXX object CMakeFiles/yade.dir/lib/opengl/GLUtils.cpp.o
[ 89%] Building CXX object CMakeFiles/yade.dir/lib/triangulation/KinematicLocalisationAnalyser.cpp.o
cc1plus: all warnings being treated as errors
CMakeFiles/yade.dir/build.make:3446: recipe for target 'CMakeFiles/yade.dir/pkg/pfv/DFNFlow.cpp.o' failed
make[2]: *** [CMakeFiles/yade.dir/pkg/pfv/DFNFlow.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:137: recipe for target 'CMakeFiles/yade.dir/all' failed
make[1]: *** [CMakeFiles/yade.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

Any advice? By the way, Yade compiles perfectly and works well when I comment the line [2].
Thank you for your help.

[1] https://launchpad.net/yade/+download
[2] https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/pfv/DFNFlow.cpp#L17

Revision history for this message
Jérôme Duriez (jduriez) said :
#4

A solution is to add -DENABLE_USEFUL_ERRORS = OFF as an option to your cmake command.

The DFNFlow part of your code (not the most recent one, do not know if this enters into picture) is not free from compilation warnings, and these are here treated as errors (because -DENABLE_USEFUL_ERRORS = ON by default). Which is a problem only in the case where DFNFlow is compiled, obviously, which depends on the commented nature of that L17 in your [2]

Revision history for this message
Najm (mrhappy) said :
#5

Thank you so much Jerome. I now have it install and it seems to be working.
I have just one question for Robert: You mentioned using JCFpm for modeling the connection between spheres. Do you mean using:
 InteractionLoop(
      [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR)],
     [Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1)],
     [Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM()]
   ),

One last question, anyone know how to impose a volume flow rate?
Agian, thank you all for your help.

Revision history for this message
Jérôme Duriez (jduriez) said :
#6

The above InteractionLoop indeed is appropriate to use JCFpm (note there are examples in examples/jointedCohesiveFrictionalPM/, eg [*] for the latest YADE version)

For the exact attribute values, it is up to you (you're here missing Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM.smoothJoint = 1 for instance, in case you would like to apply smooth joint logic)

For the imposed volume flow rate, this looks like a different question ;-)
(maybe already covered in previous ones ?)

[*] https://gitlab.com/yade-dev/trunk/-/tree/master/examples/jointedCohesiveFrictionalPM

Revision history for this message
Robert Caulk (rcaulk) said :
#7

>For the imposed volume flow rate, this looks like a different question ;-)

Agreed, in an effort to keep this forum organized, please make a new thread for this question. Hint, it is possible and outlined in the FlowEngine class reference.

Revision history for this message
Najm (mrhappy) said :
#8

Thank you soo much for your help. I appreciate it. You guys are amazing!