Crystal Plasticity State Var Rate Component Voce

Phenomenological Voce constitutive model state variable evolution rate component base class.

Description

This UserObject is meant to be used within the user object base crystal plasticity framework as a Voce hardening rule.

(1)

with

(2)

where is the current critical resolved shear stress, is initial critical resolved shear stress, is the saturation resolved shear stress, is the matrix containing self and latent hardening coefficients; and are hardening parameters.

Like for the others crystal plasticity routines values of all the parameters can be specified by groups of slip systems.

This UseroOject assumes that slip systems are provided in a well defined order and are grouped by planes (see modules/tensor_mechanics/test/tests/cp_user_object/input_slip_sys_bcc48.txt for BCC crystals and modules/tensor_mechanics/test/tests/cp_user_object/input_slip_sys.txt for FCC)

Seven variables need to be specified and one value is required for each group:

  • groups in which groups of slip systems are listed

  • h0_group_values value for each slip system group

  • tau0_group_values value for each slip system group

  • tauSat_group_values = value for each slip system group

  • hardeningExponent_group_values value for each slip system group

  • selfHardening_group_values

  • coplanarHardening_group_values for co-planar slip systems in the same group

  • GroupGroup_Hardening_group_values This parameter requires NxN values with N being the number of groups. Values are listed as (e.g. ij=11,12,21,22) with being the actual group and the secondary group. For the value represents the latent hardening coefficient between one slip system and all the non co-planar ones belonging the the same group. For , the value represents the latent hardening coefficient between all the slip systems belonging to group and . Note that, usually, the matrix associated with GroupGroup_Hardening_group_values is symmetric.

Example Input File Syntax

[./state_var_evol_rate_comp_voce]
  type = CrystalPlasticityStateVarRateComponentVoce
  variable_size = 48
  crystal_lattice_type = 'BCC'
  groups = '0 12 24 48'
  h0_group_values = '1 2 3'
  tau0_group_values = '50 51 52'
  tauSat_group_values = '70 81 92'
  hardeningExponent_group_values = '1 2 3'
  selfHardening_group_values = '4 5 6'
  coplanarHardening_group_values = '7 8 9'
  GroupGroup_Hardening_group_values = '10 20 30
                                         40 50 60
                                         70 80 90'
  uo_slip_rate_name = slip_rate_gss
  uo_state_var_name = state_var_gss
[../]
(moose/modules/tensor_mechanics/test/tests/crystal_plasticity/user_object_based/user_object_Voce_BCC.i)

In this example illustrate a BCC in which slip systems have been grouped by slip system class.

Input Parameters

  • variable_sizeThe userobject's variable size.

    C++ Type:unsigned int

    Controllable:No

    Description:The userobject's variable size.

