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 Members List Search Today's Posts Mark Forums Read

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: 12
Rep Power: 6
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,023
Rep Power: 32
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: 12
Rep Power: 6
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, 3 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,023
Rep Power: 32
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: 12
Rep Power: 6
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, 2 views)
Axello is offline   Reply With Quote

Old   October 11, 2022, 10:22
Default
  #6
New Member
 
Axel Dorian
Join Date: Nov 2018
Posts: 12
Rep Power: 6
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   October 18, 2022, 08:39
Default
  #7
New Member
 
babalwa swami
Join Date: Apr 2022
Posts: 3
Rep Power: 2
babalwa 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?
that is informative man thanks for sharing i was looking for this info so badly
babalwa is offline   Reply With Quote

Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

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
water injection error (modify the position of water injection) wjchoi Main CFD Forum 0 January 17, 2022 08:17
[General] Extracting ParaView Data into Python Arrays Jeffzda ParaView 19 June 11, 2020 16:54
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:18.