# Defining pre-existing Fracture as function of time and Position

 Register Blogs Members List Search Today's Posts Mark Forums Read

 July 28, 2022, 10:56 Defining pre-existing Fracture as function of time and Position #1 New Member   Axel Dorian Join Date: Nov 2018 Posts: 15 Rep Power: 6 Using the basics model of Solid mechanics or Solids4Foam on FE4.0/4.1 for Solid Tutorials, on fractures, the pre-exisiting crack is predefined : in the fvSolution file, we have : crackLimitingBoxes 1( (0 -1e-5 0)(0.06 1e-5 1) // -1e-5 ----- 1e5 ); and in the case file 0/U (D) for displacement, the crack is defined as : crack { type solidCohesive; relaxationFactor 0.01; contact no; penaltyScale 1; frictionCoeff 0.1; explicitSeparationDistance no; value uniform ( 0 0 0 ); } This assumes the crack height and width are fixed. 1. Please, how can I do to set the crack height/width as a function of time and position? We have that G = - dΩ/ds , where : Ω is the strain energy only affected by the change in fracture surface area: dΩ = (dΩ/ds)dΩ G is the surface Energy release s : crack surface area in the file .....\src\solidModels\arbitraryCrack\solidCohesive \solidCohesiveFvPatchVectorField.C, the formula : if ( ((currentGI_[i]/GIc[i]) + (currentGII_[i]/GIIc[i])) >= 1 ) { //Pout << "GIc[i] is " << GIc[i] << ", curG is " << currentG << endl; if (!cracked_[i]) { Pout << "Face " << i << " is fully cracked" << endl; } cracked_[i] = true; gives the condition criteria for propagation. In the syntax below if (dict.found("oldGI")) { oldGI_ = scalarField("oldGI", dict, p.size()); } a declaration and definition of the variable oldGI ? Or In FE4.1/tut/solidMechanics/elasticAcpSolidFoam/crackingBiMatDcbDugdale/0 is it proper to define oldGI as follow: crack { type solidCohesive; relaxationFactor 0.01; contact no; penaltyScale 1; frictionCoeff 0.1; explicitSeparationDistance no; oldGI 220; for instance value uniform ( 0 0 0 ); } 2. Regarding the Surface Energy release, how can one record or extract the data file of Energy release variation w.r.t. crack surface area, to time, and Temperature as well in thermal stress is included? Thank you.

August 18, 2022, 12:34
#2
Super Moderator

Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,063
Rep Power: 33
Hello Axello,