Required Parameters

  • GroupGroup_Hardening_group_valuesThe group-to-group latent hardening coefficient q_abThis is a NxN vector i.e. '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0' means non-coplanar slip systems in gr_11,22,33= 1.0, 5.0 and 9.0 respectively.latent hardening between for gr_12,13 = 2.0 3.0 respectively

    C++ Type:std::vector<double>

    Controllable:No

    Description:The group-to-group latent hardening coefficient q_abThis is a NxN vector i.e. '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0' means non-coplanar slip systems in gr_11,22,33= 1.0, 5.0 and 9.0 respectively.latent hardening between for gr_12,13 = 2.0 3.0 respectively

  • blockThe list of blocks (ids or names) that this object will be applied

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • coplanarHardening_group_valuesThe coplanar latent hardening coefficient q_abcorresponding to each group i.e. '1.0 2.0 3.0' means 0-11 = 1.0, 12-23 = 2.0 and 24-48 = 3.0

    C++ Type:std::vector<double>

    Controllable:No

    Description:The coplanar latent hardening coefficient q_abcorresponding to each group i.e. '1.0 2.0 3.0' means 0-11 = 1.0, 12-23 = 2.0 and 24-48 = 3.0

  • crystal_lattice_typeFCCType of crystal lattyce structure output

    Default:FCC

    C++ Type:MooseEnum

    Options:FCC, BCC

    Controllable:No

    Description:Type of crystal lattyce structure output

  • groupsTo group the initial values on different slip systems 'format: [start end)', i.e.'0 12 24 48' groups 0-11, 12-23 and 24-48

    C++ Type:std::vector<unsigned int>

    Controllable:No

    Description:To group the initial values on different slip systems 'format: [start end)', i.e.'0 12 24 48' groups 0-11, 12-23 and 24-48

  • h0_group_valuesh0 hardening constant for each group i.e. '0.0 1.0 2.0' means 0-11 = 0.0, 12-23 = 1.0 and 24-48 = 2.0

    C++ Type:std::vector<double>

    Controllable:No

    Description:h0 hardening constant for each group i.e. '0.0 1.0 2.0' means 0-11 = 0.0, 12-23 = 1.0 and 24-48 = 2.0

  • hardeningExponent_group_valuesThe hardening exponent mcorresponding to each group i.e. '1.0 2.0 3.0' means 0-11 = 1.0, 12-23 = 2.0 and 24-48 = 3.0

    C++ Type:std::vector<double>

    Controllable:No

    Description:The hardening exponent mcorresponding to each group i.e. '1.0 2.0 3.0' means 0-11 = 1.0, 12-23 = 2.0 and 24-48 = 3.0

  • prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

  • selfHardening_group_valuesThe self hardening coefficient q_aacorresponding to each group i.e. '1.0 2.0 3.0' means 0-11 = 1.0, 12-23 = 2.0 and 24-48 = 3.0 usually these are all 1.

    C++ Type:std::vector<double>

    Controllable:No

    Description:The self hardening coefficient q_aacorresponding to each group i.e. '1.0 2.0 3.0' means 0-11 = 1.0, 12-23 = 2.0 and 24-48 = 3.0 usually these are all 1.

  • tau0_group_valuesThe initial critical resolved shear stresscorresponding to each group i.e. '100.0 110.0 120.0' means 0-11 = 100.0, 12-23 = 110.0 and 24-48 = 120.0

    C++ Type:std::vector<double>

    Controllable:No

    Description:The initial critical resolved shear stresscorresponding to each group i.e. '100.0 110.0 120.0' means 0-11 = 100.0, 12-23 = 110.0 and 24-48 = 120.0

  • tauSat_group_valuesThe saturation resolved shear stresscorresponding to each group i.e. '150.0 170.0 180.0' means 0-11 = 150.0, 12-23 = 170.0 and 24-48 = 180.0

    C++ Type:std::vector<double>

    Controllable:No

    Description:The saturation resolved shear stresscorresponding to each group i.e. '150.0 170.0 180.0' means 0-11 = 150.0, 12-23 = 170.0 and 24-48 = 180.0

  • uo_slip_rate_nameName of slip rate property: Same as slip rate user object specified in input file.

    C++ Type:std::string

    Controllable:No

    Description:Name of slip rate property: Same as slip rate user object specified in input file.

  • uo_state_var_nameName of state variable property: Same as state variable user object specified in input file.

    C++ Type:std::string

    Controllable:No

    Description:Name of state variable property: Same as state variable user object specified in input file.

Optional Parameters

  • allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).

    Default:False

    C++ Type:bool

    Controllable:No

    Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

  • execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.

    Default:0

    C++ Type:int

    Controllable:No

    Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.

  • force_postauxFalseForces the UserObject to be executed in POSTAUX

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in POSTAUX

  • force_preauxFalseForces the UserObject to be executed in PREAUX

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in PREAUX

  • force_preicFalseForces the UserObject to be executed in PREIC during initial setup

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in PREIC during initial setup

  • implicitTrueDetermines whether this object is calculated using an implicit or explicit form

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Determines whether this object is calculated using an implicit or explicit form

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The seed for the master random number generator

  • use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Advanced Parameters