CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Community Contributions > OpenFOAM CC Toolkits for Fluid-Structure Interaction

Defining pre-existing Fracture as function of time and Position

Register Blogs Community New Posts Updated Threads Search

Like Tree1Likes
  • 1 Post By bigphil

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   July 28, 2022, 11:56
Default Defining pre-existing Fracture as function of time and Position
  #1
New Member
 
Axel Dorian
Join Date: Nov 2018
Posts: 16
Rep Power: 8
Axello is on a distinguished road
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.
Axello is offline   Reply With Quote

Old   August 18, 2022, 13:34
Default
  #2
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Hello Axello,

Quote:
Originally Posted by Axello View Post
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 View Post
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 View Post
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?
Axello likes this.
bigphil is offline   Reply With Quote

Old   October 11, 2022, 09:44
Default
  #3
New Member
 
Axel Dorian
Join Date: Nov 2018
Posts: 16
Rep Power: 8
Axello is on a distinguished road
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.
Attached Images
File Type: jpg Document26-1.jpg (56.4 KB, 12 views)
Axello is offline   Reply With Quote

Old   October 11, 2022, 10:03
Default
  #4
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by Axello View Post
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.
bigphil is offline   Reply With Quote

Old   October 11, 2022, 10:08
Default
  #5
New Member
 
Axel Dorian
Join Date: Nov 2018
Posts: 16
Rep Power: 8
Axello is on a distinguished road
Quote:
Originally Posted by bigphil View Post
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
File Type: jpg Slide1.jpg (136.7 KB, 11 views)
Axello is offline   Reply With Quote

Old   October 11, 2022, 10:22
Default
  #6
New Member
 
Axel Dorian
Join Date: Nov 2018
Posts: 16
Rep Power: 8
Axello is on a distinguished road
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.
Axello is offline   Reply With Quote

Old   December 21, 2022, 11:19
Default
  #7
New Member
 
Axel Dorian
Join Date: Nov 2018
Posts: 16
Rep Power: 8
Axello is on a distinguished road
Quote:
Originally Posted by Axello View Post
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,

Please can I have your inputs on this?

Best Regards,
Axel
Axello is offline   Reply With Quote

Old   December 21, 2022, 12:05
Default
  #8
New Member
 
Axel Dorian
Join Date: Nov 2018
Posts: 16
Rep Power: 8
Axello is on a distinguished road
Quote:
Originally Posted by Axello View Post
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,

Please can I have your view on the issues mentioned above?

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
File Type: jpg Screenshot from 2022-12-21 17-46-53.jpg (83.0 KB, 5 views)
File Type: png Screenshot from 2022-12-21 17-51-52.png (15.7 KB, 4 views)
Axello is offline   Reply With Quote

Old   December 21, 2022, 12:18
Default
  #9
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by Axello View Post
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
bigphil is offline   Reply With Quote

Old   February 9, 2023, 03:20
Default
  #10
New Member
 
Axel Dorian
Join Date: Nov 2018
Posts: 16
Rep Power: 8
Axello is on a distinguished road
Quote:
Originally Posted by bigphil View Post
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,

Thanks for your reply.

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 !!!
Axello is offline   Reply With Quote

Old   February 14, 2023, 06:17
Default
  #11
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
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?
bigphil is offline   Reply With Quote

Old   February 14, 2023, 06:22
Default
  #12
New Member
 
Dorian
Join Date: Mar 2021
Posts: 10
Rep Power: 5
Dorian90 is on a distinguished road
Quote:
Originally Posted by bigphil View Post
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,

Thanks for your reply.
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
File Type: png Capture1.PNG (12.2 KB, 8 views)
Dorian90 is offline   Reply With Quote

Old   February 14, 2023, 12:14
Default
  #13
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
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.
bigphil is offline   Reply With Quote

Reply


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 Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[General] Extracting ParaView Data into Python Arrays Jeffzda ParaView 30 November 6, 2023 22:00
water injection error (modify the position of water injection) wjchoi Main CFD Forum 0 January 17, 2022 08:17
should Courant number always be kept below 1? wc34071209 OpenFOAM Running, Solving & CFD 16 March 9, 2014 20:31
calculation diverge after continue to run zhajingjing OpenFOAM 0 April 28, 2010 05:35
DPM UDF particle position using the macro P_POS(p)[i] dm2747 FLUENT 0 April 17, 2009 02:29


All times are GMT -4. The time now is 18:01.