Coupling problem

191 views
Skip to first unread message

April Rao

unread,
Mar 31, 2016, 1:31:34 AM3/31/16
to moose-users
Hi all,

As suggested 
I am inherit from FiniteStrainHyperelasticViscoplasticity.C to implement a visocoplasiticy , I override the computrevalue in the UserObjects HEVPFlowRatePowerLawJ2.C, 
my expression for the FlowRate including the effective temperature chi, which is governing by a diffusion equation, and in the heat conduction equation, another coupling of the deviatorics stress and the plastic strain rate, so this is a two way coupling problem. 

Can anyone point to me an example of this two way coupling problem ?  I should write a new kernel for term S::D^pl, (D^pl is the flow rate , and S is the devitoric stress), and :: is the double contraction, however how should I do the coupling, do I need to express the stress and flow rate in terms of displacement u ?? 

Any comments are appreciated:) 


Thank you ,

April 

Chakraborty (Non-US), Pritam

unread,
Mar 31, 2016, 10:27:55 AM3/31/16
to moose-users
Hi April,

Have a look into moose/modules/combined/tests/phase_field_fracture_viscoplastic test. In there I have coupled damage variable c to the viscoplastic material. The damage variable is solved using a PDE.
For your case you need to couple chi to the user object that calculates the flow rate. You need to override HEVPFlowRatePowerLawJ2.C to define your new flow rate equation. You may also need to add classes to calculate the source and gradient terms in equation 3.

Regards
Pritam



--
You received this message because you are subscribed to the Google Groups "moose-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to moose-users...@googlegroups.com.
Visit this group at https://groups.google.com/group/moose-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/moose-users/536db9d9-d6d0-417c-9605-5ce0471d1701%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

April Rao

unread,
Mar 31, 2016, 2:47:32 PM3/31/16
to moose-users
Hi Pritam,

Thank you so much for the suggestions. 

I am thinking to modified the kernel HeatSource.C  ,add the coupling term S:D^pl in it,  is this the right way ? 


Thank you,
April 

Chakraborty (Non-US), Pritam

unread,
Apr 4, 2016, 10:05:37 AM4/4/16
to moose-users
Hi April,

Equation 3 can be split into 3 kernels to solve for chi. You can use TimeDerivative kernel for chi_dot. Look into the MaskedBodyForce for the source term (1st rhs). Have a look into MatCoefDiffusion for the gradient term (2nd rhs) where the diffusivity can be a material property.
You can use the TensorMechanics block to set the mechanics problem in which the visco plastic model will be evaluated as a material property.

I think you need to write 2 material classes and one user object. The material classes will be used in MaskedBodyForce (Eq. 3) and MatCoefDiffusion (Eq. 3). The user object will inherit for J2 to couple to chi (Eq. 1 and 2).

Hope this helps.

Pritam



On Wed, Mar 30, 2016 at 11:31 PM, April Rao <april...@gmail.com> wrote:

--

April Rao

unread,
Apr 6, 2016, 2:41:58 PM4/6/16
to moose-users
Thank you so much for the suggestion. 


I want to first test the viscoplasticity without the coupling problem, by setting chi to a constant. so I have change the HEVPFLowRateJ2Powerlaw. C
I have attached my code. I override the corresponding function : computeValue ,computeDerivative, computreTensorDerivative 

I got the following error message :

******************************

*** ERROR ***

Constitutive failure with substepping at quadrature point 0.211325 0.211325 0.211325

****************************

Thank you so much if you can take a look at it , see if I am on the right track:) 

 


Thank you,


Rao

stzHEVPFlowRatePowerLawJ2.C

Chakraborty (Non-US), Pritam

unread,
Apr 7, 2016, 9:47:08 AM4/7/16
to moose-users
Hi April,

Can you send your header and input file as well. I can run it at my end.

Have you tried reducing time step size (dt). Also try increasing the max_substep_iteration.

Pritam

--
You received this message because you are subscribed to the Google Groups "moose-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to moose-users...@googlegroups.com.
Visit this group at https://groups.google.com/group/moose-users.

April Rao

unread,
Apr 7, 2016, 2:19:28 PM4/7/16
to moose-users
Thank you so much , Pritam. 

Yes I tried to reducing the time step and max_substep_iteration and none of these works.  I am attaching the header files and the source files, input file.

Thank you,

April
stz.i
stzFiniteStrainHyperElasticViscoPlastic.h
stzHEVPFlowRatePowerLawJ2.h
stzFiniteStrainHyperElasticViscoPlastic.C
stzHEVPFlowRatePowerLawJ2.C

