- coupled_variablesvariable dependencies for the prefactor
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:variable dependencies for the prefactor
- tensorsComponent tensors
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:Component tensors
- weightsComponent weights
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:Component weights
Composite Elasticity Tensor
Assemble an elasticity tensor from multiple tensor contributions weighted by material properties
Description
CompositeElasticityTensor
calculates a simple Rank-4 tensor that can be used as an Elasticity tensor in a mechanics simulation. This tensor is computed as a weighted sum of base elasticity tensors, as shown in Eq. (1), where each weight can be a scalar material property that may depend on simulation variables. Tcomposite=n∑wn⋅Tn(1) where T is a Rank-4 tensor and w is the weighting factor for each Rank-4 tensor.
Example Input File Syntax
[./C]
type = CompositeElasticityTensor
block = 0
args = c
tensors = 'Ca Cb'
weights = 'Fa Fb'
[../]
Input Parameters
- base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
C++ Type:std::string
Controllable:No
Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
- 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
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Options:NONE, ELEMENT, SUBDOMAIN
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
Optional Parameters
- 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.
- 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
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
- 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
Unit:(no unit assumed)
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.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
- (modules/solid_mechanics/test/tests/umat/predef/dpredef.i)
- (modules/solid_mechanics/test/tests/umat/predef/predef_multiple_mat.i)
- (modules/combined/examples/phase_field-mechanics/kks_mechanics_KHS.i)
- (modules/solid_mechanics/test/tests/umat/predef/predef_multiple.i)
- (modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep.i)
- (modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_onePhaseMulti.i)
- (modules/combined/test/tests/umat/gap_heat_transfer_umat.i)
- (modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_plasticity.i)
- (modules/solid_mechanics/test/tests/umat/predef/predef.i)
- (modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_single_material.i)
- (modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_small_strain.i)
- (modules/solid_mechanics/test/tests/elasticitytensor/composite.i)
- (modules/solid_mechanics/test/tests/umat/print/print_shear.i)
(modules/solid_mechanics/test/tests/elasticitytensor/composite.i)
# This input file is designed to test the RankTwoAux and RankFourAux
# auxkernels, which report values out of the Tensors used in materials
# properties.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
xmax = 1
[]
[AuxVariables]
[./c]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = x
[../]
[../]
[./C1111_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./C1122_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./C1133_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./C3313_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./dC1111_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./dC1122_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./dC1133_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./dC3313_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./d2C1111_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./d2C1122_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./d2C1133_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./d2C3313_aux]
order = CONSTANT
family = MONOMIAL
[../]
[]
#[Kernels]
# [./diff]
# type = Diffusion
# variable = diffused
# [../]
#[]
[AuxKernels]
[./matl_C1111]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 0
variable = C1111_aux
execute_on = initial
[../]
[./matl_C1122]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 1
index_l = 1
variable = C1122_aux
execute_on = initial
[../]
[./matl_C1133]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 2
index_l = 2
variable = C1133_aux
execute_on = initial
[../]
[./matl_C3313]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 0
index_l = 2
variable = C3313_aux
execute_on = initial
[../]
[./matl_dC1111]
type = RankFourAux
rank_four_tensor = delasticity_tensor/dc
index_i = 0
index_j = 0
index_k = 0
index_l = 0
variable = dC1111_aux
execute_on = initial
[../]
[./matl_dC1122]
type = RankFourAux
rank_four_tensor = delasticity_tensor/dc
index_i = 0
index_j = 0
index_k = 1
index_l = 1
variable = dC1122_aux
execute_on = initial
[../]
[./matl_dC1133]
type = RankFourAux
rank_four_tensor = delasticity_tensor/dc
index_i = 0
index_j = 0
index_k = 2
index_l = 2
variable = dC1133_aux
execute_on = initial
[../]
[./matl_dC3313]
type = RankFourAux
rank_four_tensor = delasticity_tensor/dc
index_i = 2
index_j = 2
index_k = 0
index_l = 2
variable = dC3313_aux
execute_on = initial
[../]
[./matl_d2C1111]
type = RankFourAux
rank_four_tensor = d^2elasticity_tensor/dc^2
index_i = 0
index_j = 0
index_k = 0
index_l = 0
variable = d2C1111_aux
execute_on = initial
[../]
[./matl_d2C1122]
type = RankFourAux
rank_four_tensor = d^2elasticity_tensor/dc^2
index_i = 0
index_j = 0
index_k = 1
index_l = 1
variable = d2C1122_aux
execute_on = initial
[../]
[./matl_d2C1133]
type = RankFourAux
rank_four_tensor = d^2elasticity_tensor/dc^2
index_i = 0
index_j = 0
index_k = 2
index_l = 2
variable = d2C1133_aux
execute_on = initial
[../]
[./matl_d2C3313]
type = RankFourAux
rank_four_tensor = d^2elasticity_tensor/dc^2
index_i = 2
index_j = 2
index_k = 0
index_l = 2
variable = d2C3313_aux
execute_on = initial
[../]
[]
[Materials]
[./Ca]
type = ComputeElasticityTensor
base_name = Ca
block = 0
fill_method = symmetric21
C_ijkl ='1111 .1122 1133 1123 1113 1112 2222 2233 2223 2213 2212 3333 3323 3313 3312 2323 2313 2312 1313 1312 1212'
[../]
[./Cb]
type = ComputeElasticityTensor
base_name = Cb
block = 0
fill_method = symmetric21
C_ijkl ='.1111 1122 .1133 .1123 .1113 .1112 .2222 .2233 .2223 .2213 .2212 .3333 .3323 .3313 .3312 .2323 .2313 .2312 .1313 .1312 .1212'
[../]
[./Fa]
type = DerivativeParsedMaterial
block = 0
property_name = Fa
expression = c^2
coupled_variables = c
[../]
[./Fb]
type = DerivativeParsedMaterial
block = 0
property_name = Fb
expression = (1-c)^3
coupled_variables = c
[../]
[./C]
type = CompositeElasticityTensor
block = 0
args = c
tensors = 'Ca Cb'
weights = 'Fa Fb'
[../]
[]
[Problem]
kernel_coverage_check = false
solve = false
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/umat/predef/dpredef.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t*10
[]
[]
[AuxVariables]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[Pressure]
[bc_presssure]
boundary = top
function = top_pull
[]
[]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.0
[]
[]
[Materials]
# 1. Active for UMAT run
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_dpredef'
num_state_vars = 0
external_fields = 'strain_yy'
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
base_name = 'base'
youngs_modulus = 1e3
poissons_ratio = 0.3
[]
[strain_dependent_elasticity_tensor]
type = CompositeElasticityTensor
args = strain_yy
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
property_name = prefactor_material
# 0.11112 is the strain_yy increment
expression = '1.0/(1.0 + 0.11112)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 10
dt = 10.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/umat/predef/predef_multiple_mat.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t*10
[]
[right_pull]
type = ParsedFunction
expression = -t*0.5
[]
[]
[AuxVariables]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[strain_xx]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[Pressure]
[bc_presssure_top]
boundary = top
function = top_pull
[]
[bc_presssure_right]
boundary = right
function = right_pull
[]
[]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[]
[Materials]
# 1. Active for UMAT
[strain_xx]
type = RankTwoCartesianComponent
property_name = strain_xx
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[]
[strain_yy]
type = RankTwoCartesianComponent
property_name = strain_yy
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[]
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_multiple_predef'
num_state_vars = 0
external_properties = 'strain_xx strain_yy'
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
base_name = 'base'
youngs_modulus = 1e3
poissons_ratio = 0.3
[]
[strain_dependent_elasticity_tensor]
type = CompositeElasticityTensor
args = 'strain_yy strain_xx'
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
property_name = prefactor_material
material_property_names = 'strain_yy strain_xx'
expression = '1.0/(1.0 + strain_yy + strain_xx)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 30
dt = 1.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/combined/examples/phase_field-mechanics/kks_mechanics_KHS.i)
# KKS phase-field model coupled with elasticity using Khachaturyan's scheme as
# described in L.K. Aagesen et al., Computational Materials Science, 140, 10-21 (2017)
# Original run #170403a
[Mesh]
type = GeneratedMesh
dim = 3
nx = 640
ny = 1
nz = 1
xmin = -10
xmax = 10
ymin = 0
ymax = 0.03125
zmin = 0
zmax = 0.03125
elem_type = HEX8
[]
[Variables]
# order parameter
[./eta]
order = FIRST
family = LAGRANGE
[../]
# solute concentration
[./c]
order = FIRST
family = LAGRANGE
[../]
# chemical potential
[./w]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (matrix)
[./cm]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (precipitate)
[./cp]
order = FIRST
family = LAGRANGE
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[ICs]
[./eta_ic]
variable = eta
type = FunctionIC
function = ic_func_eta
block = 0
[../]
[./c_ic]
variable = c
type = FunctionIC
function = ic_func_c
block = 0
[../]
[./w_ic]
variable = w
type = ConstantIC
value = 0.00991
block = 0
[../]
[./cm_ic]
variable = cm
type = ConstantIC
value = 0.131
block = 0
[../]
[./cp_ic]
variable = cp
type = ConstantIC
value = 0.236
block = 0
[../]
[]
[Functions]
[./ic_func_eta]
type = ParsedFunction
expression = '0.5*(1.0+tanh((x)/delta_eta/sqrt(2.0)))'
symbol_names = 'delta_eta'
symbol_values = '0.8034'
[../]
[./ic_func_c]
type = ParsedFunction
expression = '0.2389*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^3*(6*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^2-15*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))+10)+0.1339*(1-(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^3*(6*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^2-15*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))+10))'
symbol_names = 'delta'
symbol_values = '0.8034'
[../]
[./psi_eq_int]
type = ParsedFunction
expression = 'volume*psi_alpha'
symbol_names = 'volume psi_alpha'
symbol_values = 'volume psi_alpha'
[../]
[./gamma]
type = ParsedFunction
expression = '(psi_int - psi_eq_int) / dy / dz'
symbol_names = 'psi_int psi_eq_int dy dz'
symbol_values = 'psi_int psi_eq_int 0.03125 0.03125'
[../]
[]
[AuxVariables]
[./sigma11]
order = CONSTANT
family = MONOMIAL
[../]
[./sigma22]
order = CONSTANT
family = MONOMIAL
[../]
[./sigma33]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[./e12]
order = CONSTANT
family = MONOMIAL
[../]
[./e22]
order = CONSTANT
family = MONOMIAL
[../]
[./e33]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el11]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el12]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el22]
order = CONSTANT
family = MONOMIAL
[../]
[./f_el]
order = CONSTANT
family = MONOMIAL
[../]
[./eigen_strain00]
order = CONSTANT
family = MONOMIAL
[../]
[./Fglobal]
order = CONSTANT
family = MONOMIAL
[../]
[./psi]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./matl_sigma11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = sigma11
[../]
[./matl_sigma22]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = sigma22
[../]
[./matl_sigma33]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = sigma33
[../]
[./matl_e11]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 0
variable = e11
[../]
[./f_el]
type = MaterialRealAux
variable = f_el
property = f_el_mat
execute_on = timestep_end
[../]
[./GlobalFreeEnergy]
variable = Fglobal
type = KKSGlobalFreeEnergy
fa_name = fm
fb_name = fp
w = 0.0264
kappa_names = kappa
interfacial_vars = eta
[../]
[./psi_potential]
variable = psi
type = ParsedAux
coupled_variables = 'Fglobal w c f_el sigma11 e11'
expression = 'Fglobal - w*c + f_el - sigma11*e11'
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = right
value = 0
[../]
[./front_y]
type = DirichletBC
variable = disp_y
boundary = front
value = 0
[../]
[./back_y]
type = DirichletBC
variable = disp_y
boundary = back
value = 0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0
[../]
[]
[Materials]
# Chemical free energy of the matrix
[./fm]
type = DerivativeParsedMaterial
property_name = fm
coupled_variables = 'cm'
expression = '6.55*(cm-0.13)^2'
[../]
# Chemical Free energy of the precipitate phase
[./fp]
type = DerivativeParsedMaterial
property_name = fp
coupled_variables = 'cp'
expression = '6.55*(cp-0.235)^2'
[../]
# Elastic energy of the precipitate
[./elastic_free_energy_p]
type = ElasticEnergyMaterial
f_name = f_el_mat
args = 'eta'
outputs = exodus
[../]
# h(eta)
[./h_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta
[../]
# 1- h(eta), putting in function explicitly
[./one_minus_h_eta_explicit]
type = DerivativeParsedMaterial
property_name = one_minus_h_explicit
coupled_variables = eta
expression = 1-eta^3*(6*eta^2-15*eta+10)
outputs = exodus
[../]
# g(eta)
[./g_eta]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta
[../]
# constant properties
[./constants]
type = GenericConstantMaterial
prop_names = 'M L kappa misfit'
prop_values = '0.7 0.7 0.01704 0.00377'
[../]
#Mechanical properties
[./Stiffness_matrix]
type = ComputeElasticityTensor
base_name = C_matrix
C_ijkl = '103.3 74.25 74.25 103.3 74.25 103.3 46.75 46.75 46.75'
fill_method = symmetric9
[../]
[./Stiffness_ppt]
type = ComputeElasticityTensor
C_ijkl = '100.7 71.45 71.45 100.7 71.45 100.7 50.10 50.10 50.10'
base_name = C_ppt
fill_method = symmetric9
[../]
[./C]
type = CompositeElasticityTensor
args = eta
tensors = 'C_matrix C_ppt'
weights = 'one_minus_h_explicit h'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigenstrain_ppt'
[../]
[./eigen_strain]
type = ComputeVariableEigenstrain
eigen_base = '0.00377 0.00377 0.00377 0 0 0'
prefactor = h
args = eta
eigenstrain_name = 'eigenstrain_ppt'
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
# enforce c = (1-h(eta))*cm + h(eta)*cp
[./PhaseConc]
type = KKSPhaseConcentration
ca = cm
variable = cp
c = c
eta = eta
[../]
# enforce pointwise equality of chemical potentials
[./ChemPotVacancies]
type = KKSPhaseChemicalPotential
variable = cm
cb = cp
fa_name = fm
fb_name = fp
[../]
#
# Cahn-Hilliard Equation
#
[./CHBulk]
type = KKSSplitCHCRes
variable = c
ca = cm
fa_name = fm
w = w
[../]
[./dcdt]
type = CoupledTimeDerivative
variable = w
v = c
[../]
[./ckernel]
type = SplitCHWRes
mob_name = M
variable = w
[../]
#
# Allen-Cahn Equation
#
[./ACBulkF]
type = KKSACBulkF
variable = eta
fa_name = fm
fb_name = fp
w = 0.0264
args = 'cp cm'
[../]
[./ACBulkC]
type = KKSACBulkC
variable = eta
ca = cm
cb = cp
fa_name = fm
[../]
[./ACBulk_el] #This adds df_el/deta for strain interpolation
type = AllenCahn
variable = eta
f_name = f_el_mat
[../]
[./ACInterface]
type = ACInterface
variable = eta
kappa_name = kappa
[../]
[./detadt]
type = TimeDerivative
variable = eta
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm ilu nonzero'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 1.0e-11
num_steps = 200
[./TimeStepper]
type = SolutionTimeAdaptiveDT
dt = 0.5
[../]
[]
[Postprocessors]
[./f_el_int]
type = ElementIntegralMaterialProperty
mat_prop = f_el_mat
[../]
[./c_alpha]
type = SideAverageValue
boundary = left
variable = c
[../]
[./c_beta]
type = SideAverageValue
boundary = right
variable = c
[../]
[./e11_alpha]
type = SideAverageValue
boundary = left
variable = e11
[../]
[./e11_beta]
type = SideAverageValue
boundary = right
variable = e11
[../]
[./s11_alpha]
type = SideAverageValue
boundary = left
variable = sigma11
[../]
[./s22_alpha]
type = SideAverageValue
boundary = left
variable = sigma22
[../]
[./s33_alpha]
type = SideAverageValue
boundary = left
variable = sigma33
[../]
[./s11_beta]
type = SideAverageValue
boundary = right
variable = sigma11
[../]
[./s22_beta]
type = SideAverageValue
boundary = right
variable = sigma22
[../]
[./s33_beta]
type = SideAverageValue
boundary = right
variable = sigma33
[../]
[./f_el_alpha]
type = SideAverageValue
boundary = left
variable = f_el
[../]
[./f_el_beta]
type = SideAverageValue
boundary = right
variable = f_el
[../]
[./f_c_alpha]
type = SideAverageValue
boundary = left
variable = Fglobal
[../]
[./f_c_beta]
type = SideAverageValue
boundary = right
variable = Fglobal
[../]
[./chem_pot_alpha]
type = SideAverageValue
boundary = left
variable = w
[../]
[./chem_pot_beta]
type = SideAverageValue
boundary = right
variable = w
[../]
[./psi_alpha]
type = SideAverageValue
boundary = left
variable = psi
[../]
[./psi_beta]
type = SideAverageValue
boundary = right
variable = psi
[../]
[./total_energy]
type = ElementIntegralVariablePostprocessor
variable = Fglobal
[../]
# Get simulation cell size from postprocessor
[./volume]
type = ElementIntegralMaterialProperty
mat_prop = 1
[../]
[./psi_eq_int]
type = FunctionValuePostprocessor
function = psi_eq_int
[../]
[./psi_int]
type = ElementIntegralVariablePostprocessor
variable = psi
[../]
[./gamma]
type = FunctionValuePostprocessor
function = gamma
[../]
[./int_position]
type = FindValueOnLine
start_point = '-10 0 0'
end_point = '10 0 0'
v = eta
target = 0.5
[../]
[]
#
# Precondition using handcoded off-diagonal terms
#
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Outputs]
[./exodus]
type = Exodus
time_step_interval = 20
[../]
checkpoint = true
[./csv]
type = CSV
execute_on = 'final'
[../]
[]
(modules/solid_mechanics/test/tests/umat/predef/predef_multiple.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t*10
[]
[right_pull]
type = ParsedFunction
expression = -t*0.5
[]
[]
[AuxVariables]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[strain_xx]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[Pressure]
[bc_presssure_top]
boundary = top
function = top_pull
[]
[bc_presssure_right]
boundary = right
function = right_pull
[]
[]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[]
[Materials]
# 1. Active for UMAT
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_multiple_predef'
num_state_vars = 0
external_fields = 'strain_xx strain_yy'
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
base_name = 'base'
youngs_modulus = 1e3
poissons_ratio = 0.3
[]
[strain_dependent_elasticity_tensor]
type = CompositeElasticityTensor
args = 'strain_yy strain_xx'
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
property_name = prefactor_material
coupled_variables = 'strain_yy strain_xx'
expression = '1.0/(1.0 + strain_yy + strain_xx)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 30
dt = 1.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep.i)
# 1x1x1 unit cube with uniform pressure on top face and 2 phases with different materials
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 6
zmax = 1
xmax = 1
ymax = 1
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[ICs]
[phase1IC]
type = BoundingBoxIC
x1 = -1
x2 = 1.5
y1 = -1
y2 = 1.5
z1 = -1
z2 = 1.0
inside = 1
outside = 0
variable = phase1
int_width=0.01
[]
[phase2IC]
type = BoundingBoxIC
x1 = -1
x2 = 1.5
y1 = -1
y2 = 1.5
z1 = -1
z2 = 1.0
inside = 0
outside = 1
variable = phase2
int_width=0.01
[]
[]
[AuxVariables]
[phase1]
[]
[phase2]
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
[]
[]
[Functions]
[top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Kernels]
[heat]
type = Diffusion
variable = temp
[]
[heat_ie]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[u_top_pull]
type = Pressure
variable = disp_y
boundary = top
factor = -10.0e6
function = top_pull
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[u_yz_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[u_xy_fix]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[temp_fix]
type = DirichletBC
variable = temp
boundary = 'bottom top'
value = 1000.0
[]
[]
[Materials]
[elasticity_tensor1]
type = ComputeIsotropicElasticityTensor
base_name = C1
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[elasticity_tensor2]
type = ComputeIsotropicElasticityTensor
base_name = C2
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[h1]
type = ParsedMaterial
property_name = h1
coupled_variables = phase1
expression = '0.5*tanh(20*(phase1-0.5))+0.5'
[]
[h2]
type = ParsedMaterial
property_name = h2
coupled_variables = phase2
expression = '0.5*tanh(20*(phase2-0.5))+0.5'
[]
[./C]
type = CompositeElasticityTensor
coupled_variables = 'phase1 phase2'
tensors = 'C1 C2'
weights = 'h1 h2'
[../]
[radial_return_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'power_law_creep'
tangent_operator = elastic
[]
[power_law_creep]
type = CompositePowerLawCreepStressUpdate
coefficient = '1.0e-15 2.0e-18'
n_exponent = '4 5'
activation_energy = '3.0e5 3.5e5'
switching_functions = 'h1 h2'
temperature = temp
[]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_y disp_z creep_strain_xx creep_strain_yy creep_strain_zz'
start_point = '0 0 0.0'
end_point = '1.0 1.0 1.0'
num_points = 5
outputs = tests
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 20
nl_max_its = 20
nl_rel_tol = 1.0e-9
nl_abs_tol = 1.0e-9
l_tol = 1e-10
start_time = 0.0
end_time = 1.0
num_steps = 10
dt = 0.1
[]
[Outputs]
exodus = false
[./tests]
type = CSV
execute_on = final
[../]
[]
(modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_onePhaseMulti.i)
# 1x1x1 unit cube with uniform pressure on top face and 2 phases with different materials
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 6
zmax = 1
xmax = 1
ymax = 1
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[ICs]
[phase1IC]
type = BoundingBoxIC
x1 = -1
x2 = 1.5
y1 = -1
y2 = 1.5
z1 = -1
z2 = 1.0
inside = 1
outside = 0
variable = phase1
int_width=0.01
[]
[phase2IC]
type = BoundingBoxIC
x1 = -1
x2 = 1.5
y1 = -1
y2 = 1.5
z1 = -1
z2 = 1.0
inside = 0
outside = 1
variable = phase2
int_width=0.01
[]
[]
[AuxVariables]
[phase1]
[]
[phase2]
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
[]
[]
[Functions]
[top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Kernels]
[heat]
type = Diffusion
variable = temp
[]
[heat_ie]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[u_top_pull]
type = Pressure
variable = disp_y
boundary = top
factor = -10.0e6
function = top_pull
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[u_yz_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[u_xy_fix]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[temp_fix]
type = DirichletBC
variable = temp
boundary = 'bottom top'
value = 1000.0
[]
[]
[Materials]
[elasticity_tensor1]
type = ComputeIsotropicElasticityTensor
base_name = C1
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[elasticity_tensor2]
type = ComputeIsotropicElasticityTensor
base_name = C2
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[h1]
type = ParsedMaterial
property_name = h1
coupled_variables = phase1
expression = '0.5*tanh(20*(phase1-0.5))+0.5'
[]
[h2]
type = ParsedMaterial
property_name = h2
coupled_variables = phase2
expression = '0.5*tanh(20*(phase2-0.5))+0.5'
[]
[./C]
type = CompositeElasticityTensor
coupled_variables = 'phase1 phase2'
tensors = 'C1 C2'
weights = 'h1 h2'
[../]
[radial_return_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'power_law_creep plas'
tangent_operator = elastic
[]
[power_law_creep]
type = CompositePowerLawCreepStressUpdate
coefficient = '1e-15 5e-20'
n_exponent = '4 5'
activation_energy = '3.0e5 3.5e5'
switching_functions = 'h1 h1'
temperature = temp
[]
[./plas]
type = IsotropicPlasticityStressUpdate
hardening_constant = 1
yield_stress = 1e30
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_y disp_z creep_strain_xx creep_strain_yy creep_strain_zz'
start_point = '0 0 0.0'
end_point = '1.0 1.0 1.0'
num_points = 5
outputs = tests
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 20
nl_max_its = 20
nl_rel_tol = 1.0e-10
nl_abs_tol = 1.0e-10
l_tol = 1e-10
start_time = 0.0
end_time = 1.0
num_steps = 10
dt = 0.1
[]
[Outputs]
exodus = false
[./tests]
type = CSV
execute_on = final
[../]
[]
(modules/combined/test/tests/umat/gap_heat_transfer_umat.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
temperature = temp
[]
[Mesh]
file = gap_heat_transfer_mesh.e
[]
[Functions]
[disp]
type = PiecewiseLinear
x = '0 2.0'
y = '0 1.0'
[]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '273 2000'
[]
[pressure_function]
type = PiecewiseLinear
x = '0 1'
y = '0 200'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temp]
initial_condition = 273
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 2
secondary = 3
emissivity_primary = 0
emissivity_secondary = 0
[]
[]
[Physics/SolidMechanics/QuasiStatic/All]
volumetric_locking_correction = true
strain = FINITE
generate_output = 'strain_yy stress_yy'
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
[move_right]
type = FunctionDirichletBC
boundary = '3'
variable = disp_x
function = disp
[]
[fixed_x]
type = DirichletBC
boundary = '1'
variable = disp_x
value = 0
[]
[fixed_y]
type = DirichletBC
boundary = '1 2 4'
variable = disp_y
value = 0
[]
[fixed_z]
type = DirichletBC
boundary = '1 2 3 4'
variable = disp_z
value = 0
[]
[temp_bottom]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[]
[temp_top]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[]
[Pressure]
[example]
boundary = 3
function = pressure_function
[]
[]
[]
[Materials]
# 1. Active for umat calculation
[umat]
type = AbaqusUMATStress
constant_properties = '1.0e6 0.3'
plugin = '../../../../solid_mechanics/test/plugins/elastic_temperature'
num_state_vars = 0
temperature = temp
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2'
base_name = 'base'
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[temp_dependent_elasticity_tensor]
type = CompositeElasticityTensor
block = '1 2'
args = temp
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
block = '1 2'
property_name = prefactor_material
coupled_variables = temp
expression = '273/(temp)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[]
[heat]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1.0
[]
[density]
type = Density
block = '1 2'
density = 1.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
dt = 0.1
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_plasticity.i)
# 1x1x1 unit cube with uniform pressure on top face and 2 phases with different materials
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 6
zmax = 1
xmax = 1
ymax = 1
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[ICs]
[phase1IC]
type = BoundingBoxIC
x1 = -1
x2 = 1.5
y1 = -1
y2 = 1.5
z1 = -1
z2 = 1.0
inside = 1
outside = 0
variable = phase1
int_width=0.01
[]
[phase2IC]
type = BoundingBoxIC
x1 = -1
x2 = 1.5
y1 = -1
y2 = 1.5
z1 = -1
z2 = 1.0
inside = 0
outside = 1
variable = phase2
int_width=0.01
[]
[]
[AuxVariables]
[phase1]
[]
[phase2]
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
[]
[]
[Functions]
[top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Kernels]
[heat]
type = Diffusion
variable = temp
[]
[heat_ie]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[u_top_pull]
type = Pressure
variable = disp_y
boundary = top
factor = -10.0e6
function = top_pull
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[u_yz_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[u_xy_fix]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[temp_fix]
type = DirichletBC
variable = temp
boundary = 'bottom top'
value = 1000.0
[]
[]
[Materials]
[elasticity_tensor1]
type = ComputeIsotropicElasticityTensor
base_name = C1
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[elasticity_tensor2]
type = ComputeIsotropicElasticityTensor
base_name = C2
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[h1]
type = ParsedMaterial
property_name = h1
coupled_variables = phase1
expression = '0.5*tanh(20*(phase1-0.5))+0.5'
[]
[h2]
type = ParsedMaterial
property_name = h2
coupled_variables = phase2
expression = '0.5*tanh(20*(phase2-0.5))+0.5'
[]
[./C]
type = CompositeElasticityTensor
coupled_variables = 'phase1 phase2'
tensors = 'C1 C2'
weights = 'h1 h2'
[../]
[radial_return_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'power_law_creep plas'
tangent_operator = elastic
[]
[power_law_creep]
type = CompositePowerLawCreepStressUpdate
coefficient = '1.0e-15 2.0e-18'
n_exponent = '4 5'
activation_energy = '3.0e5 3.5e5'
switching_functions = 'h1 h2'
temperature = temp
[]
[./plas]
type = IsotropicPlasticityStressUpdate
hardening_constant = 1
yield_stress = 1e30
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_y disp_z creep_strain_xx creep_strain_yy creep_strain_zz'
start_point = '0 0 0.0'
end_point = '1.0 1.0 1.0'
num_points = 5
outputs = tests
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 20
nl_max_its = 20
nl_rel_tol = 1.0e-9
nl_abs_tol = 1.0e-9
l_tol = 1e-10
start_time = 0.0
end_time = 1.0
num_steps = 10
dt = 0.1
[]
[Outputs]
exodus = false
[./tests]
type = CSV
execute_on = final
[../]
[]
(modules/solid_mechanics/test/tests/umat/predef/predef.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t*10
[]
[]
[AuxVariables]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[Pressure]
[bc_presssure]
boundary = top
function = top_pull
[]
[]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.0
[]
[]
[Materials]
# Active for
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_predef'
num_state_vars = 0
external_fields = 'strain_yy'
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
base_name = 'base'
youngs_modulus = 1e3
poissons_ratio = 0.3
[]
[strain_dependent_elasticity_tensor]
type = CompositeElasticityTensor
args = strain_yy
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
property_name = prefactor_material
coupled_variables = strain_yy
expression = '1.0/(1.0 + strain_yy)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 30
dt = 1.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_single_material.i)
# 1x1x1 unit cube with uniform pressure on top face and 2 phases but the same material
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 6
zmax = 1
xmax = 1
ymax = 1
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[ICs]
[phase1IC]
type = BoundingBoxIC
x1 = -1
x2 = 1.5
y1 = -1
y2 = 1.5
z1 = -1
z2 = 1.0
inside = 1
outside = 0
variable = phase1
int_width=0.01
[]
[phase2IC]
type = BoundingBoxIC
x1 = -1
x2 = 1.5
y1 = -1
y2 = 1.5
z1 = -1
z2 = 1.0
inside = 0
outside = 1
variable = phase2
int_width=0.01
[]
[]
[AuxVariables]
[phase1]
[]
[phase2]
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
[]
[]
[Functions]
[top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Kernels]
[heat]
type = Diffusion
variable = temp
[]
[heat_ie]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[u_top_pull]
type = Pressure
variable = disp_y
boundary = top
factor = -10.0e6
function = top_pull
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[u_yz_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[u_xy_fix]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[temp_fix]
type = DirichletBC
variable = temp
boundary = 'bottom top'
value = 1000.0
[]
[]
[Materials]
[elasticity_tensor1]
type = ComputeIsotropicElasticityTensor
base_name = C1
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[elasticity_tensor2]
type = ComputeIsotropicElasticityTensor
base_name = C2
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[h1]
type = ParsedMaterial
property_name = h1
coupled_variables = phase1
expression = '0.5*tanh(20*(phase1-0.5))+0.5'
[]
[h2]
type = ParsedMaterial
property_name = h2
coupled_variables = phase2
expression = '0.5*tanh(20*(phase2-0.5))+0.5'
[]
[./C]
type = CompositeElasticityTensor
coupled_variables = 'phase1 phase2'
tensors = 'C1 C2'
weights = 'h1 h2'
[../]
[radial_return_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'power_law_creep'
tangent_operator = elastic
[]
[power_law_creep]
type = CompositePowerLawCreepStressUpdate
coefficient = '1.0e-15 1.0e-15'
n_exponent = '4 4'
activation_energy = '3.0e5 3.0e5'
switching_functions = 'h1 h2'
temperature = temp
[]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_y disp_z creep_strain_xx creep_strain_yy creep_strain_zz'
start_point = '0 0 0.0'
end_point = '1.0 1.0 1.0'
num_points = 5
outputs = tests
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 20
nl_max_its = 20
nl_rel_tol = 1.0e-9
nl_abs_tol = 1.0e-9
l_tol = 1e-10
start_time = 0.0
end_time = 1.0
num_steps = 10
dt = 0.1
[]
[Outputs]
exodus = false
[./tests]
type = CSV
execute_on = final
[../]
[]
(modules/solid_mechanics/test/tests/power_law_creep/composite_power_law_creep_small_strain.i)
# 1x1x1 unit cube with uniform pressure on top face and 2 phases with different materials
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 6
zmax = 1
xmax = 1
ymax = 1
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[ICs]
[phase1IC]
type = BoundingBoxIC
x1 = -1
x2 = 1.5
y1 = -1
y2 = 1.5
z1 = -1
z2 = 1.0
inside = 1
outside = 0
variable = phase1
int_width=0.01
[]
[phase2IC]
type = BoundingBoxIC
x1 = -1
x2 = 1.5
y1 = -1
y2 = 1.5
z1 = -1
z2 = 1.0
inside = 0
outside = 1
variable = phase2
int_width=0.01
[]
[]
[AuxVariables]
[phase1]
[]
[phase2]
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = SMALL
incremental = true
add_variables = true
generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
[]
[]
[Functions]
[top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Kernels]
[heat]
type = Diffusion
variable = temp
[]
[heat_ie]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[u_top_pull]
type = Pressure
variable = disp_y
boundary = top
factor = -10.0e6
function = top_pull
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[u_yz_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[u_xy_fix]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[temp_fix]
type = DirichletBC
variable = temp
boundary = 'bottom top'
value = 1000.0
[]
[]
[Materials]
[elasticity_tensor1]
type = ComputeIsotropicElasticityTensor
base_name = C1
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[elasticity_tensor2]
type = ComputeIsotropicElasticityTensor
base_name = C2
youngs_modulus = 2e11
poissons_ratio = 0.3
[]
[h1]
type = ParsedMaterial
property_name = h1
coupled_variables = phase1
expression = '0.5*tanh(20*(phase1-0.5))+0.5'
[]
[h2]
type = ParsedMaterial
property_name = h2
coupled_variables = phase2
expression = '0.5*tanh(20*(phase2-0.5))+0.5'
[]
[./C]
type = CompositeElasticityTensor
coupled_variables = 'phase1 phase2'
tensors = 'C1 C2'
weights = 'h1 h2'
[../]
[radial_return_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'power_law_creep'
tangent_operator = elastic
[]
[power_law_creep]
type = CompositePowerLawCreepStressUpdate
coefficient = '1.0e-15 2.0e-18'
n_exponent = '4 5'
activation_energy = '3.0e5 3.5e5'
switching_functions = 'h1 h2'
temperature = temp
[]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_y disp_z creep_strain_xx creep_strain_yy creep_strain_zz'
start_point = '0 0 0.0'
end_point = '1.0 1.0 1.0'
num_points = 5
outputs = tests
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 20
nl_max_its = 20
nl_rel_tol = 1.0e-9
nl_abs_tol = 1.0e-9
l_tol = 1e-10
start_time = 0.0
end_time = 1.0
num_steps = 10
dt = 0.1
[]
[Outputs]
exodus = false
[./tests]
type = CSV
execute_on = final
[../]
[]
(modules/solid_mechanics/test/tests/elasticitytensor/composite.i)
# This input file is designed to test the RankTwoAux and RankFourAux
# auxkernels, which report values out of the Tensors used in materials
# properties.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
xmax = 1
[]
[AuxVariables]
[./c]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = x
[../]
[../]
[./C1111_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./C1122_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./C1133_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./C3313_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./dC1111_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./dC1122_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./dC1133_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./dC3313_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./d2C1111_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./d2C1122_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./d2C1133_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./d2C3313_aux]
order = CONSTANT
family = MONOMIAL
[../]
[]
#[Kernels]
# [./diff]
# type = Diffusion
# variable = diffused
# [../]
#[]
[AuxKernels]
[./matl_C1111]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 0
variable = C1111_aux
execute_on = initial
[../]
[./matl_C1122]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 1
index_l = 1
variable = C1122_aux
execute_on = initial
[../]
[./matl_C1133]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 2
index_l = 2
variable = C1133_aux
execute_on = initial
[../]
[./matl_C3313]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 0
index_l = 2
variable = C3313_aux
execute_on = initial
[../]
[./matl_dC1111]
type = RankFourAux
rank_four_tensor = delasticity_tensor/dc
index_i = 0
index_j = 0
index_k = 0
index_l = 0
variable = dC1111_aux
execute_on = initial
[../]
[./matl_dC1122]
type = RankFourAux
rank_four_tensor = delasticity_tensor/dc
index_i = 0
index_j = 0
index_k = 1
index_l = 1
variable = dC1122_aux
execute_on = initial
[../]
[./matl_dC1133]
type = RankFourAux
rank_four_tensor = delasticity_tensor/dc
index_i = 0
index_j = 0
index_k = 2
index_l = 2
variable = dC1133_aux
execute_on = initial
[../]
[./matl_dC3313]
type = RankFourAux
rank_four_tensor = delasticity_tensor/dc
index_i = 2
index_j = 2
index_k = 0
index_l = 2
variable = dC3313_aux
execute_on = initial
[../]
[./matl_d2C1111]
type = RankFourAux
rank_four_tensor = d^2elasticity_tensor/dc^2
index_i = 0
index_j = 0
index_k = 0
index_l = 0
variable = d2C1111_aux
execute_on = initial
[../]
[./matl_d2C1122]
type = RankFourAux
rank_four_tensor = d^2elasticity_tensor/dc^2
index_i = 0
index_j = 0
index_k = 1
index_l = 1
variable = d2C1122_aux
execute_on = initial
[../]
[./matl_d2C1133]
type = RankFourAux
rank_four_tensor = d^2elasticity_tensor/dc^2
index_i = 0
index_j = 0
index_k = 2
index_l = 2
variable = d2C1133_aux
execute_on = initial
[../]
[./matl_d2C3313]
type = RankFourAux
rank_four_tensor = d^2elasticity_tensor/dc^2
index_i = 2
index_j = 2
index_k = 0
index_l = 2
variable = d2C3313_aux
execute_on = initial
[../]
[]
[Materials]
[./Ca]
type = ComputeElasticityTensor
base_name = Ca
block = 0
fill_method = symmetric21
C_ijkl ='1111 .1122 1133 1123 1113 1112 2222 2233 2223 2213 2212 3333 3323 3313 3312 2323 2313 2312 1313 1312 1212'
[../]
[./Cb]
type = ComputeElasticityTensor
base_name = Cb
block = 0
fill_method = symmetric21
C_ijkl ='.1111 1122 .1133 .1123 .1113 .1112 .2222 .2233 .2223 .2213 .2212 .3333 .3323 .3313 .3312 .2323 .2313 .2312 .1313 .1312 .1212'
[../]
[./Fa]
type = DerivativeParsedMaterial
block = 0
property_name = Fa
expression = c^2
coupled_variables = c
[../]
[./Fb]
type = DerivativeParsedMaterial
block = 0
property_name = Fb
expression = (1-c)^3
coupled_variables = c
[../]
[./C]
type = CompositeElasticityTensor
block = 0
args = c
tensors = 'Ca Cb'
weights = 'Fa Fb'
[../]
[]
[Problem]
kernel_coverage_check = false
solve = false
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/umat/print/print_shear.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t/1000
[]
[]
[AuxVariables]
[strain_xy]
family = MONOMIAL
order = SECOND
[]
[strain_yy]
family = MONOMIAL
order = SECOND
[]
[]
[AuxKernels]
[strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 1
index_j = 0
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[]
[NodalKernels]
[force_x]
type = ConstantRate
variable = disp_x
boundary = top
rate = 1.0e0
[]
[]
[Materials]
# 1. Active for UMAT verification
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_print_multiple_fields'
num_state_vars = 0
external_fields = 'strain_yy strain_xy'
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
base_name = 'base'
youngs_modulus = 1e3
poissons_ratio = 0.3
[]
[strain_dependent_elasticity_tensor]
type = CompositeElasticityTensor
args = 'strain_yy strain_xy'
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
property_name = prefactor_material
coupled_variables = 'strain_yy strain_xy'
expression = '1.0/(1.0 + strain_yy + strain_xy)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 10
dt = 10.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]