Crystal Plasticity

512 views
Skip to first unread message

Cao DucToan

unread,
Oct 16, 2020, 1:50:35 PM10/16/20
to moose-users

Hi MOOSE team,

I am testing this example ( modules/tensor_mechanics/test/tests/crystal_plasticity/crysp_cutback.i ), but i cannot see the plasticity field (fp_zz] in Paraview.  Could you please help me for your experiences for this test? If you can estimate a time step  of the input file  for the crystalplasticity model, i really appreciate it.

Thank you very much for any help. 

Kind regards,

Toan D Cao
University of Alabama
Department of Mechanical Engineering

Wen Jiang

unread,
Oct 16, 2020, 2:53:13 PM10/16/20
to moose-users
It is better to use UserObject-based Crystal Plasticity model ( https://mooseframework.inl.gov/source/materials/FiniteStrainUObasedCP.html) and its tests are under /modules/tensor_mechanics/test/tests/cp_user_object/

I assume you can see fp_zz in Paraview, but its field is a constant value, correct? This test has only one element, and we usually plot the the average of Fp for each element. So you would see a constant value for Fp in this case.

The time step depends on many factors, i.e. the loading, material models. etc,  so there is no general way that could give a best estimation. However, if you use a large time step and your solution does not converge, simulation will cut the time step and rerun the step. This is the main purpose of that test file.  In addition, you can use adaptive time stepper, see https://www.mooseframework.org/syntax/Executioner/TimeStepper/index.html 

Cao DucToan

unread,
Oct 16, 2020, 3:00:58 PM10/16/20
to moose...@googlegroups.com
Hi Wen Jiang

Thank you very much for your response. Yes, I see it in Paraview but the fp_zz is almost constant. Thanks again for your time. Do you have any examples to see the results and to understand a better program of Moose for beginners like me?

Kind regards,

Toan D Cao
University of Alabama
Department of Mechanical Engineering

--
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.
To view this discussion on the web visit https://groups.google.com/d/msgid/moose-users/80aeef3e-f4f8-4ea2-9b3b-581849b2474bo%40googlegroups.com.

Wen Jiang

unread,
Oct 16, 2020, 3:19:28 PM10/16/20
to moose-users
The front page of MOOSE website has a training video. The workshop slides can be found at https://www.mooseframework.org/workshop/#/. If you are interested in mechanics problems for instance, the documentation of Mechanics Module can be a good reference, see https://www.mooseframework.org/modules/tensor_mechanics/index.html       
To unsubscribe from this group and stop receiving emails from it, send an email to moose...@googlegroups.com.

Cao DucToan

unread,
Oct 16, 2020, 3:23:02 PM10/16/20
to moose...@googlegroups.com
Thanks Wen Jian for a good reference. I will check it and have a good day.

Kind regards,

Toan D Cao
University of Alabama
Department of Mechanical Engineering

Virus-free. www.avg.com

To unsubscribe from this group and stop receiving emails from it, send an email to moose-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/moose-users/9f26e3cf-af5a-4d40-9a1f-8d4c6d29859ao%40googlegroups.com.

Nicolò Grilli

unread,
Oct 17, 2020, 9:44:26 PM10/17/20
to moose-users
Dear Toan,

I have worked a couple of years on the crystal plasticity model in MOOSE,
I have developed some code that you can find in my github.

and you can see the documentation in the papers I published between 2016 and 2019
in Prof. Marisol Koslowski group in Purdue University.

Of course the original reference for the crystal plasticity model
by Chockalingam, Tonks et al. is also a good start:

Best Regards,
Nicolò Grilli

Cao DucToan

unread,
Oct 17, 2020, 9:59:23 PM10/17/20
to moose...@googlegroups.com
Dear Nicolò Grilli

I am really happy for your email. Thanks Nicolò Grilli. I appreciate your share.

Kind regards,

Toan D Cao
University of Alabama
Department of Mechanical Engineering

Cao DucToan

unread,
Oct 19, 2020, 10:18:17 AM10/19/20
to moose...@googlegroups.com
Dear Nicolò Grilli

I have a difficult problem with the crystalplasticity if I use an EBSD file of mesh. Could you please let me know how I can combine EBSD mesh and the crystalplasticity? I did a combination but unfortunately the program cannot work for the plasticity zone after elasticity zone. If you can help me with your advice, i really appreciate it.
I attached the input file here if you have a quick look for any help.

Kind regards,
Toan D Cao
University of Alabama
Department of Mechanical Engineering


 
On Sat, Oct 17, 2020 at 8:44 PM Nicolò Grilli <nicolog...@gmail.com> wrote:
input_slip_sys.txt
crysp_euler.i
IN100_120x120.txt

Wen Jiang

unread,
Oct 19, 2020, 10:25:25 AM10/19/20
to moose-users
EBSD reader only works for phase-field simulation at this time. The capability of reading EBSD, DREAD3D format to CP is still under development. 

Cao DucToan

unread,
Oct 19, 2020, 10:27:45 AM10/19/20
to moose...@googlegroups.com
Thanks Wen Jiang.

Kind regards,
Toan D Cao
University of Alabama
Department of Mechanical Engineering
 

Cao DucToan

unread,
Oct 19, 2020, 6:10:41 PM10/19/20
to moose...@googlegroups.com
Dear Wen Jiang and Nicolò Grilli

Could you please help me how I can calculate the plastic energy of CP in Moose ? I really need your experience.

Kind regards,

Toan D Cao
University of Alabama
Department of Mechanical Engineering
On Mon, Oct 19, 2020 at 9:25 AM Wen Jiang <jiang...@gmail.com> wrote:

Wen Jiang

unread,
Oct 19, 2020, 7:09:17 PM10/19/20
to moose-users
We do not have any existing object to compute the plastic energy. Could you let us know the expression for your plastic energy? It should not be hard for you to write new codes for that. 

Cao DucToan

unread,
Oct 19, 2020, 7:42:28 PM10/19/20
to moose...@googlegroups.com
Hi Wen Jiang

Thanks for your reply. I would like to get plastic work. The plastic energy = the plastic strain multiplies by elastic constant.

Kind regards,

Toan D Cao
University of Alabama
Department of Mechanical Engineering

Nicolò Grilli

unread,
Oct 21, 2020, 9:36:58 AM10/21/20
to moose-users
Dear Toan,

I suggest you look at the EBSD2Abaqus software:

It is based on the MTEX Matlab package.
You start from a .ctf EBSD file.
You can build a mesh in .inp format (Abaqus)
which is compatible with MOOSE.

I have used this program for Abaqus simulations,
so I am not sure it will work straight away for MOOSE, but it should.

Happy if you test it and let me know.

Best Regards,
Nicolò

Cao DucToan

unread,
Oct 21, 2020, 10:08:21 AM10/21/20
to moose...@googlegroups.com
Dear Nicolò

Thanks for your reply. Moose will work with EBSD file. Did you work to compute a stored plastic deformation energy of CP model in Mooose ? Because the stored plastic deformation energy is an important case for Alloy. 


If you know how I can add a subroutine to compute the stored plastic deformation energy in Moose, I would really appreciate it.

Kind regards,

Toan


Wen Jiang

unread,
Oct 21, 2020, 10:53:59 AM10/21/20
to moose-users
You can follow "ElasticEnergyAux" to write a code to compute plastic energy. 

Cao DucToan

unread,
Oct 21, 2020, 10:55:31 AM10/21/20
to moose...@googlegroups.com
Thanks Wen Jiang for this advice.

Kind regards,

Toan

Cao DucToan

unread,
Nov 5, 2020, 11:12:54 AM11/5/20
to moose...@googlegroups.com
Hi Wen Jiang and Nicolò Grilli

Thanks for your help during time. My work on the crystal plasticity model using Moose is working well. Now i have my question for coupling between the crystal plasticity and the phase field fracture model. Do you have experience to share  your advice with this work ? How can I do it with the current version of Moose ? If Moose doesn't support it, how can I develop it ? I really appreciate your time.

Kind regards,

Toan D Cao
University of Alabama
Department of Mechanical Engineering
On Wed, Oct 21, 2020 at 9:54 AM Wen Jiang <jiang...@gmail.com> wrote:

Nicolò Grilli

unread,
Nov 5, 2020, 11:35:48 AM11/5/20
to moose-users
Dear Toan,

I am not sure about the current version of moose, but coupling CP with phase field damage is relatively easy.
I am attaching an example input file that was used a couple of years ago.

The objects used are part of the repository "Marisol" in my github:

and you will see we made many different couplings and several models for phase field damage,
such as anisotropic crack propagation and fracture given by elastic and plastic energy.

Briefly, the phase field model wants as input the elastic strain energy,
or generally an energy that induces damage, which could be a combination of elastic and plastic.
Therefore, you may need to develop a kernel derived from the phase field fracture
that accepts energy quantities that are calculated in the crystal plasticity part
and declare them as material properties in the crystal plasticity part.
In the above repository you will find many examples of this,
but they correspond to a 2018 moose version, so be careful.

This paper:
and the other papers I published with Prof. Marisol Koslowski in Purdue University
contains the detailed equations of the coupling we did.

Best Regards,
Nicolò

RandomCrackLines.zip

Cao DucToan

unread,
Nov 5, 2020, 11:47:15 AM11/5/20
to moose...@googlegroups.com
Thank Nicolò Grilli for your information. That is very useful. I will be following your experience to develop a kernel for coupling between CP and PFF.

Kind regards,

Toan

--
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.

Cao DucToan

unread,
Nov 5, 2020, 5:05:47 PM11/5/20
to moose...@googlegroups.com
Dear Nicolò

Could you please share the input_slip_sys_HMX_austin.txt and the euler_ang_file_beamorientation0.txt ? I can test how your input file can work with the current moose.

Thank you very much to Nicolò for your help.

Kind regards,

Toan

--
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.

Cao DucToan

unread,
Nov 6, 2020, 9:12:08 AM11/6/20
to moose...@googlegroups.com
Dear Nicolò and Wen Jian

I got this error when I combined the CP model and the PFF model. Can you let me know what I can do for this error ?

*** ERROR ***
Material property 'L', requested by 'c_ACInterface' is not defined on block 0

Stack frames: 13
0: libMesh::print_trace(std::ostream&)
1: moose::internal::mooseErrorRaw(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
2: callMooseErrorRaw(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, MooseApp*)
3: SubProblem::checkBlockMatProps()
4: FEProblemBase::checkProblemIntegrity()
5: Action::timedAct()
6: ActionWarehouse::executeActionsWithAction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
7: ActionWarehouse::executeAllActions()
8: MooseApp::runInputFile()
9: MooseApp::run()
10: ./combined-opt(+0x51ec) [0x55c539f311ec]
11: __libc_start_main
12: ./combined-opt(+0x54bf) [0x55c539f314bf]
application called MPI_Abort(MPI_COMM_WORLD, 1) - process 0
[unset]: write_line error; fd=-1 buf=:cmd=abort exitcode=1
:
system msg for write_line failure : Bad file descriptor

kind regards,

Toan

Nicolò Grilli

unread,
Nov 7, 2020, 8:44:47 AM11/7/20
to moose-users
Dear Toan,

About the slip systems: you can just use the FCC example file that is in the moose tests.

When there is a missing material property, you should always check in the examples,
where the material property is defined, see for instance:

The missing material, called L, is:

  [./define_mobility]
    type = ParsedMaterial
    material_property_names = 'gc_prop visco'
    f_name = L
    function = '1.0/(gc_prop * visco)'
  [../]

The viscosity controls how fast the damage increases when the critical load is reached.
You can find the meaning of "visco", usually indicated by the eta greek letter in equation 13 of this:

Best Regards,
Nicolò Grilli
National University of Singapore

Cao DucToan

unread,
Nov 7, 2020, 9:47:58 AM11/7/20
to moose...@googlegroups.com
Dear Nicolò

Thanks for your help. I really appreciate it. Have a nice weekend.

Kind regards,

Toan D Cao
University of Alabama
Department of Mechanical Engineering

Cao DucToan

unread,
Nov 25, 2020, 3:47:45 PM11/25/20
to moose...@googlegroups.com
Dear Nicolò

I tried understanding the CP+PFF in your input file but ,unfortunately, I received this error. Do you have any ideas for help ?

*** ERROR ***
A 'PFFracBulkRatePlasticFactor' is not a registered object.

Kind regards,

Toan


Andrew Slaughter

unread,
Nov 25, 2020, 3:59:14 PM11/25/20
to moose...@googlegroups.com
Check spelling and make sure the phase field module is enabled in your Makefile. Also, be sure to recompile after changing the Makefile.

Cao DucToan

unread,
Nov 26, 2020, 4:56:38 PM11/26/20
to moose...@googlegroups.com
Dear Nicolò

I received this error. Do you have any ideas for help ? thank you very much in advance.

/projects/moose/modules/tensor_mechanics/src/materials/PFFracBulkRateMaterial.C:26:45: error: invalid conversion from 'const Function*' to 'Function*' [-fpermissive]
     _function_prop(isParamValid("function") ? &getFunction("function") : NULL)

The code is written as follows,

InputParameters validParams<PFFracBulkRateMaterial>()
{
  InputParameters params = validParams<Material>();
  params.addClassDescription("Material properties used in phase-field fracture damage evolution kernel");
  params.addParam<FunctionName>("function", "Function describing energy release rate type parameter distribution");
  params.addParam<Real>("gc", 1.0, "Energy release rate type parameter");

  return params;
}

PFFracBulkRateMaterial::PFFracBulkRateMaterial(const InputParameters & parameters) :
    Material(parameters),
    _gc(getParam<Real>("gc")),
    _gc_prop(declareProperty<Real>("gc_prop")),
    _function_prop(isParamValid("function")  &getFunction("function") : NULL)
{
}


Kind regards,

Toan

Nicolò Grilli

unread,
Nov 28, 2020, 9:58:02 PM11/28/20
to moose-users
Dear Toan,

not fully sure, but that may not be the way Moose currently handle functions.
I suggest you copy from ParsedMaterialBase:

In the constructor: .C file:

  // get function expression
  _function = parameters.get<std::string>("function");

  // Function expression
  params.addRequiredParam<std::string>("function",
                                       "FParser function expression for the phase free energy");

and in .h file:

  /// function expression
  std::string _function;

Try these expressions.

Also, you may consider defining your function inside a material object,
I mean write a material object that calculates your quantity and assign it to a MaterialProperty
that you can then use in the kernel.

You write functions of the coordinates by accessing the coordinates as:

// Get coordinates of the current IP

x = _q_point[_qp](0);

y = _q_point[_qp](1);
z = _q_point[_qp](2);

See for example this one:

Best Regards,
Nicolò Grilli
National University of Singapore

Cao DucToan

unread,
Nov 29, 2020, 8:48:00 AM11/29/20
to moose...@googlegroups.com
Dear Nicolò

Thank you very much for your help. I will try it .

Kind regards ,

Toan

Cao DucToan

unread,
Nov 30, 2020, 2:17:08 PM11/30/20
to moose...@googlegroups.com
Dear Nicolò

I did several steps following your suggestion. Unfortunately , it doesn't work.  I don't know what happened with this.

Thanks Nicolò. If you have any idea, please let me know.

Kind regards,

Toan

Reply all
Reply to author
Forward
0 new messages