Chakraborty (Non-US), Pritam

unread,
Apr 8, 2016, 1:08:30 PM4/8/16
to moose-users
Hi April,

I was looking into your code and the equations. What is s in equation 2. As I understand s_bar is the effective stress and s0 is the resistive stress. s has also be been used in equation 3.

Pritam 

April Rao

unread,
Apr 8, 2016, 1:48:44 PM4/8/16
to moose-users
Hi Pritam,

Thank you so much for looking at my code. 

S is the deviatoric part of the Cauchy stress, and S/S_bar is the flow rate direction. 


Thank you ,

April

April Rao

unread,
Apr 11, 2016, 2:00:19 PM4/11/16
to moose-users
Hi Pritam,

When you mean material class, do you mean that I need to add two kernels for chi? 


Thank you,

April

Chakraborty (Non-US), Pritam

unread,
Apr 12, 2016, 1:02:40 PM4/12/16
to moose-users
Hi April,

I could make it work. These are the changes.
1. You don't need the material class. Implementing just the user object is fine.
2. In compute value of stzhevpflowratepowerlawj2

   if (eqv_stress>_strength[qp])

     val = 1.0/_t_tau*std::exp(-1.0/_chi)*std::exp(eqv_stress/_grain_pressure/_chi)*(1.0 - _strength[qp]/eqv_stress);

   else

     val = 0.0;


3. In compute tensor derivative

     if (eqv_stress > _strength[qp])

       dflowrate_dseqv = 1.0/_t_tau * std::exp(-1.0/_chi) * std::exp(eqv_stress/_grain_pressure/_chi) * \

                                                           (1.0/(_grain_pressure * _chi) * (1 - _strength[qp]/eqv_stress) \

                                                            + _strength[qp]/(eqv_stress*eqv_stress));


4. Increased the flow_rate_tol to 1e5 (upper cutoff) or even higher. For the parameter set you are using, the failure happens since the flow_rate_tol is exceeded.

5. use_displaced_mesh = true in the input file

6.  You may also like to regularize the jump function in the flow rate equation. A 1d analysis of your flow rate function can be useful to see the sensitivity to different parameters.

Let me know if this fix the convergence issue.

Pritam


April Rao

unread,
Apr 12, 2016, 2:47:09 PM4/12/16
to moose-users

Hi Pritam,

Thank you so much for debugging my code, now it is working fine with no convergence issue. 
I have add the coupling of chi to Eq (1) and Eq(2).  

Now I am working on setting up two material classes in delating with the S:D^{pl} term, and the conductivity term in Eq (3).  

So in one of my material class , I should have a material declare as for instants SDpl, and computreQpproperty for this value, how should I obtain the stress and the plastic strain rate into this material class? using addCoupled() ? 

Thank you for your help.

April

Chakraborty (Non-US), Pritam

unread,
Apr 12, 2016, 3:26:50 PM4/12/16
to moose-users
Hi April,

What you can do is to use getmaterialproperty in your material class to fetch pk2, fp, fp_old. Then form the plastic velocity gradient Lp0 tensor ((fp-fp_old)/dt*fp.inverse()). Lp0 is formed from flow rate and direction.
Then you can take the inner product of pk2 with Lp0.
You can look into the viscoplastic material class and the user objects to see how to use getmaterialproperty.

Pritam

April Rao

unread,
Apr 12, 2016, 4:07:31 PM4/12/16
to moose-users
Thanks Pritam for the suggestion.

I have followed the instruction from Example08, set a mateiral class, and user getmaterialproperty to get fp,etc. 

I got the following error: 
***********************************

MOOSE Compiling C++ (in opt mode) /Users/max/projects/stz/src/material/stzExampleMaterial.C...

In file included from /Users/max/projects/stz/src/material/stzExampleMaterial.C:15:

/Users/max/projects/stz/include/material/stzExampleMaterial.h:42:26: error: use of undeclared identifier 'RankTwoTensor'

  const MaterialProperty<RankTwoTensor> & _fp;

                         ^

/Users/max/projects/stz/src/material/stzExampleMaterial.C:35:29: error: use of undeclared identifier 'RankTwoTensor'

    _fp(getMaterialProperty<RankTwoTensor>(_base_name + "fp"))

                            ^

2 errors generated.

make: *** [/Users/max/projects/stz/src/material/stzExampleMaterial.x86_64-apple-darwin15.4.0.opt.lo] Error 1

**********************************

I am attaching the source file and the header file.


Thank you,

April

stzExampleMaterial.C
stzExampleMaterial.h
Reply all
Reply to author
Forward
0 new messages