- blockThe list of block ids (SubdomainID) that this object will be applied
C++ Type:std::vector
Description:The list of block ids (SubdomainID) that this object will be applied
- elements_changedMaximum number of elements within which the property named in 'elements_changed_property' is allowed to change by more than 'elements_changed_threshold' before the time step is limited.
C++ Type:int
Description:Maximum number of elements within which the property named in 'elements_changed_property' is allowed to change by more than 'elements_changed_threshold' before the time step is limited.
- elements_changed_propertyName of the material property used to limit the time step if its value changes by more than 'elements_changed_threshold' in at least 'elements_changed' elements
C++ Type:MaterialPropertyName
Description:Name of the material property used to limit the time step if its value changes by more than 'elements_changed_threshold' in at least 'elements_changed' elements
- elements_changed_thresholdMaximum permitted change in the value of 'elements_changed_property' in 'elements_changed' elements before the time step is limited.
C++ Type:double
Description:Maximum permitted change in the value of 'elements_changed_property' in 'elements_changed' elements before the time step is limited.
- execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Description:The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM.
- use_material_timestep_limitTrueif true, the time step is limited by the minimum value of the matl_timestep_limit property
Default:True
C++ Type:bool
Description:if true, the time step is limited by the minimum value of the matl_timestep_limit property
Material Time Step Postprocessor
This postprocessor estimates a timestep that reduces the increment change in a material property below a given threshold.
Description
The MaterialTimeStepPostprocessor
works in conjunction with material models to compute the appropriate maximum time step allowed by individual material models. For creep or plasticity models, this maximum time step size is governed by an allowable inelastic strain increment, but a variety of methods could be used by individual material models to compute their acceptable time step. For continuum damage models, the maximum time step size is governed by the allowable increment of damage over a single time step.
Creep Strain Example
The maximum time step size is a numerical tool used to ensure the calculation of physically reasonable inelastic strains and to improve convergence of the inelastic material model. As an example, the maximum allowable time step computation for a creep model has the form (1) where is the maximum effective inelastic strain increment (a default value of 1e-4), set by the user, and is the current scalar effective inelastic strain increment.
Mesh-Wide Evaluation
The MaterialTimeStepPostprocessor
collects the time step limitations from all of the quadrature points in the simulation mesh and stores the minimum value. This minimum allowable time step size value is then used by the IterationAdaptiveDT to restrict the time step size based on the limit calculated in the previous time step.
Note that the IterationAdaptiveDT will apply the limiting time step size value from the MaterialTimeStepPostprocessor
only if that value is less than maximum time step size value calculated by the internal IterationAdaptiveDT adaptive time step size algorithm.
The value of the maximum allowable time step as collected by the MaterialTimeStepPostprocessor
is enforced in the next simulation time step.
Minimum Time Step Calculated in Material Models
The calculation of the maximum allowable timestep is dependent on each individual material: both the maximum allowable inelastic strain increment and the method of calculating the current inelastic strain, Eq. (1), are defined separately for each material. Given this material dependent nature, the maximum time step value is calculated separately by the RadialReturnStressUpdate materials at each quadrature point. The MaterialTimeStepPostprocessor
then determines the minimum time step size value from all of the quadrature points in the simulation.
Initially the value of the maximum time step size is set to std::numeric_limits<Real>::max()
. Once the inelastic material model begins to calculate inelastic strain, the value of the allowable time step size varies with the inelastic strain computation.
The limiting time step size is stored within a material property called matl_timestep_limit
. This material property can be set up either by the ComputeMultipleInelasticStress model (for creep or plastic strains) or the ComputeDamageStress for continuum damage models.
Minimum Time Step Size Based on Number of Elements in which a Property Changes
The allowable time step size can also be controlled by the total number of elements in which a material property changes over the course of the time step. This can be used in the context of continuum damage to limit the number of elements damaged at a single time step. To do so, the user needs to define a scalar material property with the input parameter elements_changed_property
as well as the maximum acceptable number of elements changed using the elements_changed
input parameter. When these are defined, the MaterialTimeStepPostprocessor
will sweep over the entire mesh and count the number of elements in which the selected property has changed at at least one quadrature point. The limiting time step is then calculated using the ratio between the current number of elements changed and the maximum value .
(2)
The user can define a elements_changed_threshold
to detect a change in property. This can be for example used to count the number of elements in which the damage increases by at least a specific amount.
This method is optional and is only active if both elements_changed_property
and elements_changed
are defined. The MaterialTimeStepPostprocessor
then uses the minimum between the value provided by the material model (see above) or by the number of elements changed. If the input parameter use_material_timestep_limit
is set to false
, only the number of elements changed is used.
Example Input File
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
(modules/tensor_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i)/opt/civet/build_0/moose/modules/tensor_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i
#
# Tests material model IsotropicPlasticity with material based time stepper
# Boundary conditions from NAFEMS test NL1
#
[GlobalParams]
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]#Comment
file = one_elem2.e
[] # Mesh
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[] # Variables
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_eff]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
[../]
[./plastic_strain_eff]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_yy
index_i = 1
index_j = 1
[../]
[] # AuxKernels
[Functions]
[./appl_dispx]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 0.0 0.0'
[../]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.0 0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 '
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = appl_dispx
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
[../]
[./strain]
type = ComputePlaneFiniteStrain
block = 1
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'isoplas'
block = 1
[../]
[./isoplas]
type = IsotropicPlasticityStressUpdate
yield_stress = 5e6
hardening_constant = 0.0
relative_tolerance = 1e-20
absolute_tolerance = 1e-8
max_inelastic_increment = 0.000001
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-4
l_max_its = 100
nl_max_its = 20
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
time_t = '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
time_dt = '0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
start_time = 0.0
num_steps = 1000
end_time = 8.0
[] # Executioner
[Postprocessors]
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./plas_strain_eff]
type = ElementAverageValue
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
csv = true
[./console]
type = Console
output_linear = true
[../]
[] # Outputs
The name of the MaterialTimeStepPostprocessor
is passed to the IterationAdaptiveDT
as the argument for the timestep_limiting_postprocessor
parameter
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
time_t = '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
time_dt = '0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
(modules/tensor_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i)/opt/civet/build_0/moose/modules/tensor_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i
#
# Tests material model IsotropicPlasticity with material based time stepper
# Boundary conditions from NAFEMS test NL1
#
[GlobalParams]
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]#Comment
file = one_elem2.e
[] # Mesh
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[] # Variables
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_eff]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
[../]
[./plastic_strain_eff]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_yy
index_i = 1
index_j = 1
[../]
[] # AuxKernels
[Functions]
[./appl_dispx]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 0.0 0.0'
[../]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.0 0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 '
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = appl_dispx
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
[../]
[./strain]
type = ComputePlaneFiniteStrain
block = 1
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'isoplas'
block = 1
[../]
[./isoplas]
type = IsotropicPlasticityStressUpdate
yield_stress = 5e6
hardening_constant = 0.0
relative_tolerance = 1e-20
absolute_tolerance = 1e-8
max_inelastic_increment = 0.000001
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-4
l_max_its = 100
nl_max_its = 20
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
time_t = '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
time_dt = '0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
start_time = 0.0
num_steps = 1000
end_time = 8.0
[] # Executioner
[Postprocessors]
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./plas_strain_eff]
type = ElementAverageValue
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
csv = true
[./console]
type = Console
output_linear = true
[../]
[] # Outputs
and the max_inelastic_increment
parameter in the inelastic material model(s) must be set to run the time step limit calculation.
[./isoplas]
type = IsotropicPlasticityStressUpdate
yield_stress = 5e6
hardening_constant = 0.0
relative_tolerance = 1e-20
absolute_tolerance = 1e-8
max_inelastic_increment = 0.000001
[../]
(modules/tensor_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i)/opt/civet/build_0/moose/modules/tensor_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i
#
# Tests material model IsotropicPlasticity with material based time stepper
# Boundary conditions from NAFEMS test NL1
#
[GlobalParams]
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]#Comment
file = one_elem2.e
[] # Mesh
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[] # Variables
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_eff]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
[../]
[./plastic_strain_eff]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_yy
index_i = 1
index_j = 1
[../]
[] # AuxKernels
[Functions]
[./appl_dispx]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 0.0 0.0'
[../]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.0 0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 '
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = appl_dispx
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
[../]
[./strain]
type = ComputePlaneFiniteStrain
block = 1
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'isoplas'
block = 1
[../]
[./isoplas]
type = IsotropicPlasticityStressUpdate
yield_stress = 5e6
hardening_constant = 0.0
relative_tolerance = 1e-20
absolute_tolerance = 1e-8
max_inelastic_increment = 0.000001
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-4
l_max_its = 100
nl_max_its = 20
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
time_t = '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
time_dt = '0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
start_time = 0.0
num_steps = 1000
end_time = 8.0
[] # Executioner
[Postprocessors]
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./plas_strain_eff]
type = ElementAverageValue
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
csv = true
[./console]
type = Console
output_linear = true
[../]
[] # Outputs
Input 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
Options:
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
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
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
Options:
Description:Determines whether this object is calculated using an implicit or explicit form
- outputsVector of output names were you would like to restrict the output of variables(s) associated with this object
C++ Type:std::vector
Options:
Description:Vector of output names were you would like to restrict the output of variables(s) associated with this object
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Options:
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
Options:
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
Input Files
- modules/solid_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim_no_comb.i
- modules/solid_mechanics/test/tests/material_limit_time_step/creep/nafems_test5a_lim_no_comb.i
- modules/solid_mechanics/test/tests/material_limit_time_step/creep/nafems_test5a_lim.i
- modules/tensor_mechanics/test/tests/material_limit_time_step/damage/scalar_material_damage_timestep_limit.i
- modules/tensor_mechanics/test/tests/material_limit_time_step/creep/nafems_test5a_lim.i
- modules/tensor_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i
- modules/solid_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i
- modules/tensor_mechanics/test/tests/material_limit_time_step/damage/elements_changed_timestep_limit.i
- modules/tensor_mechanics/test/tests/material_limit_time_step/mult_inelastic/no_inelastic_model_timestep_limit.i
modules/solid_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim_no_comb.i
#
# Tests material model IsotropicPlasticity with material based time stepper
# Boundary conditions from NAFEMS test NL1
#
[GlobalParams]
disp_x = disp_x
disp_y = disp_y
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
[]
[Mesh]#Comment
file = one_elem2.e
displacements = 'disp_x disp_y'
[] # Mesh
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[] # Variables
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_eff]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[SolidMechanics]
[./solid]
[../]
[]
[AuxKernels]
[./stress_xx]
type = MaterialTensorAux
tensor = stress
variable = stress_xx
index = 0
[../]
[./stress_yy]
type = MaterialTensorAux
tensor = stress
variable = stress_yy
index = 1
[../]
[./stress_zz]
type = MaterialTensorAux
tensor = stress
variable = stress_zz
index = 2
[../]
[./stress_xy]
type = MaterialTensorAux
tensor = stress
variable = stress_xy
index = 3
[../]
[./vonmises]
type = MaterialTensorAux
tensor = stress
variable = vonmises
quantity = vonmises
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = MaterialTensorAux
tensor = elastic_strain
variable = elastic_strain_yy
index = 1
[../]
[./plastic_strain_eff]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = MaterialTensorAux
tensor = total_strain
variable = tot_strain_yy
index = 1
[../]
[] # AuxKernels
[Functions]
[./appl_dispx]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 0.0 0.0'
[../]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.0 0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 '
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = appl_dispx
[../]
[] # BCs
[Materials]
[./stiffStuff1]
type = SolidModel
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
constitutive_model = isoplas
formulation = NonlinearPlaneStrain
large_strain = true
[../]
[./isoplas]
type = IsotropicPlasticity
block = 1
yield_stress = 5e6
hardening_constant = 0.0
relative_tolerance = 1e-20
absolute_tolerance = 1e-8
max_inelastic_increment = 0.000001
compute_material_timestep_limit = true
[../]
[] # Materials
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-4
l_max_its = 100
nl_max_its = 20
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
time_t = '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
time_dt = '0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
start_time = 0.0
num_steps = 1000
end_time = 8.0
[] # Executioner
[Postprocessors]
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./plas_strain_eff]
type = ElementAverageValue
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
csv = true
[./console]
type = Console
output_linear = true
[../]
[] # Outputs
modules/solid_mechanics/test/tests/material_limit_time_step/creep/nafems_test5a_lim_no_comb.i
[GlobalParams]
disp_x = disp_x
disp_y = disp_y
temp = temp
order = FIRST
family = LAGRANGE
[]
[Mesh]
file = plane1_mesh.e
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./temp]
initial_condition = 1500.0
[../]
[./creep]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
order = CONSTANT
family = MONOMIAL
[../]
[./invariant3]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[SolidMechanics]
[./solid]
[../]
[]
[AuxKernels]
[./creep_aux]
type = MaterialRealAux
property = effective_creep_strain
variable = creep
[../]
[./stress_xx]
type = MaterialTensorAux
tensor = stress
variable = stress_xx
index = 0
[../]
[./stress_yy]
type = MaterialTensorAux
tensor = stress
variable = stress_yy
index = 1
[../]
[./stress_zz]
type = MaterialTensorAux
tensor = stress
variable = stress_zz
index = 2
[../]
[./vonmises]
type = MaterialTensorAux
tensor = stress
variable = vonmises
quantity = vonmises
[../]
[./pressure]
type = MaterialTensorAux
tensor = stress
variable = pressure
quantity = hydrostatic
[../]
[./invariant3]
type = MaterialTensorAux
tensor = stress
variable = invariant3
quantity = thirdInvariant
[../]
[./creep_strain_xx]
type = MaterialTensorAux
tensor = creep_strain
variable = creep_strain_xx
index = 0
[../]
[./creep_strain_yy]
type = MaterialTensorAux
tensor = creep_strain
variable = creep_strain_yy
index = 1
[../]
[./creep_strain_zz]
type = MaterialTensorAux
tensor = creep_strain
variable = creep_strain_zz
index = 2
[../]
[./creep_strain_xy]
type = MaterialTensorAux
tensor = creep_strain
variable = creep_strain_xy
index = 3
[../]
[./elastic_str_xx_aux]
type = MaterialTensorAux
tensor = elastic_strain
variable = elastic_strain_xx
index = 0
[../]
[./elastic_str_yy_aux]
type = MaterialTensorAux
tensor = elastic_strain
variable = elastic_strain_yy
index = 1
[../]
[./elastic_str_zz_aux]
type = MaterialTensorAux
tensor = elastic_strain
variable = elastic_strain_zz
index = 2
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 3
component = 1
factor = -100.0
[../]
[./side_press]
type = Pressure
variable = disp_x
boundary = 4
component = 0
factor = -200.0
[../]
[]
[Materials]
[./stiffStuff1]
type = SolidModel
block = 1
youngs_modulus = 200e3
poissons_ratio = 0.3
constitutive_model = creep_matl
formulation = NonlinearPlaneStrain
large_strain = true
[../]
[./creep_matl]
type = PowerLawCreepModel
block = 1
coefficient = 3.125e-14
n_exponent = 5
activation_energy = 0
max_inelastic_increment = 0.01
compute_material_timestep_limit = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
l_max_its = 50
nl_max_its = 100
end_time = 1000.0
num_steps = 10000
l_tol = 1e-3
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1e-6
time_t = '1e-6 2e-6 3e-6 5e-6 9e-6 1.7e-5 3.3e-5 6.5e-5 1.29e-4 2.57e-4 5.13e-4 1.025e-3 2.049e-3 4.097e-3 8.193e-3 1.638e-2 3.276e-2 5.734e-2 0.106 0.180 0.291 0.457 0.706 1.08 1.64 2.48 3.74 5.63 8.46 12.7 19.1 28.7 43.0 64.5 108.0 194.0 366.0 710.0 1000.0'
time_dt = '1e-6 1e-6 2e-6 4e-6 8e-6 1.6e-5 3.2e-5 6.4e-5 1.28e-4 2.56e-4 5.12e-4 1.024e-3 2.048e-3 4.096e-3 8.192e-3 1.6384e-2 2.458e-2 4.915e-2 7.40e-2 0.111 0.166 0.249 0.374 0.560 0.840 1.26 1.89 2.83 4.25 6.40 9.6 14.3 21.5 43.0 86.1 172.0 344.0 290.0 290.0'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
[]
[Postprocessors]
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
[./sigma_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./pressure]
type = ElementAverageValue
variable = pressure
[../]
[./invariant3]
type = ElementAverageValue
variable = invariant3
[../]
[./eps_crp_xx]
type = ElementAverageValue
variable = creep_strain_xx
[../]
[./eps_crp_yy]
type = ElementAverageValue
variable = creep_strain_yy
[../]
[./eps_crp_zz]
type = ElementAverageValue
variable = creep_strain_zz
[../]
[./eps_crp_mag]
type = ElementAverageValue
variable = creep
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x3]
type = NodalVariableValue
nodeid = 2
variable = disp_x
[../]
[./disp_y3]
type = NodalVariableValue
nodeid = 2
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./elas_str_xx]
type = ElementAverageValue
variable = elastic_strain_xx
[../]
[./elas_str_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./elas_str_zz]
type = ElementAverageValue
variable = elastic_strain_zz
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
csv = true
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 25
[../]
[]
modules/solid_mechanics/test/tests/material_limit_time_step/creep/nafems_test5a_lim.i
[GlobalParams]
disp_x = disp_x
disp_y = disp_y
temp = temp
order = FIRST
family = LAGRANGE
[]
[Mesh]
file = plane1_mesh.e
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./temp]
initial_condition = 1500.0
[../]
[./creep]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
order = CONSTANT
family = MONOMIAL
[../]
[./invariant3]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[SolidMechanics]
[./solid]
[../]
[]
[AuxKernels]
[./creep_aux]
type = MaterialRealAux
property = effective_creep_strain
variable = creep
[../]
[./stress_xx]
type = MaterialTensorAux
tensor = stress
variable = stress_xx
index = 0
[../]
[./stress_yy]
type = MaterialTensorAux
tensor = stress
variable = stress_yy
index = 1
[../]
[./stress_zz]
type = MaterialTensorAux
tensor = stress
variable = stress_zz
index = 2
[../]
[./vonmises]
type = MaterialTensorAux
tensor = stress
variable = vonmises
quantity = vonmises
[../]
[./pressure]
type = MaterialTensorAux
tensor = stress
variable = pressure
quantity = hydrostatic
[../]
[./invariant3]
type = MaterialTensorAux
tensor = stress
variable = invariant3
quantity = thirdInvariant
[../]
[./creep_strain_xx]
type = MaterialTensorAux
tensor = creep_strain
variable = creep_strain_xx
index = 0
[../]
[./creep_strain_yy]
type = MaterialTensorAux
tensor = creep_strain
variable = creep_strain_yy
index = 1
[../]
[./creep_strain_zz]
type = MaterialTensorAux
tensor = creep_strain
variable = creep_strain_zz
index = 2
[../]
[./creep_strain_xy]
type = MaterialTensorAux
tensor = creep_strain
variable = creep_strain_xy
index = 3
[../]
[./elastic_str_xx_aux]
type = MaterialTensorAux
tensor = elastic_strain
variable = elastic_strain_xx
index = 0
[../]
[./elastic_str_yy_aux]
type = MaterialTensorAux
tensor = elastic_strain
variable = elastic_strain_yy
index = 1
[../]
[./elastic_str_zz_aux]
type = MaterialTensorAux
tensor = elastic_strain
variable = elastic_strain_zz
index = 2
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 3
component = 1
factor = -100.0
[../]
[./side_press]
type = Pressure
variable = disp_x
boundary = 4
component = 0
factor = -200.0
[../]
[]
[Materials]
[./stiffStuff1]
type = SolidModel
block = 1
youngs_modulus = 200e3
poissons_ratio = 0.3
constitutive_model = combined
formulation = NonlinearPlaneStrain
large_strain = true
[../]
[./combined]
type = CombinedCreepPlasticity
block = 1
submodels = 'creep_matl'
[../]
[./creep_matl]
type = PowerLawCreepModel
block = 1
coefficient = 3.125e-14
n_exponent = 5
activation_energy = 0
max_inelastic_increment = 0.01
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
l_max_its = 50
nl_max_its = 100
end_time = 1000.0
num_steps = 10000
l_tol = 1e-3
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1e-6
time_t = '1e-6 2e-6 3e-6 5e-6 9e-6 1.7e-5 3.3e-5 6.5e-5 1.29e-4 2.57e-4 5.13e-4 1.025e-3 2.049e-3 4.097e-3 8.193e-3 1.638e-2 3.276e-2 5.734e-2 0.106 0.180 0.291 0.457 0.706 1.08 1.64 2.48 3.74 5.63 8.46 12.7 19.1 28.7 43.0 64.5 108.0 194.0 366.0 710.0 1000.0'
time_dt = '1e-6 1e-6 2e-6 4e-6 8e-6 1.6e-5 3.2e-5 6.4e-5 1.28e-4 2.56e-4 5.12e-4 1.024e-3 2.048e-3 4.096e-3 8.192e-3 1.6384e-2 2.458e-2 4.915e-2 7.40e-2 0.111 0.166 0.249 0.374 0.560 0.840 1.26 1.89 2.83 4.25 6.40 9.6 14.3 21.5 43.0 86.1 172.0 344.0 290.0 290.0'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
[]
[Postprocessors]
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
[./sigma_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./pressure]
type = ElementAverageValue
variable = pressure
[../]
[./invariant3]
type = ElementAverageValue
variable = invariant3
[../]
[./eps_crp_xx]
type = ElementAverageValue
variable = creep_strain_xx
[../]
[./eps_crp_yy]
type = ElementAverageValue
variable = creep_strain_yy
[../]
[./eps_crp_zz]
type = ElementAverageValue
variable = creep_strain_zz
[../]
[./eps_crp_mag]
type = ElementAverageValue
variable = creep
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x3]
type = NodalVariableValue
nodeid = 2
variable = disp_x
[../]
[./disp_y3]
type = NodalVariableValue
nodeid = 2
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./elas_str_xx]
type = ElementAverageValue
variable = elastic_strain_xx
[../]
[./elas_str_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./elas_str_zz]
type = ElementAverageValue
variable = elastic_strain_zz
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
csv = true
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 25
[../]
[]
modules/tensor_mechanics/test/tests/material_limit_time_step/damage/scalar_material_damage_timestep_limit.i
# This is a basic test of the system for continuum damage mechanics
# materials. It uses ScalarMaterialDamage for the damage model,
# which simply gets its damage index from another material. In this
# case, we prescribe the evolution of the damage index using a
# function. A single element has a fixed prescribed displacement
# on one side that puts the element in tension, and then the
# damage index evolves from 0 to 1 over time, and this verifies
# that the stress correspondingly drops to 0.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
[]
[AuxVariables]
[damage_index]
order = CONSTANT
family = MONOMIAL
[]
[]
[Modules/TensorMechanics/Master]
[all]
strain = SMALL
incremental = true
add_variables = true
generate_output = 'stress_xx strain_xx'
[]
[]
[AuxKernels]
[damage_index]
type = MaterialRealAux
variable = damage_index
property = damage_index_prop
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[axial_load]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.01
[]
[]
[Functions]
[damage_evolution]
type = PiecewiseLinear
xy_data = '0.0 0.0
0.1 0.0
2.1 2.0'
[]
[]
[Materials]
[damage_index]
type = GenericFunctionMaterial
prop_names = damage_index_prop
prop_values = damage_evolution
[]
[damage]
type = ScalarMaterialDamage
damage_index = damage_index_prop
[]
[stress]
type = ComputeDamageStress
damage_model = damage
[]
[elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.2
youngs_modulus = 10e9
[]
[]
[Postprocessors]
[stress_xx]
type = ElementAverageValue
variable = stress_xx
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[damage_index]
type = ElementAverageValue
variable = damage_index
[]
[time_step_limit]
type = MaterialTimeStepPostprocessor
[]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-8
nl_max_its = 20
nl_rel_tol = 1e-12
nl_abs_tol = 1e-8
dt = 0.1
dtmin = 0.001
end_time = 1.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = time_step_limit
[]
[]
[Outputs]
csv=true
[]
modules/tensor_mechanics/test/tests/material_limit_time_step/creep/nafems_test5a_lim.i
[GlobalParams]
temperature = temp
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane1_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./temp]
initial_condition = 1500.0
[../]
[./creep]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
order = CONSTANT
family = MONOMIAL
[../]
[./invariant3]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./creep_aux]
type = MaterialRealAux
property = effective_creep_strain
variable = creep
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
[../]
[./pressure]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = pressure
scalar_type = Hydrostatic
[../]
[./invariant3]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = invariant3
scalar_type = ThirdInvariant
[../]
[./creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[../]
[./creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[../]
[./creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
[../]
[./creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[../]
[./elastic_str_xx_aux]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_xx
index_i = 0
index_j = 0
[../]
[./elastic_str_yy_aux]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
[../]
[./elastic_str_zz_aux]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_zz
index_i = 2
index_j = 2
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 3
component = 1
factor = -100.0
[../]
[./side_press]
type = Pressure
variable = disp_x
boundary = 4
component = 0
factor = -200.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 200e3
poissons_ratio = 0.3
[../]
[./strain]
type = ComputePlaneFiniteStrain
block = 1
[../]
[./radial_return_stress]
type = ComputeMultipleInelasticStress
block = 1
inelastic_models = 'powerlawcrp'
[../]
[./powerlawcrp]
type = PowerLawCreepStressUpdate
block = 1
coefficient = 3.125e-14
n_exponent = 5.0
m_exponent = 0.0
activation_energy = 0.0
max_inelastic_increment = 0.01
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 50
nl_max_its = 100
end_time = 1000.0
num_steps = 10000
l_tol = 1e-3
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1e-6
time_t = '1e-6 2e-6 3e-6 5e-6 9e-6 1.7e-5 3.3e-5 6.5e-5 1.29e-4 2.57e-4 5.13e-4 1.025e-3 2.049e-3 4.097e-3 8.193e-3 1.638e-2 3.276e-2 5.734e-2 0.106 0.180 0.291 0.457 0.706 1.08 1.64 2.48 3.74 5.63 8.46 12.7 19.1 28.7 43.0 64.5 108.0 194.0 366.0 710.0 1000.0'
time_dt = '1e-6 1e-6 2e-6 4e-6 8e-6 1.6e-5 3.2e-5 6.4e-5 1.28e-4 2.56e-4 5.12e-4 1.024e-3 2.048e-3 4.096e-3 8.192e-3 1.6384e-2 2.458e-2 4.915e-2 7.40e-2 0.111 0.166 0.249 0.374 0.560 0.840 1.26 1.89 2.83 4.25 6.40 9.6 14.3 21.5 43.0 86.1 172.0 344.0 290.0 290.0'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
[]
[Postprocessors]
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
[./sigma_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./pressure]
type = ElementAverageValue
variable = pressure
[../]
[./invariant3]
type = ElementAverageValue
variable = invariant3
[../]
[./eps_crp_xx]
type = ElementAverageValue
variable = creep_strain_xx
[../]
[./eps_crp_yy]
type = ElementAverageValue
variable = creep_strain_yy
[../]
[./eps_crp_zz]
type = ElementAverageValue
variable = creep_strain_zz
[../]
[./eps_crp_mag]
type = ElementAverageValue
variable = creep
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x3]
type = NodalVariableValue
nodeid = 2
variable = disp_x
[../]
[./disp_y3]
type = NodalVariableValue
nodeid = 2
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./elas_str_xx]
type = ElementAverageValue
variable = elastic_strain_xx
[../]
[./elas_str_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./elas_str_zz]
type = ElementAverageValue
variable = elastic_strain_zz
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
csv = true
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 25
[../]
[]
modules/tensor_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i
#
# Tests material model IsotropicPlasticity with material based time stepper
# Boundary conditions from NAFEMS test NL1
#
[GlobalParams]
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]#Comment
file = one_elem2.e
[] # Mesh
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[] # Variables
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_eff]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
[../]
[./plastic_strain_eff]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_yy
index_i = 1
index_j = 1
[../]
[] # AuxKernels
[Functions]
[./appl_dispx]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 0.0 0.0'
[../]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.0 0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 '
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = appl_dispx
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
[../]
[./strain]
type = ComputePlaneFiniteStrain
block = 1
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'isoplas'
block = 1
[../]
[./isoplas]
type = IsotropicPlasticityStressUpdate
yield_stress = 5e6
hardening_constant = 0.0
relative_tolerance = 1e-20
absolute_tolerance = 1e-8
max_inelastic_increment = 0.000001
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-4
l_max_its = 100
nl_max_its = 20
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
time_t = '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
time_dt = '0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
start_time = 0.0
num_steps = 1000
end_time = 8.0
[] # Executioner
[Postprocessors]
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./plas_strain_eff]
type = ElementAverageValue
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
csv = true
[./console]
type = Console
output_linear = true
[../]
[] # Outputs
modules/solid_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i
#
# Tests material model IsotropicPlasticity with material based time stepper
# Boundary conditions from NAFEMS test NL1
#
[GlobalParams]
disp_x = disp_x
disp_y = disp_y
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
[]
[Mesh]#Comment
file = one_elem2.e
displacements = 'disp_x disp_y'
[] # Mesh
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[] # Variables
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_eff]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[SolidMechanics]
[./solid]
[../]
[]
[AuxKernels]
[./stress_xx]
type = MaterialTensorAux
tensor = stress
variable = stress_xx
index = 0
[../]
[./stress_yy]
type = MaterialTensorAux
tensor = stress
variable = stress_yy
index = 1
[../]
[./stress_zz]
type = MaterialTensorAux
tensor = stress
variable = stress_zz
index = 2
[../]
[./stress_xy]
type = MaterialTensorAux
tensor = stress
variable = stress_xy
index = 3
[../]
[./vonmises]
type = MaterialTensorAux
tensor = stress
variable = vonmises
quantity = vonmises
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = MaterialTensorAux
tensor = elastic_strain
variable = elastic_strain_yy
index = 1
[../]
[./plastic_strain_eff]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = MaterialTensorAux
tensor = total_strain
variable = tot_strain_yy
index = 1
[../]
[] # AuxKernels
[Functions]
[./appl_dispx]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 0.0 0.0'
[../]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.0 0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 '
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = appl_dispx
[../]
[] # BCs
[Materials]
[./stiffStuff1]
type = SolidModel
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
constitutive_model = combined
formulation = NonlinearPlaneStrain
large_strain = true
[../]
[./combined]
type = CombinedCreepPlasticity
block = 1
submodels = 'isoplas'
absolute_tolerance = 1e-8
[../]
[./isoplas]
type = IsotropicPlasticity
block = 1
yield_stress = 5e6
hardening_constant = 0.0
relative_tolerance = 1e-20
absolute_tolerance = 1e-8
max_inelastic_increment = 0.000001
[../]
[] # Materials
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-4
l_max_its = 100
nl_max_its = 20
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
time_t = '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
time_dt = '0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
start_time = 0.0
num_steps = 1000
end_time = 8.0
[] # Executioner
[Postprocessors]
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./plas_strain_eff]
type = ElementAverageValue
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
csv = true
[./console]
type = Console
output_linear = true
[../]
[] # Outputs
modules/tensor_mechanics/test/tests/material_limit_time_step/damage/elements_changed_timestep_limit.i
# This is a basic test of the system for continuum damage mechanics
# materials. It uses ScalarMaterialDamage for the damage model,
# which simply gets its damage index from another material. In this
# case, we prescribe the evolution of the damage index using a
# function. A single element has a fixed prescribed displacement
# on one side that puts the element in tension, and then the
# damage index evolves from 0 to 1 over time, and this verifies
# that the stress correspondingly drops to 0.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 1
nz = 1
elem_type = HEX8
[]
[AuxVariables]
[damage_index]
order = CONSTANT
family = MONOMIAL
[]
[]
[Modules/TensorMechanics/Master]
[all]
strain = SMALL
incremental = true
add_variables = true
generate_output = 'stress_xx strain_xx'
[]
[]
[AuxKernels]
[damage_index]
type = MaterialRealAux
variable = damage_index
property = damage_index_prop
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[axial_load]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.01
[]
[]
[Functions]
[damage_evolution]
type = ParsedFunction
value = 'min(1.0, max(0.0, t - x * 3.0))'
[]
[]
[Materials]
[damage_index]
type = GenericFunctionMaterial
prop_names = damage_index_prop
prop_values = damage_evolution
[]
[damage]
type = ScalarMaterialDamage
damage_index = damage_index_prop
use_old_damage = true
maximum_damage_increment = 0.5
[]
[stress]
type = ComputeDamageStress
damage_model = damage
[]
[elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.2
youngs_modulus = 10e9
[]
[]
[Postprocessors]
[stress_xx]
type = ElementAverageValue
variable = stress_xx
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[damage_index]
type = ElementAverageValue
variable = damage_index
[]
[time_step_limit]
type = MaterialTimeStepPostprocessor
use_material_timestep_limit = false
elements_changed_property = damage_index_prop
elements_changed = 4
[]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-8
nl_max_its = 20
nl_rel_tol = 1e-12
nl_abs_tol = 1e-6
dtmin = 0.001
end_time = 4.0
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.2
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = time_step_limit
[]
[]
[Outputs]
exodus = true
csv=true
[]
modules/tensor_mechanics/test/tests/material_limit_time_step/mult_inelastic/no_inelastic_model_timestep_limit.i
# This is a basic test of the material time step computed by the
# ComputeMultipleInelasticStress model. If no inelastic models
# are defined, the material time step should be the maximum
# value representable by a real number.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
[]
[AuxVariables]
[damage_index]
order = CONSTANT
family = MONOMIAL
[]
[]
[Modules/TensorMechanics/Master]
[all]
strain = SMALL
incremental = true
add_variables = true
generate_output = 'stress_xx strain_xx'
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[axial_load]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.01
[]
[]
[Materials]
[stress]
type = ComputeMultipleInelasticStress
inelastic_models = ''
[]
[elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.2
youngs_modulus = 10e9
[]
[]
[Postprocessors]
[stress_xx]
type = ElementAverageValue
variable = stress_xx
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[time_step_limit]
type = MaterialTimeStepPostprocessor
[]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-8
nl_max_its = 20
nl_rel_tol = 1e-12
nl_abs_tol = 1e-8
dt = 0.1
dtmin = 0.001
end_time = 1.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = time_step_limit
[]
[]
[Outputs]
csv=true
[]