Quote:
 Originally Posted by Axello Using the basics model of Solid mechanics or Solids4Foam on FE4.0/4.1 for Solid Tutorials, on fractures, the pre-exisiting crack is predefined : in the fvSolution file, we have : crackLimitingBoxes 1( (0 -1e-5 0)(0.06 1e-5 1) // -1e-5 ----- 1e5 ); and in the case file 0/U (D) for displacement, the crack is defined as : crack { type solidCohesive; relaxationFactor 0.01; contact no; penaltyScale 1; frictionCoeff 0.1; explicitSeparationDistance no; value uniform ( 0 0 0 ); } This assumes the crack height and width are fixed.
The crack limiting boxes do not specify the crack geometry; instead, they just limit the regions where cracks are allow to initiate and propagate, i.e. the limit the region where cracks are allowed to occur.

The crack limiting boxes are optional and if they are not defined then cracks are allowed everywhere in the domain.

Quote:
 Originally Posted by Axello 1. Please, how can I do to set the crack height/width as a function of time and position? We have that G = - dΩ/ds , where : Ω is the strain energy only affected by the change in fracture surface area: dΩ = (dΩ/ds)dΩ G is the surface Energy release s : crack surface area in the file .....\src\solidModels\arbitraryCrack\solidCohesive \solidCohesiveFvPatchVectorField.C, the formula : if ( ((currentGI_[i]/GIc[i]) + (currentGII_[i]/GIIc[i])) >= 1 ) { //Pout << "GIc[i] is " << GIc[i] << ", curG is " << currentG << endl; if (!cracked_[i]) { Pout << "Face " << i << " is fully cracked" << endl; } cracked_[i] = true; gives the condition criteria for propagation. In the syntax below if (dict.found("oldGI")) { oldGI_ = scalarField("oldGI", dict, p.size()); } a declaration and definition of the variable oldGI ? Or In FE4.1/tut/solidMechanics/elasticAcpSolidFoam/crackingBiMatDcbDugdale/0 is it proper to define oldGI as follow: crack { type solidCohesive; relaxationFactor 0.01; contact no; penaltyScale 1; frictionCoeff 0.1; explicitSeparationDistance no; oldGI 220; for instance value uniform ( 0 0 0 ); }

Hmnn.. I am not sure I understand your question. oldGI refers to the total energy dissipated up until the last time-step. This is required because the energy must be integrated to determine how much has been dissipated. Once this dissipated energy reaches the critical energy then the face is fully cracked.

Quote:
 Originally Posted by Axello 2. Regarding the Surface Energy release, how can one record or extract the data file of Energy release variation w.r.t. crack surface area, to time, and Temperature as well in thermal stress is included?
What exactly would you like to plot? GI vs time? crack surface area vs time?

October 11, 2022, 08:44
#3
New Member

Axel Dorian
Join Date: Nov 2018
Posts: 15
Rep Power: 6
Dear Dr. Philip,

I have been trying to run the solver and case without precising CrackLimitBoxes, that is in the file fvSOlution, I commented :

crackLimitingBoxes 1(

(0 -1e-1 0)(0.06 1e-1 1) );

I could have also commented the code portion in the file CreateCrack:

foam-extend-4.0/applications/solvers/solidMechanics/elasticAcpSolidFoam/CreateCrack

From line 65 // limit crack to specified boxes to line 148.

Does this makes sense to you?

While doing this, I have strange results as shown in the first image (at the Left).

Please how to properly apply the fracking with limitBoxes and have such a result as the second image (at the right)?

Attached Images
 Document26-1.jpg (56.4 KB, 8 views)

October 11, 2022, 09:03
#4
Super Moderator

Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,063
Rep Power: 33
Quote:
 Originally Posted by Axello Dear Dr. Philip, Thank you for your reply. I have been trying to run the solver and case without precising CrackLimitBoxes, that is in the file fvSOlution, I commented : crackLimitingBoxes 1( (0 -1e-1 0)(0.06 1e-1 1) ); I could have also commented the code portion in the file CreateCrack: foam-extend-4.0/applications/solvers/solidMechanics/elasticAcpSolidFoam/CreateCrack From line 65 // limit crack to specified boxes to line 148. Does this makes sense to you? While doing this, I have strange results as shown in the first image (at the Left). Please how to properly apply the fracking with limitBoxes and have such a result as the second image (at the right)? Thanks in Advance.
Which results are you trying to reproduce?

Note that the work from Bryant et al. used procedures that may not be available in solids4foam.

October 11, 2022, 09:08
#5
New Member

Axel Dorian
Join Date: Nov 2018
Posts: 15
Rep Power: 6
Quote:
 Originally Posted by bigphil Hello Axello, The crack limiting boxes do not specify the crack geometry; instead, they just limit the regions where cracks are allow to initiate and propagate, i.e. the limit the region where cracks are allowed to occur. The crack limiting boxes are optional and if they are not defined then cracks are allowed everywhere in the domain. Hmnn.. I am not sure I understand your question. oldGI refers to the total energy dissipated up until the last time-step. This is required because the energy must be integrated to determine how much has been dissipated. Once this dissipated energy reaches the critical energy then the face is fully cracked. What exactly would you like to plot? GI vs time? crack surface area vs time?

I get your point here. However, when I display the GI or GTotal on paraview, there is no variation. I don't know why.

In the constant folder, when defining the cohesizeProperties, we have :
type dugdale;
sigmaMax sigmaMax [1 -1 -2 0 0 0 0] 10e6;
tauMax tauMax [1 -1 -2 0 0 0 0] 10e6;
GIc GIc [1 0 -2 0 0 0 0] 200;
GIIc GIIc [1 0 -2 0 0 0 0] 200;

Since we already have GI and GII, How are GI and GII calculated to have (GI/GIc) + (GII/GIIc) >=1 as propagation criteria ?
The same with sigmaMax and tauMax. How do we get sigmaMaxc and tauMaxc to get (sigmaMax/sigmaMaxc)^2 + (tauMax/tauMaxc)^2 >=1 ?

The value of GI and GI with GTotal should change as the fracture propagates, right?

Code:
`What  exactly would you like to plot? GI vs time? crack surface area vs  time?`
I would like to plot (a) GI vs Time ; (b) GII vs Time ; (c) Crack surface area vs Time ;

Another issue here, since I can't get the fluid mesh to enter the rock domain as the fracture propagates, I defined a BC as given in the image in attached.

scalar meanU = gSum(U & patch().Sf())/gSum(patch().magSf());
Fracture Pres = -(nu./kperm.*meanU);

Now I want to store (in a .txt file) and display/plot (Gnuplot) this variation of this BC (Fracking Pressure) at Fracture walls. Please how to save my BC variation with time in a .txt ?

I want to store Frac Press evolution in a .txt and plot it later to see the variation.

Thank You Dr. Philip.
Attached Images
 Slide1.jpg (136.7 KB, 7 views)

 October 11, 2022, 09:22 #6 New Member   Axel Dorian Join Date: Nov 2018 Posts: 15 Rep Power: 6 Dear Philip, I want to reproduce some results of Dongkeun Lee in the his PhD thesis "A Model for Hydraulic Fracturing and Proppant Placement in Unconsolidated Sands". In the criterion for fracture initiation given in updateCrack.H (tN/tNC)^2 + (tS/tSC)^2 >1 to crack a face, how to you assess tNC and tSC? Also how do the condition (GI/GIc) + (GII/GIIc) > 1 executed? How do you find the GI and GII ? Because in CohesiveProperties, cohesive { type dugdale; sigmaMax sigmaMax [1 -1 -2 0 0 0 0] 10e6; tauMax tauMax [1 -1 -2 0 0 0 0] 10e6; GIc GIc [1 0 -2 0 0 0 0] 200; GIIc GIIc [1 0 -2 0 0 0 0] 200; } only sigmaMax, tauMax GIc, GIIc are given. Thank You.

December 21, 2022, 10:19
#7
New Member

Axel Dorian
Join Date: Nov 2018
Posts: 15
Rep Power: 6
Quote:
 Originally Posted by Axello Dear Dr. Philip, Thank you for your reply. I have been trying to run the solver and case without precising CrackLimitBoxes, that is in the file fvSOlution, I commented : crackLimitingBoxes 1( (0 -1e-1 0)(0.06 1e-1 1) ); I could have also commented the code portion in the file CreateCrack: foam-extend-4.0/applications/solvers/solidMechanics/elasticAcpSolidFoam/CreateCrack From line 65 // limit crack to specified boxes to line 148. Does this makes sense to you? While doing this, I have strange results as shown in the first image (at the Left). Please how to properly apply the fracking with limitBoxes and have such a result as the second image (at the right)? Thanks in Advance.

Hi Philip,

Best Regards,
Axel

December 21, 2022, 11:05
#8
New Member

Axel Dorian
Join Date: Nov 2018
Posts: 15
Rep Power: 6
Quote:
 Originally Posted by Axello I get your point here. However, when I display the GI or GTotal on paraview, there is no variation. I don't know why. In the constant folder, when defining the cohesizeProperties, we have : type dugdale; sigmaMax sigmaMax [1 -1 -2 0 0 0 0] 10e6; tauMax tauMax [1 -1 -2 0 0 0 0] 10e6; GIc GIc [1 0 -2 0 0 0 0] 200; GIIc GIIc [1 0 -2 0 0 0 0] 200; Since we already have GI and GII, How are GI and GII calculated to have (GI/GIc) + (GII/GIIc) >=1 as propagation criteria ? The same with sigmaMax and tauMax. How do we get sigmaMaxc and tauMaxc to get (sigmaMax/sigmaMaxc)^2 + (tauMax/tauMaxc)^2 >=1 ? The value of GI and GI with GTotal should change as the fracture propagates, right? Code: `What exactly would you like to plot? GI vs time? crack surface area vs time?` I would like to plot (a) GI vs Time ; (b) GII vs Time ; (c) Crack surface area vs Time ; Another issue here, since I can't get the fluid mesh to enter the rock domain as the fracture propagates, I defined a BC as given in the image in attached. scalar meanU = gSum(U & patch().Sf())/gSum(patch().magSf()); Fracture Pres = -(nu./kperm.*meanU); Now I want to store (in a .txt file) and display/plot (Gnuplot) this variation of this BC (Fracking Pressure) at Fracture walls. Please how to save my BC variation with time in a .txt ? I want to store Frac Press evolution in a .txt and plot it later to see the variation. Thank You Dr. Philip.

Hi Philip,

I finally got how to record the pressure variation on .txt file.

Regarding the plotting of GI and GII, it does not change values on Paraview but vary in simulation timesteps (see attached).

Finally, please how can I plot the :
(c) Crack surface area vs Time ; (b) GI vs Time ; (c) GII vs Time ; (c) GTotal vs Time ;

regards,
Attached Images
 Screenshot from 2022-12-21 17-46-53.jpg (83.0 KB, 3 views) Screenshot from 2022-12-21 17-51-52.png (15.7 KB, 2 views)

December 21, 2022, 11:18
#9
Super Moderator

Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,063
Rep Power: 33
Quote:
 Originally Posted by Axello Dear Philip, I want to reproduce some results of Dongkeun Lee in the his PhD thesis "A Model for Hydraulic Fracturing and Proppant Placement in Unconsolidated Sands". In the criterion for fracture initiation given in updateCrack.H (tN/tNC)^2 + (tS/tSC)^2 >1 to crack a face, how to you assess tNC and tSC? Also how do the condition (GI/GIc) + (GII/GIIc) > 1 executed? How do you find the GI and GII ? Because in CohesiveProperties, cohesive { type dugdale; sigmaMax sigmaMax [1 -1 -2 0 0 0 0] 10e6; tauMax tauMax [1 -1 -2 0 0 0 0] 10e6; GIc GIc [1 0 -2 0 0 0 0] 200; GIIc GIIc [1 0 -2 0 0 0 0] 200; } only sigmaMax, tauMax GIc, GIIc are given. Thank You.
Hi Axel,

In Dongkeun's work, he used a custom form of the solidCohesive boundary condition, where a hydraulic pressure was applied to the cracked patches. This hydraulic pressure increased as a function of the injected fluid and the crack volume, i.e. the pressure increases as the amount of injected fluid increases, but when the crack propagated, the pressure may temporarily drop as the volume increased.

You may like to contact Dongkeun to see if his boundary condition can be shared.

Philip

February 9, 2023, 02:20
#10
New Member

Axel Dorian
Join Date: Nov 2018
Posts: 15
Rep Power: 6
Quote:
 Originally Posted by bigphil Hi Axel, In Dongkeun's work, he used a custom form of the solidCohesive boundary condition, where a hydraulic pressure was applied to the cracked patches. This hydraulic pressure increased as a function of the injected fluid and the crack volume, i.e. the pressure increases as the amount of injected fluid increases, but when the crack propagated, the pressure may temporarily drop as the volume increased. You may like to contact Dongkeun to see if his boundary condition can be shared. Philip

Hi Philip,

Please how can I plot the :
(a) Crack surface area vs Time (mostly this); (b) GI vs Time ; (c) GII vs Time ; (d) GTotal vs Time ;

Also, in the crackingBiMatDcbDugdale case, what represents the materials file? Is it to define the material properties such as permeability or porosity or strength or something else?

Thank You !!!

 February 14, 2023, 05:17 #11 Super Moderator     Philip Cardiff Join Date: Mar 2009 Location: Dublin, Ireland Posts: 1,063 Rep Power: 33 Hi Axel, Sorry for the delay. It is possible to plot all these values, however, you need to edit the code to print out this data. Which "materials" file are you referring to? And which version of code?

February 14, 2023, 05:22
#12
New Member

Dorian
Join Date: Mar 2021
Posts: 6
Rep Power: 4
Quote:
 Originally Posted by bigphil Hi Axel, Sorry for the delay. It is possible to plot all these values, however, you need to edit the code to print out this data. Which "materials" file are you referring to? And which version of code?
Dear Philip,

Please can you give me hint or tip on how to edit the code to have the crack surface area Vs Time?

As regarding the materials, see the image below of what I referred to.

Thank You.
Attached Images
 Capture1.PNG (12.2 KB, 4 views)

 February 14, 2023, 11:14 #13 Super Moderator     Philip Cardiff Join Date: Mar 2009 Location: Dublin, Ireland Posts: 1,063 Rep Power: 33 OK, you are referring to elasticAcpSolidFoam in the solidMechanics toolbox, as opposed to solids4foam. In the solidMechanics toolbox, the "materials" file is used to indicate the different material regions, e.g. "0" indicates a cell is part of material0, "1" is part of material1, etc. In solids4foam, the materials file was removed, and, instead, material regions are indicated using cellZones. In terms of writing out the data you want, I suggest becoming familiar with the code in the solidCohesive boundary condition and then create an output file, e.g. OFstream myFile("myFile.txt"), and write any information you are interested in.

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are Off Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post Jeffzda ParaView 29 January 18, 2023 07:37 wjchoi Main CFD Forum 0 January 17, 2022 07:17 wc34071209 OpenFOAM Running, Solving & CFD 16 March 9, 2014 19:31 zhajingjing OpenFOAM 0 April 28, 2010 04:35 dm2747 FLUENT 0 April 17, 2009 01:29

All times are GMT -4. The time now is 12:39.