- acceptable_iterations0Iterations after which convergence to acceptable limits is accepted
Default:0
C++ Type:int
Controllable:No
Description:Iterations after which convergence to acceptable limits is accepted
- acceptable_multiplier1Multiplier applied to relative tolerance for acceptable limit
Default:1
C++ Type:double
Controllable:No
Description:Multiplier applied to relative tolerance for acceptable limit
- converge_onIf supplied, use only these variables in the individual variable convergence check
C++ Type:std::vector<NonlinearVariableName>
Controllable:No
Description:If supplied, use only these variables in the individual variable convergence check
- group_variablesName of variables that are grouped together to check convergence. (Multiple groups can be provided, separated by semicolon)
C++ Type:std::vector<std::vector<NonlinearVariableName>>
Controllable:No
Description:Name of variables that are grouped together to check convergence. (Multiple groups can be provided, separated by semicolon)
- identify_variable_groups_in_nlTrueWhether to identify variable groups in nonlinear systems. This affects dof ordering
Default:True
C++ Type:bool
Controllable:No
Description:Whether to identify variable groups in nonlinear systems. This affects dof ordering
- normalization_typeglobal_L2The normalization type used to compare the reference and actual residuals.
Default:global_L2
C++ Type:MooseEnum
Controllable:No
Description:The normalization type used to compare the reference and actual residuals.
- reference_residual_variablesSet of variables that provide reference residuals for relative convergence check
C++ Type:std::vector<AuxVariableName>
Controllable:No
Description:Set of variables that provide reference residuals for relative convergence check
- reference_vectorThe tag name of the reference residual vector.
C++ Type:TagName
Controllable:No
Description:The tag name of the reference residual vector.
- regard_general_exceptions_as_errorsFalseIf we catch an exception during residual/Jacobian evaluaton for which we don't have specific handling, immediately error instead of allowing the time step to be cut
Default:False
C++ Type:bool
Controllable:No
Description:If we catch an exception during residual/Jacobian evaluaton for which we don't have specific handling, immediately error instead of allowing the time step to be cut
- solution_variablesSet of solution variables to be checked for relative convergence
C++ Type:std::vector<NonlinearVariableName>
Controllable:No
Description:Set of solution variables to be checked for relative convergence
- solveTrueWhether or not to actually solve the Nonlinear system. This is handy in the case that all you want to do is execute AuxKernels, Transfers, etc. without actually solving anything
Default:True
C++ Type:bool
Controllable:Yes
Description:Whether or not to actually solve the Nonlinear system. This is handy in the case that all you want to do is execute AuxKernels, Transfers, etc. without actually solving anything
- zero_reference_residual_treatmentrelative_toleranceDetermine behavior if a reference residual value of zero is present for a particular variable.
Default:relative_tolerance
C++ Type:MooseEnum
Controllable:No
Description:Determine behavior if a reference residual value of zero is present for a particular variable.
ReferenceResidualProblem
Problem that checks for convergence relative to a user-supplied reference quantity rather than the initial residual
Description
By default, MOOSE checks convergence using relative and absolute criteria. Once the residual drops below either an absolute tolerance, or the residual divided by the initial residual for the current time step drops below a relative tolerance, the solution is considered converged. This works well for many problems, but there are some scenarios that are problematic for convergence:
There is a large scaling difference between the solution variables, so taking the norm of the combined vector skews the convergence check so that it becomes increasingly dominated by the variable with larger absolute values in the residual vector as the scaling difference increases.
The model conditions have changed very little from the previous step, so the initial residual is very low because the solution is essentially converged before any nonlinear iterations have been performed. The standard convergence check that uses the initial residual as a reference quantity eventually fails after a few steps because the solution is forced to converge to tighter limits with each time step, until numerical roundoff error prevents the solution from converging more tightly.
The state of the problem is such that the values of the residual at all degrees of freedom where Dirichlet boundary conditions are applied are zero in the converged solution. An example of this is a mechanics model that has Dirichlet boundary conditions to prevent rigid body motion, but the model only experiences free thermal expansion, so there are no reaction loads at those points. Another example is if there is a time step when no loading is applied.
ReferenceResidualProblem
checks for convergence by comparing the residual to a different reference quantity (instead of the initial residual). The user specifies a reference vector that can be used in a relative convergence check. Because the solution variables can have significantly different scaling, the convergence check performed in ReferenceResidualProblem
checks convergence of the solution variables individually. When the norm of the residual for each solution variable is less than either the relative tolerance times the norm of the corresponding reference variable or the absolute tolerance, the solution is considered converged.
By checking the convergence of individual variables and comparing to reference quantities that are meaningful even when the solution is not changing, ReferenceResidualProblem
addresses the first two issues listed above. The third issue is potentially more of a problem with ReferenceResidualProblem
than the standard MOOSE convergence check, and dealing with it is discussed in Dealing with Residuals that are Zero at Boundaries.
Use of this procedure requires that the user provide physically meaningful reference quantities. The vector of the reaction loads (in the case of mechanics) or integrated fluxes (in the case of diffusion problems) is typically suitable for this purpose, as it provides a measure of the loading applied to the system. To make these reference quantities, simply add the "extra_vector_tags" parameter to the computing objects that you want to add into the reference vector. An explicit example is given in Example Input Syntax below. Alternatively, the "absolute_value_vector_tags"` parameter can be used in the kernels to assemble the absolute value of the contribution to each degree of freedom affected by the kernel.
Since relative convergence is computed differently with this approach, the nonlinear relative tolerance required to achieve the same error is typically different than with the default approach in MOOSE, and the differences will vary by the problem. The code user must evaluate the behavior of their model to ensure that appropriate tolerances are being used.
Dealing with Residuals that are Zero at Boundaries
As mentioned in the third case above where relative convergence checks can fail, the converged solutions for some problems are zero on all boundaries with Dirichlet boundary condition (BC) because of the nature of the loading conditions. This would make the ReferenceResidualProblem
convergence checks fail because the norm of the reference vector would be zero in this case. This is manifested when the reference values decrease at the same rate as the residuals, so relative convergence is never achieved.
In some mechanics problems, such as those with symmetry planes, this might happen only in one direction. This situation can be remedied by grouping together the residuals for all components of the displacement variables rather than checking them individually. If the reference vector for one of the variables in the group is zero (because there are no Dirichlet BCs that restrict the solution in that direction), but it is nonzero for the others, the residual for the set of variables will be checked together, and the variable with a zero value will not prevent convergence as it normally would. Grouping variables is accomplished by using the group_variables
option, which is used to provide one or more lists of names of variables to group together.
In some cases, however, there may be no degrees of freedom with nonzero residuals at Dirichlet BCs for even a group of variables. This could happen in mechanics problems that only have free expansion, in which the Dirichlet BCs are important for preventing rigid body motion, but do not restrain the deformation of the body. This could also happen if there is simply no loading on a model during a time step.
It is necessary in such cases to also specify an absolute tolerance using nl_abs_tol
, which is a problem-specific value that must be higher than the residual below which the solution can no longer converge tighter due to numeric roundoff errors, but sufficiently low to ensure that the solution is converged when that limit is reached.
Alternatively, the "absolute_value_vector_tags" parameter can be used in the kernels or the action that sets them up. This option does not rely on the use of Dirichlet BCs to compute a meaningful reference vector, and can typically remedy this issue.
Example Input Syntax
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
(test/tests/problems/reference_residual_problem/reference_residual.i)where the "extra_tag_vectors" parameter indicates the additional vectors that should be added to the nonlinear system. This parameter must contain the name of the reference vector, which is defined in the "reference_vector" parameter. In this example we only create one extra vector, the ref
vector, that will be used for holding the reference residuals. To have computing objects add into the reference vector, simply specify the name of that reference vector with the "extra_vector_tags" parameter as illustrated below:
[BCs]
[u]
type = RobinBC
boundary = 'left right'
coef = ${coef}
variable = u
extra_vector_tags = 'ref'
[]
[v]
type = RobinBC
boundary = 'left right'
coef = 1
variable = v
extra_vector_tags = 'ref'
[]
[]
(test/tests/problems/reference_residual_problem/reference_residual.i)In this example we are using the integrated fluxes as the reference quantities that we will compare the individual variable residuals to.
Grouping Variables
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y;
scalar_strain_zz1 scalar_strain_zz2'
[]
(modules/combined/test/tests/reference_residual/group_variables.i)Multiple groupings of variables can be provided in group_variables
by separating them by semicolon. Convergence for those variables that are not given in group_variables
is checked individually. A given variable can only be included in one group.
Input Parameters
- allow_initial_conditions_with_restartFalseTrue to allow the user to specify initial conditions when restarting. Initial conditions can override any restarted field
Default:False
C++ Type:bool
Controllable:No
Description:True to allow the user to specify initial conditions when restarting. Initial conditions can override any restarted field
- force_restartFalseEXPERIMENTAL: If true, a sub_app may use a restart file instead of using of using the master backup file
Default:False
C++ Type:bool
Controllable:No
Description:EXPERIMENTAL: If true, a sub_app may use a restart file instead of using of using the master backup file
- restart_file_baseFile base name used for restart (e.g.
/ or /LATEST to grab the latest file available) C++ Type:FileNameNoExtension
Controllable:No
Description:File base name used for restart (e.g.
/ or /LATEST to grab the latest file available)
Restart Parameters
- allow_invalid_solutionFalseSet to true to allow convergence even though the solution has been marked as 'invalid'
Default:False
C++ Type:bool
Controllable:No
Description:Set to true to allow convergence even though the solution has been marked as 'invalid'
- immediately_print_invalid_solutionFalseWhether or not to report invalid solution warnings at the time the warning is produced instead of after the calculation
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to report invalid solution warnings at the time the warning is produced instead of after the calculation
Solution Validity Control Parameters
- boundary_restricted_elem_integrity_checkTrueSet to false to disable checking of boundary restricted elemental object variable dependencies, e.g. are the variable dependencies defined on the selected boundaries?
Default:True
C++ Type:bool
Controllable:No
Description:Set to false to disable checking of boundary restricted elemental object variable dependencies, e.g. are the variable dependencies defined on the selected boundaries?
- boundary_restricted_node_integrity_checkTrueSet to false to disable checking of boundary restricted nodal object variable dependencies, e.g. are the variable dependencies defined on the selected boundaries?
Default:True
C++ Type:bool
Controllable:No
Description:Set to false to disable checking of boundary restricted nodal object variable dependencies, e.g. are the variable dependencies defined on the selected boundaries?
- check_uo_aux_stateFalseTrue to turn on a check that no state presents during the evaluation of user objects and aux kernels
Default:False
C++ Type:bool
Controllable:No
Description:True to turn on a check that no state presents during the evaluation of user objects and aux kernels
- error_on_jacobian_nonzero_reallocationFalseThis causes PETSc to error if it had to reallocate memory in the Jacobian matrix due to not having enough nonzeros
Default:False
C++ Type:bool
Controllable:No
Description:This causes PETSc to error if it had to reallocate memory in the Jacobian matrix due to not having enough nonzeros
- fv_bcs_integrity_checkTrueSet to false to disable checking of overlapping Dirichlet and Flux BCs and/or multiple DirichletBCs per sideset
Default:True
C++ Type:bool
Controllable:No
Description:Set to false to disable checking of overlapping Dirichlet and Flux BCs and/or multiple DirichletBCs per sideset
- kernel_coverage_checkTrueSet to false to disable kernel->subdomain coverage check
Default:True
C++ Type:bool
Controllable:No
Description:Set to false to disable kernel->subdomain coverage check
- material_coverage_checkTrueSet to false to disable material->subdomain coverage check
Default:True
C++ Type:bool
Controllable:No
Description:Set to false to disable material->subdomain coverage check
- material_dependency_checkTrueSet to false to disable material dependency check
Default:True
C++ Type:bool
Controllable:No
Description:Set to false to disable material dependency check
- skip_nl_system_checkFalseTrue to skip the NonlinearSystem check for work to do (e.g. Make sure that there are variables to solve for).
Default:False
C++ Type:bool
Controllable:No
Description:True to skip the NonlinearSystem check for work to do (e.g. Make sure that there are variables to solve for).
Simulation Checks 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.
- default_ghostingFalseWhether or not to use libMesh's default amount of algebraic and geometric ghosting
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to use libMesh's default amount of algebraic and geometric ghosting
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:No
Description:Set the enabled status of the MooseObject.
Advanced Parameters
- extra_tag_matricesExtra matrices to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. The outer index is for which nonlinear system the extra tag vectors should be added for
C++ Type:std::vector<std::vector<TagName>>
Controllable:No
Description:Extra matrices to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. The outer index is for which nonlinear system the extra tag vectors should be added for
- extra_tag_solutionsExtra solution vectors to add to the system that can be used by objects for coupling variable values stored in them.
C++ Type:std::vector<TagName>
Controllable:No
Description:Extra solution vectors to add to the system that can be used by objects for coupling variable values stored in them.
- extra_tag_vectorsExtra vectors to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. The outer index is for which nonlinear system the extra tag vectors should be added for
C++ Type:std::vector<std::vector<TagName>>
Controllable:No
Description:Extra vectors to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. The outer index is for which nonlinear system the extra tag vectors should be added for
Tagging Parameters
- ignore_zeros_in_jacobianFalseDo not explicitly store zero values in the Jacobian matrix if true
Default:False
C++ Type:bool
Controllable:No
Description:Do not explicitly store zero values in the Jacobian matrix if true
- nl_sys_namesnl0 The nonlinear system names
Default:nl0
C++ Type:std::vector<NonlinearSystemName>
Controllable:No
Description:The nonlinear system names
- previous_nl_solution_requiredFalseTrue to indicate that this calculation requires a solution vector for storing the previous nonlinear iteration.
Default:False
C++ Type:bool
Controllable:No
Description:True to indicate that this calculation requires a solution vector for storing the previous nonlinear iteration.
- use_nonlinearTrueDetermines whether to use a Nonlinear vs a Eigenvalue system (Automatically determined based on executioner)
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether to use a Nonlinear vs a Eigenvalue system (Automatically determined based on executioner)
Nonlinear System(S) Parameters
- near_null_space_dimension0The dimension of the near nullspace
Default:0
C++ Type:unsigned int
Controllable:No
Description:The dimension of the near nullspace
- null_space_dimension0The dimension of the nullspace
Default:0
C++ Type:unsigned int
Controllable:No
Description:The dimension of the nullspace
- transpose_null_space_dimension0The dimension of the transpose nullspace
Default:0
C++ Type:unsigned int
Controllable:No
Description:The dimension of the transpose nullspace
Null Space Removal Parameters
- parallel_barrier_messagingFalseDisplays messaging from parallel barrier notifications when executing or transferring to/from Multiapps (default: false)
Default:False
C++ Type:bool
Controllable:No
Description:Displays messaging from parallel barrier notifications when executing or transferring to/from Multiapps (default: false)
- verbose_multiappsFalseSet to True to enable verbose screen printing related to MultiApps
Default:False
C++ Type:bool
Controllable:No
Description:Set to True to enable verbose screen printing related to MultiApps
- verbose_setupFalseSet to True to have the problem report on any object created
Default:False
C++ Type:bool
Controllable:No
Description:Set to True to have the problem report on any object created
Verbosity Parameters
Input Files
- (modules/contact/test/tests/verification/patch_tests/brick_3/brick3_mu_0_2_pen.i)
- (modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_second/finite_rr.i)
- (modules/contact/test/tests/verification/patch_tests/plane_3/plane3_template1.i)
- (modules/contact/test/tests/verification/patch_tests/plane_1/plane1_mu_0_2_pen.i)
- (modules/contact/test/tests/mortar_cartesian_lms/cylinder_friction_cartesian_pg.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite_rr.i)
- (modules/contact/test/tests/normalized_penalty/normalized_penalty_kin_Q8.i)
- (modules/contact/test/tests/verification/hertz_cyl/half_symm_q8/hertz_cyl_half_1deg_template3.i)
- (modules/contact/test/tests/verification/patch_tests/plane_2/plane2_template1.i)
- (modules/contact/test/tests/verification/patch_tests/brick_1/brick1_template1.i)
- (test/tests/problems/reference_residual_problem/abs_ref_acceptable.i)
- (modules/combined/test/tests/restart-transient-from-ss-with-stateful/sub_ss.i)
- (modules/contact/examples/2d_indenter/indenter_rz_fine.i)
- (modules/contact/test/tests/pdass_problems/cylinder_friction_penalty.i)
- (modules/contact/test/tests/verification/patch_tests/plane_3/plane3_mu_0_2_pen.i)
- (modules/contact/test/tests/verification/patch_tests/brick_4/brick4_mu_0_2_pen.i)
- (modules/solid_mechanics/examples/wave_propagation/cantilever_sweep.i)
- (modules/combined/test/tests/reference_residual/group_variables.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_second/finite_rr.i)
- (modules/contact/test/tests/verification/patch_tests/brick_2/brick2_template1.i)
- (modules/contact/test/tests/verification/patch_tests/brick_1/brick1_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_ref_resid.i)
- (modules/contact/test/tests/verification/patch_tests/plane_2/plane2_mu_0_2_pen.i)
- (modules/contact/examples/2d_indenter/indenter_rz_nodeface_friction.i)
- (modules/contact/test/tests/verification/hertz_cyl/half_symm_q4/hertz_cyl_half_1deg_template1.i)
- (modules/contact/test/tests/pdass_problems/cylinder_friction.i)
- (test/tests/predictors/simple/predictor_reference_residual_test.i)
- (modules/combined/test/tests/reference_residual/reference_residual.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite_action_rr.i)
- (modules/contact/test/tests/normalized_penalty/normalized_penalty_Q8.i)
- (modules/contact/test/tests/verification/hertz_cyl/half_symm_q4/hertz_cyl_half_1deg_template3.i)
- (modules/heat_transfer/test/tests/interface_heating_mortar/transient_joule_heating_constraint.i)
- (modules/combined/test/tests/restart-transient-from-ss-with-stateful/sub_tr.i)
- (modules/heat_transfer/test/tests/interface_heating_mortar/constraint_joule_heating_dual_material_insulated.i)
- (modules/contact/test/tests/verification/patch_tests/brick_2/brick2_mu_0_2_pen.i)
- (modules/contact/test/tests/mortar_cartesian_lms/cylinder_friction_cartesian_vcp.i)
- (modules/scalar_transport/test/tests/multiple-species/multiple-species.i)
- (modules/heat_transfer/test/tests/interface_heating_mortar/constraint_joule_heating_dual_material.i)
- (test/tests/problems/reference_residual_problem/reference_residual.i)
- (modules/combined/test/tests/cavity_pressure/rz_abs_ref.i)
- (modules/contact/test/tests/verification/patch_tests/plane_4/plane4_template1.i)
- (modules/solid_mechanics/test/tests/rom_stress_update/3tile_strain.i)
- (test/tests/problems/reference_residual_problem/ad_abs_ref.i)
- (modules/contact/test/tests/verification/hertz_cyl/quart_symm_q8/hertz_cyl_qsym_1deg_template1.i)
- (modules/scalar_transport/test/tests/multiple-species/single-specie.i)
- (modules/contact/test/tests/normalized_penalty/normalized_penalty_kin.i)
- (modules/contact/test/tests/mortar_cartesian_lms/cylinder_friction_cartesian.i)
- (modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_first/finite_rr.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_first/finite_rr.i)
- (test/tests/geomsearch/patch_update_strategy/always-grid-sequence.i)
- (modules/heat_transfer/test/tests/interface_heating_mortar/constraint_joule_heating_single_material.i)
- (modules/heat_transfer/test/tests/interface_heating_mortar/constraint_joule_heating_offset_single_material_insulated.i)
- (modules/solid_mechanics/test/tests/material_limit_time_step/creep/nafems_test5a_lim.i)
- (test/tests/problems/reference_residual_problem/no_ref.i)
- (modules/contact/test/tests/verification/patch_tests/plane_1/plane1_template1.i)
- (modules/contact/test/tests/verification/patch_tests/brick_3/brick3_template1.i)
- (modules/contact/test/tests/verification/patch_tests/plane_4/plane4_mu_0_2_pen.i)
- (modules/contact/test/tests/mortar_tm/2d/ad_frictional/finite_rr.i)
- (modules/contact/test/tests/verification/overclosure_removal/overclosure.i)
- (test/tests/executioners/nl_forced_its/many_nl_forced_its_ref_res.i)
- (modules/heat_transfer/test/tests/interface_heating_mortar/constraint_joule_heating_single_material_insulated.i)
- (modules/solid_mechanics/test/tests/free_expansion_abs_ref/free_expansion_abs_ref.i)
- (modules/contact/test/tests/verification/patch_tests/brick_4/brick4_template1.i)
- (modules/contact/test/tests/hertz_spherical/hertz_contact_hex20.i)
- (modules/contact/test/tests/mortar_tm/2d/ad_frictionless_sec/finite_rr.i)
- (test/tests/problems/reference_residual_problem/abs_ref.i)
- (modules/combined/test/tests/generalized_plane_strain_tm_contact/out_of_plane_pressure.i)
- (modules/combined/test/tests/reference_residual/reference_residual_perfgraph.i)
- (test/tests/scaling/residual-based/residual-based-two-var.i)
- (modules/contact/test/tests/pdass_problems/cylinder_friction_penalty_adaptivity.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_first/finite_rr.i)
- (modules/contact/test/tests/verification/patch_tests/mindlin/cylinder_friction_node_face.i)
- (modules/contact/test/tests/verification/hertz_cyl/half_symm_q8/hertz_cyl_half_1deg_template1.i)
- (modules/contact/test/tests/verification/hertz_cyl/quart_symm_q4/hertz_cyl_qsym_1deg_template1.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_second/finite_rr.i)
- (modules/contact/test/tests/normalized_penalty/normalized_penalty.i)
- (modules/contact/test/tests/mortar_tm/2d/ad_frictionless_fir/finite_rr.i)
extra_vector_tags
C++ Type:std::vector<TagName>
Controllable:No
Description:The extra tags for the vectors this Kernel should fill
absolute_value_vector_tags
C++ Type:std::vector<TagName>
Controllable:No
Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution
absolute_value_vector_tags
C++ Type:std::vector<TagName>
Controllable:No
Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution
(test/tests/problems/reference_residual_problem/reference_residual.i)
coef=1
[Mesh]
type = GeneratedMesh
dim = 1
nx = 2
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[u][]
[v][]
[]
[Kernels]
[u_diff]
type = CoefDiffusion
variable = u
coef = ${coef}
[]
[u_rxn]
type = PReaction
variable = u
coefficient = ${coef}
power = 2
[]
[u_f]
type = BodyForce
variable = u
value = ${coef}
[]
[v_diff]
type = Diffusion
variable = v
[]
[v_rxn]
type = PReaction
variable = v
coefficient = 1
power = 2
[]
[v_f]
type = BodyForce
variable = v
value = 1
[]
[]
[BCs]
[u]
type = RobinBC
boundary = 'left right'
coef = ${coef}
variable = u
extra_vector_tags = 'ref'
[]
[v]
type = RobinBC
boundary = 'left right'
coef = 1
variable = v
extra_vector_tags = 'ref'
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
[]
extra_tag_vectors
C++ Type:std::vector<std::vector<TagName>>
Controllable:No
Description:Extra vectors to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. The outer index is for which nonlinear system the extra tag vectors should be added for
reference_vector
C++ Type:TagName
Controllable:No
Description:The tag name of the reference residual vector.
extra_vector_tags
C++ Type:std::vector<TagName>
Controllable:No
Description:The extra tags for the vectors this Kernel should fill
(test/tests/problems/reference_residual_problem/reference_residual.i)
coef=1
[Mesh]
type = GeneratedMesh
dim = 1
nx = 2
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[u][]
[v][]
[]
[Kernels]
[u_diff]
type = CoefDiffusion
variable = u
coef = ${coef}
[]
[u_rxn]
type = PReaction
variable = u
coefficient = ${coef}
power = 2
[]
[u_f]
type = BodyForce
variable = u
value = ${coef}
[]
[v_diff]
type = Diffusion
variable = v
[]
[v_rxn]
type = PReaction
variable = v
coefficient = 1
power = 2
[]
[v_f]
type = BodyForce
variable = v
value = 1
[]
[]
[BCs]
[u]
type = RobinBC
boundary = 'left right'
coef = ${coef}
variable = u
extra_vector_tags = 'ref'
[]
[v]
type = RobinBC
boundary = 'left right'
coef = 1
variable = v
extra_vector_tags = 'ref'
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/reference_residual/group_variables.i)
[Mesh]
file = 2squares.e
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y;
scalar_strain_zz1 scalar_strain_zz2'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./scalar_strain_zz1]
order = FIRST
family = SCALAR
[../]
[./scalar_strain_zz2]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[./saved_x]
order = FIRST
family = LAGRANGE
[../]
[./saved_y]
order = FIRST
family = LAGRANGE
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./aux_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_scalar_strain_zz1]
order = FIRST
family = SCALAR
[../]
[./saved_scalar_strain_zz2]
order = FIRST
family = SCALAR
[../]
[]
[Postprocessors]
[./react_z1]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
block = 1
[../]
[./react_z2]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
block = 2
[../]
[]
[Modules]
[./TensorMechanics]
[./GeneralizedPlaneStrain]
[./gps1]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz1
block = '1'
[../]
[./gps2]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz2
block = '2'
[../]
[../]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = false
displacements = 'disp_x disp_y'
temperature = temp
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
block = '1 2'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./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
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./aux_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = aux_strain_zz
index_i = 2
index_j = 2
[../]
[]
[AuxScalarKernels]
[./saved_scalar_strain_zz1_ref_resid]
type = GeneralizedPlaneStrainReferenceResidual
variable = saved_scalar_strain_zz1
generalized_plane_strain = gps1_GeneralizedPlaneStrainUserObject
[../]
[./saved_scalar_strain_zz2_ref_resid]
type = GeneralizedPlaneStrainReferenceResidual
variable = saved_scalar_strain_zz2
generalized_plane_strain = gps2_GeneralizedPlaneStrainUserObject
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
expression = '(1-x)*t'
[../]
[]
[BCs]
[./bottom1x]
type = DirichletBC
boundary = 1
variable = disp_x
value = 0.0
[../]
[./bottom1y]
type = DirichletBC
boundary = 1
variable = disp_y
value = 0.0
[../]
[./bottom2x]
type = DirichletBC
boundary = 2
variable = disp_x
value = 0.0
[../]
[./bottom2y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
block = '1 2'
[../]
[./strain1]
type = ComputePlaneSmallStrain
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz1
block = 1
eigenstrain_names = eigenstrain
[../]
[./strain2]
type = ComputePlaneSmallStrain
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz2
block = 2
eigenstrain_names = eigenstrain
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
block = '1 2'
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-10
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
num_steps = 5000
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/brick_3/brick3_mu_0_2_pen.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick3_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./diag_saved_z]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./inc_slip_z]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./accum_slip_z]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[./tang_force_z]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y saved_z'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x28]
type = NodalVariableValue
nodeid = 27
variable = disp_x
[../]
[./disp_x33]
type = NodalVariableValue
nodeid = 32
variable = disp_x
[../]
[./disp_y28]
type = NodalVariableValue
nodeid = 27
variable = disp_y
[../]
[./disp_y33]
type = NodalVariableValue
nodeid = 32
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-8
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-5
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '1 3 4 5'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
file_base = brick3_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = brick3_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x28 disp_y28 disp_x33 disp_y33 stress_yy stress_zz top_react_x top_react_y x_disp y_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+6
[../]
[]
(modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_second/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite_rr'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = 0
ymax = 10
nx = 2
ny = 33
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[block]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'block'
extra_vector_tags = 'ref'
[]
[plank]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = block_right
value = 0
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[swell]
type = ADComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[]
[swell_mat]
type = ADGenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 3
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-12
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_3/plane3_template1.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane3_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x11]
type = NodalVariableValue
nodeid = 10
variable = disp_x
[../]
[./disp_y2]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_y11]
type = NodalVariableValue
nodeid = 10
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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 = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalSmallStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalSmallStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'asm'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-8
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x2 disp_y2 disp_x11 disp_y11 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/verification/patch_tests/plane_1/plane1_mu_0_2_pen.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane1_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x7]
type = NodalVariableValue
nodeid = 6
variable = disp_x
[../]
[./disp_y2]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_y7]
type = NodalVariableValue
nodeid = 6
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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 = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalSmallStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalSmallStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-8
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = plane1_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = plane1_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x2 disp_y2 disp_x7 disp_y7 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/mortar_cartesian_lms/cylinder_friction_cartesian_pg.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = hertz_cyl_coarser.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10001
new_block_name = 'secondary_lower'
sidesets = '3'
input = input_file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10000
sidesets = '2'
new_block_name = 'primary_lower'
input = secondary
[]
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
converge_on = 'disp_x disp_y'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[lm_x]
block = 'secondary_lower'
use_dual = true
scaling = 1.0e-5
[]
[lm_y]
block = 'secondary_lower'
use_dual = true
scaling = 1.0e-5
[]
[]
[AuxVariables]
[aux_lm]
block = 'secondary_lower'
use_dual = false
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[saved_x]
[]
[saved_y]
[]
[diag_saved_x]
[]
[diag_saved_y]
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. -0.020 -0.020'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. 0.0 0.015'
[]
[]
[Modules/TensorMechanics/Master]
[all]
incremental = false
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
block = '1 2 3 4 5 6 7'
strain = SMALL
add_variables = false
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[]
[Postprocessors]
[bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[]
[bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[]
[top_react_x]
type = NodalSum
variable = saved_x
boundary = 4
[]
[top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[]
[_dt]
type = TimestepSize
[]
[]
[BCs]
[side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[]
[bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2 3 4 5 6 7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[stuff1_stress]
type = ComputeLinearElasticStress
block = '1'
[]
[stuff2_stress]
type = ComputeLinearElasticStress
block = '2 3 4 5 6 7'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -pc_svd_monitor '
'-snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu NONZERO 1e-12'
line_search = 'none'
nl_abs_tol = 1e-7
l_max_its = 5
nl_rel_tol = 1e-09
start_time = -0.1
end_time = 0.3 # 3.5
l_tol = 1e-8
dt = 0.1
dtmin = 0.001
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4'
sort_by = id
[]
[y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4'
sort_by = id
[]
[lm_x]
type = NodalValueSampler
variable = lm_x
boundary = '3'
sort_by = id
[]
[lm_y]
type = NodalValueSampler
variable = lm_y
boundary = '3'
sort_by = id
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = true
csv = false
[console]
type = Console
max_rows = 5
[]
[chkfile]
type = CSV
show = 'x_disp y_disp lm_x lm_y'
file_base = cylinder_friction_check
create_final_symlink = true
execute_on = 'FINAL'
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeFrictionalForceCartesianLMMechanicalContact
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
lm_x = lm_x
lm_y = lm_y
variable = lm_x
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
correct_edge_dropping = false
mu = 0.4
c_t = 1.0e6
c = 1.0e6
use_petrov_galerkin = true
aux_lm = aux_lm
[]
[x]
type = CartesianMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
variable = lm_x
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
correct_edge_dropping = false
[]
[y]
type = CartesianMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
variable = lm_y
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
correct_edge_dropping = false
[]
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
use_dual = true
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
extra_vector_tags = 'ref'
[]
[]
[UserObjects]
[weighted_gap_uo]
type = LMWeightedGapUserObject
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
lm_variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
weighted_gap_uo = weighted_gap_uo
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = ADDirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = ADDirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = ADDirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = ADDirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
nl_abs_tol = 1e-13
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/normalized_penalty/normalized_penalty_kin_Q8.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = normalized_penalty_Q8.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[]
[Functions]
[./left_x]
type = PiecewiseLinear
x = '0 1 2'
y = '0 0.02 0'
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
generate_output = 'stress_xx'
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[./m3_s2]
primary = 3
secondary = 2
penalty = 1e10
normalize_penalty = true
tangential_tolerance = 1e-3
[../]
[]
[BCs]
[./left_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 1
function = left_x
[../]
[./y]
type = DirichletBC
variable = disp_y
boundary = '1 2 3 4'
value = 0.0
[../]
[./right]
type = DirichletBC
variable = disp_x
boundary = '3 4'
value = 0
[../]
[]
[Materials]
[./stiffStuff1]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 1000'
youngs_modulus = 3e8
poissons_ratio = 0.0
[../]
[./stiffStuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 1000'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_rel_tol = 1e-12
nl_abs_tol = 5e-8
l_max_its = 100
nl_max_its = 20
dt = 0.5
num_steps = 4
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/hertz_cyl/half_symm_q8/hertz_cyl_half_1deg_template3.i)
[GlobalParams]
order = SECOND
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Mesh]
file = hertz_cyl_half_1deg.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Functions]
[./disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 11.'
y = '0. -0.0020 -0.0020'
[../]
[./disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 11.'
y = '0. 0.0 0.0014'
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 2
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 2
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 4
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[../]
[./disp_x639]
type = NodalVariableValue
nodeid = 638
variable = disp_x
[../]
[./disp_y639]
type = NodalVariableValue
nodeid = 638
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[../]
[./top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[../]
[./top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[../]
[]
[Materials]
[./stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[../]
[./stuff1_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff2_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[./stuff3_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '3'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff3_strain]
type = ComputeFiniteStrain
block = '3'
[../]
[./stuff3_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[../]
[./stuff4_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '4'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff4_strain]
type = ComputeFiniteStrain
block = '4'
[../]
[./stuff4_stress]
type = ComputeFiniteStrainElasticStress
block = '4'
[../]
[./stuff5_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '5'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff5_strain]
type = ComputeFiniteStrain
block = '5'
[../]
[./stuff5_stress]
type = ComputeFiniteStrainElasticStress
block = '5'
[../]
[./stuff6_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '6'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff6_strain]
type = ComputeFiniteStrain
block = '6'
[../]
[./stuff6_stress]
type = ComputeFiniteStrainElasticStress
block = '6'
[../]
[./stuff7_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff7_strain]
type = ComputeFiniteStrain
block = '7'
[../]
[./stuff7_stress]
type = ComputeFiniteStrainElasticStress
block = '7'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-7
nl_rel_tol = 1e-6
l_max_its = 100
nl_max_its = 200
start_time = 0.0
end_time = 2.0
l_tol = 5e-4
dt = 0.1
dtmin = 0.1
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'x_disp y_disp cont_press'
start_time = 0.9
execute_vector_postprocessors_on = timestep_end
[../]
[./chkfile2]
type = CSV
show = 'bot_react_x bot_react_y disp_x639 disp_y639 top_react_x top_react_y'
start_time = 0.9
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./interface]
primary = 2
secondary = 3
model = coulomb
friction_coefficient = 0.0
formulation = penalty
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
[Dampers]
[./contact_slip]
type = ContactSlipDamper
primary = '2'
secondary = '3'
[../]
[]
(modules/contact/test/tests/verification/patch_tests/plane_2/plane2_template1.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane2_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x5]
type = NodalVariableValue
nodeid = 4
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y5]
type = NodalVariableValue
nodeid = 4
variable = disp_y
[../]
[./disp_y9]
type = NodalVariableValue
nodeid = 8
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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 = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalSmallStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalSmallStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-8
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x5 disp_y5 disp_x9 disp_y9 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/verification/patch_tests/brick_1/brick1_template1.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick1_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./diag_saved_z]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./inc_slip_z]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./accum_slip_z]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y saved_z'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_begin
boundary = 4
paired_boundary = 3
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_begin
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x5]
type = NodalVariableValue
nodeid = 4
variable = disp_x
[../]
[./disp_x8]
type = NodalVariableValue
nodeid = 7
variable = disp_x
[../]
[./disp_x13]
type = NodalVariableValue
nodeid = 12
variable = disp_x
[../]
[./disp_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_y5]
type = NodalVariableValue
nodeid = 4
variable = disp_y
[../]
[./disp_y8]
type = NodalVariableValue
nodeid = 7
variable = disp_y
[../]
[./disp_y13]
type = NodalVariableValue
nodeid = 12
variable = disp_y
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-8
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-5
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '1 3 4 5'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x5 disp_x8 disp_x13 disp_x16 disp_y5 disp_y8 disp_y13 disp_y16 stress_yy stress_zz top_react_x top_react_y x_disp y_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(test/tests/problems/reference_residual_problem/abs_ref_acceptable.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
[]
[GlobalParams]
absolute_value_vector_tags = 'absref'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'absref'
extra_tag_vectors = 'absref'
acceptable_iterations = 1
acceptable_multiplier = 1e6
[]
[Variables]
[u][]
[v]
scaling = 1e-6
[]
[]
[Functions]
[ramp]
type = ParsedFunction
expression = 'if(t < 5, t - 5, 0) * x'
[]
[]
[Kernels]
[u_dt]
type = TimeDerivative
variable = u
[]
[u_coupled_rx]
type = CoupledForce
variable = u
v = v
coef = 1
[]
[v_dt]
type = TimeDerivative
variable = v
[]
[v_neg_force]
type = BodyForce
variable = v
value = ${fparse -1 / 2}
function = ramp
[]
[v_force]
type = BodyForce
variable = v
value = 1
function = ramp
[]
[]
[Postprocessors]
[u_avg]
type = ElementAverageValue
variable = u
execute_on = 'TIMESTEP_END INITIAL'
[]
[v_avg]
type = ElementAverageValue
variable = v
execute_on = 'TIMESTEP_END INITIAL'
[]
[timestep]
type = TimePostprocessor
outputs = 'none'
[]
[v_old]
type = ElementAverageValue
variable = v
execute_on = TIMESTEP_BEGIN
outputs = none
[]
[u_old]
type = ElementAverageValue
variable = u
execute_on = TIMESTEP_BEGIN
outputs = none
[]
[v_exact]
type = ParsedPostprocessor
pp_names = 'timestep v_old'
function = 't := if(timestep > 5, 5, timestep); (t^2 - 9 * t) / 8'
[]
[u_exact]
type = ParsedPostprocessor
pp_names = 'u_old v_exact'
function = 'u_old + v_exact'
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = none
num_steps = 3
nl_rel_tol = 1e-06
verbose = true
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/combined/test/tests/restart-transient-from-ss-with-stateful/sub_ss.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
nx = 8
ny = 8
xmin = -82.627
xmax = 82.627
ymin = -82.627
ymax = 82.627
dim = 2
[]
[./extra_nodes_x]
type = ExtraNodesetGenerator
input = 'gen'
new_boundary = 'no_x'
coord = '0 82.627 0'
[../]
[./extra_nodes_y]
type = ExtraNodesetGenerator
input = 'extra_nodes_x'
new_boundary = 'no_y'
coord = '-82.627 0 0'
[../]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[AuxVariables]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
# FINITE strain when strain is large, i.e., visible movement.
# SMALL strain when things are stressed, but may not move.
[./fuel]
add_variables = true
strain = FINITE
temperature = temp
eigenstrain_names = 'thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy hydrostatic_stress max_principal_stress strain_xy elastic_strain_xx stress_xy'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
incremental = true
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 'no_x'
value = 0.0
preset = true
[../]
[./no_y]
type = DirichletBC
preset = true
variable = disp_y
boundary = 'no_y'
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3e10 # Pa
poissons_ratio = 0.33 # unitless
[../]
[./thermal_strains]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 2e-6 # 1/K
stress_free_temperature = 500 # K
eigenstrain_name = 'thermal_eigenstrain'
[../]
[./stress_finite] # goes with FINITE strain formulation
type = ComputeFiniteStrainElasticStress
[../]
[]
[Postprocessors]
[./avg_temp]
type = ElementAverageValue
variable = temp
[../]
[./disp_x_max_element]
type = ElementExtremeValue
value_type = max
variable = disp_x
execute_on = 'initial timestep_end'
[../]
[./disp_y_max_element]
type = ElementExtremeValue
value_type = max
variable = disp_y
execute_on = 'initial timestep_end'
[../]
[./disp_x_max_nodal]
type = NodalExtremeValue
value_type = max
variable = disp_x
execute_on = 'initial timestep_end'
[../]
[./disp_y_max_nodal]
type = NodalExtremeValue
value_type = max
variable = disp_y
execute_on = 'initial timestep_end'
[../]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 300'
line_search = 'none'
l_tol = 1e-02
nl_rel_tol = 5e-04
nl_abs_tol = 1e-2
l_max_its = 50
nl_max_its = 25
[]
[Outputs]
exodus = true
print_linear_residuals = false
perf_graph = true
[]
(modules/contact/examples/2d_indenter/indenter_rz_fine.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
coord_type = RZ
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
patch_update_strategy = auto
patch_size = 2
partitioner = centroid
centroid_partitioner_direction = y
[simple_mesh]
type = FileMeshGenerator
file = indenter_rz_fine_bigsideset.e
[]
# For NodalVariableValue to work with distributed mesh
allow_renumbering = false
[]
[Functions]
[disp_y]
type = PiecewiseLinear
x = '0. 1.0 2.0 2.6 3.0'
y = '0. -4.5 -5.7 -5.7 -4.0'
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[]
[AuxVariables]
[saved_x]
[]
[saved_y]
[]
[]
[Modules/TensorMechanics/Master]
[all]
add_variables = true
strain = FINITE
block = '1 2'
use_automatic_differentiation = false
generate_output = 'stress_xx stress_xy stress_xz stress_yy stress_zz'
save_in = 'saved_x saved_y'
[]
[]
[BCs]
# Symmetries of the Problem
[symm_x_indenter]
type = DirichletBC
variable = disp_x
boundary = 5
value = 0.0
[]
[symm_x_material]
type = DirichletBC
variable = disp_x
boundary = 9
value = 0.0
[]
# Material should not fly away
[material_base_y]
type = DirichletBC
variable = disp_y
boundary = 8
value = 0.0
[]
# Drive indenter motion
[disp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = disp_y
[]
[]
[Contact]
[contact]
secondary = 4
primary = 6
model = frictionless
# Investigate von Mises stress at the edge
correct_edge_dropping = true
formulation = mortar
c_normal = 1e+2
[]
[]
[UserObjects]
[slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 48
slip_sys_file_name = input_slip_sys_bcc48.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 48 0.0001 0.01'
uo_state_var_name = state_var_gss
slip_incr_tol = 10.0
block = 2
[]
[slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 48
uo_state_var_name = state_var_gss
block = 2
[]
[state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 48
groups = '0 24 48'
group_values = '900 1000' #120
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
block = 2
[]
[state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 48
hprops = '1.4 1000 1200 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
block = 2
[]
[]
[Materials]
[tensor]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1.0e7
poissons_ratio = 0.25
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[]
[crysp]
type = FiniteStrainUObasedCP
block = 2
stol = 1e-2
tan_mod_type = exact
uo_slip_rates = 'slip_rate_gss'
uo_slip_resistances = 'slip_resistance_gss'
uo_state_vars = 'state_var_gss'
uo_state_var_evol_rate_comps = 'state_var_evol_rate_comp_gss'
maximum_substep_iteration = 20
[]
[elasticity_tensor]
type = ComputeElasticityTensorCP
block = 2
C_ijkl = '265190 113650 113650 265190 113650 265190 75769 75769 75760'
fill_method = symmetric9
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -snes_linesearch_type -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu basic NONZERO 1e-15'
line_search = 'none'
automatic_scaling = true
nl_abs_tol = 2.0e-07
nl_rel_tol = 2.0e-07
l_max_its = 40
l_abs_tol = 1e-08
l_tol = 1e-08
start_time = 0.0
dt = 0.01
end_time = 3.0 # Executioner
[]
[Postprocessors]
[maxdisp]
type = NodalVariableValue
nodeid = 39
variable = disp_y
[]
[resid_y]
type = NodalSum
variable = saved_y
boundary = 1
[]
[]
[Outputs]
[out]
type = Exodus
elemental_as_nodal = true
[]
perf_graph = true
csv = true
[]
(modules/contact/test/tests/pdass_problems/cylinder_friction_penalty.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = hertz_cyl_coarser.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10001
new_block_name = 'secondary_lower'
sidesets = '3'
input = input_file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10000
sidesets = '2'
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[penalty_normal_pressure]
order = FIRST
family = LAGRANGE
[]
[penalty_frictional_pressure]
order = FIRST
family = LAGRANGE
[]
[accumulated_slip_one]
order = FIRST
family = LAGRANGE
[]
[tangential_vel_one]
order = FIRST
family = LAGRANGE
[]
[weighted_gap]
order = FIRST
family = LAGRANGE
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[react_x]
[]
[react_y]
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. -0.020 -0.020'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. 0.0 0.015'
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
extra_vector_tags = 'ref'
block = '1 2 3 4 5 6 7'
[]
[]
[AuxKernels]
[penalty_normal_pressure_auxk]
type = PenaltyMortarUserObjectAux
variable = penalty_normal_pressure
user_object = friction_uo
contact_quantity = normal_pressure
[]
[penalty_frictional_pressure_auxk]
type = PenaltyMortarUserObjectAux
variable = penalty_frictional_pressure
user_object = friction_uo
contact_quantity = tangential_pressure_one
[]
[penalty_accumulated_slip_auxk]
type = PenaltyMortarUserObjectAux
variable = accumulated_slip_one
user_object = friction_uo
contact_quantity = accumulated_slip_one
[]
[penalty_tangential_vel_auxk]
type = PenaltyMortarUserObjectAux
variable = tangential_vel_one
user_object = friction_uo
contact_quantity = tangential_velocity_one
[]
[penalty_weighted_gap_auxk]
type = PenaltyMortarUserObjectAux
variable = weighted_gap
user_object = friction_uo
contact_quantity = normal_gap
[]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[react_x]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_x'
variable = 'react_x'
[]
[react_y]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_y'
variable = 'react_y'
[]
[]
[Postprocessors]
[bot_react_x]
type = NodalSum
variable = react_x
boundary = 1
[]
[bot_react_y]
type = NodalSum
variable = react_y
boundary = 1
[]
[top_react_x]
type = NodalSum
variable = react_x
boundary = 4
[]
[top_react_y]
type = NodalSum
variable = react_y
boundary = 4
[]
[]
[BCs]
[side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[]
[bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[]
[stuff1_strain]
type = ComputeFiniteStrain
block = '1'
[]
[stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2 3 4 5 6 7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[stuff2_strain]
type = ComputeFiniteStrain
block = '2 3 4 5 6 7'
[]
[stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2 3 4 5 6 7'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type -pc_factor_shift_type '
'-pc_factor_shift_amount -mat_mffd_err'
petsc_options_value = 'lu superlu_dist NONZERO 1e-15 '
' 1e-5'
line_search = 'none'
nl_abs_tol = 1e-14
nl_rel_tol = 1e-10
start_time = 0.0
end_time = 0.3 # 3.5
l_tol = 1e-4
dt = 0.1
dtmin = 0.001
[Predictor]
type = SimplePredictor
scale = 1.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3'
sort_by = id
[]
[y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3'
sort_by = id
[]
[cont_press]
type = NodalValueSampler
variable = penalty_normal_pressure
boundary = '3'
sort_by = id
[]
[friction]
type = NodalValueSampler
variable = penalty_frictional_pressure
boundary = '3'
sort_by = id
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = true
csv = false
[console]
type = Console
max_rows = 5
[]
[chkfile]
type = CSV
show = 'x_disp y_disp cont_press friction'
file_base = cylinder_friction_penalty_check
create_final_symlink = true
execute_on = 'FINAL'
[]
[]
[UserObjects]
[friction_uo]
type = PenaltyFrictionUserObject
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
disp_x = disp_x
disp_y = disp_y
friction_coefficient = 0.4 # with 2.0 works
secondary_variable = disp_x
penalty = 5e9
penalty_friction = 1e7
[]
[]
[Constraints]
[x]
type = NormalMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = friction_uo
[]
[y]
type = NormalMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = friction_uo
[]
[tangential_x]
type = TangentialMortarMechanicalContact
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_velocities_uo = friction_uo
[]
[tangential_y]
type = TangentialMortarMechanicalContact
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_velocities_uo = friction_uo
[]
[]
(modules/contact/test/tests/verification/patch_tests/plane_3/plane3_mu_0_2_pen.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane3_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x11]
type = NodalVariableValue
nodeid = 10
variable = disp_x
[../]
[./disp_y2]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_y11]
type = NodalVariableValue
nodeid = 10
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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 = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalSmallStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalSmallStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = plane3_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = plane3_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x2 disp_y2 disp_x11 disp_y11 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/verification/patch_tests/brick_4/brick4_mu_0_2_pen.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick4_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./diag_saved_z]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./inc_slip_z]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./accum_slip_z]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[./tang_force_z]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y saved_z'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x59]
type = NodalVariableValue
nodeid = 58
variable = disp_x
[../]
[./disp_x64]
type = NodalVariableValue
nodeid = 63
variable = disp_x
[../]
[./disp_y59]
type = NodalVariableValue
nodeid = 58
variable = disp_y
[../]
[./disp_y64]
type = NodalVariableValue
nodeid = 63
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-7
nl_rel_tol = 1e-6
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-4
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '1 3 4 5'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
file_base = brick4_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = brick4_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x59 disp_y59 disp_x64 disp_y64 stress_yy stress_zz top_react_x top_react_y x_disp y_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+6
[../]
[]
(modules/solid_mechanics/examples/wave_propagation/cantilever_sweep.i)
# Frequency Response function for cantilever beam:
# Analytic results: 509Hz and 763Hz
# Simulation results with coarse mesh: 600Hz and 800Hz
[Mesh]
type = GeneratedMesh
elem_type = HEX8
dim = 3
xmin=0
xmax=1
nx=10
ymin=0
ymax=0.1
ny = 1
zmin=0
zmax=0.15
nz = 2
[]
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = SMALL
add_variables = true
new_system = true
formulation = TOTAL
[]
[]
[]
[]
[Kernels]
#reaction terms
[reaction_realx]
type = Reaction
variable = disp_x
rate = 0# filled by controller
extra_vector_tags = 'ref'
[]
[reaction_realy]
type = Reaction
variable = disp_y
rate = 0# filled by controller
extra_vector_tags = 'ref'
[]
[reaction_realz]
type = Reaction
variable = disp_z
rate = 0# filled by controller
extra_vector_tags = 'ref'
[]
[]
[AuxVariables]
[disp_mag]
[]
[]
[AuxKernels]
[disp_mag]
type = ParsedAux
variable = disp_mag
coupled_variables = 'disp_x disp_y disp_z'
expression = 'sqrt(disp_x^2+disp_y^2+disp_z^2)'
[]
[]
[BCs]
#Left
[disp_x_left]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[disp_y_left]
type = DirichletBC
variable = disp_y
boundary = 'left'
value = 0.0
[]
[disp_z_left]
type = DirichletBC
variable = disp_z
boundary = 'left'
value = 0.0
[]
#Right
[BC_right_yreal]
type = NeumannBC
variable = disp_y
boundary = 'right'
value = 1000
[]
[BC_right_zreal]
type = NeumannBC
variable = disp_z
boundary = 'right'
value = 1000
[]
[]
[Materials]
[elastic_tensor_Al]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 68e9
poissons_ratio = 0.36
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[]
[Postprocessors]
[dispMag]
type = NodalExtremeValue
value_type = max
variable = disp_mag
[]
[]
[Functions]
[./freq2]
type = ParsedFunction
symbol_names = density
symbol_values = 2.7e3 #Al kg/m3
expression = '-t*t*density'
[../]
[]
[Controls]
[./func_control]
type = RealFunctionControl
parameter = 'Kernels/*/rate'
function = 'freq2'
execute_on = 'initial timestep_begin'
[../]
[]
[Executioner]
type = Transient
solve_type=LINEAR
petsc_options_iname = ' -pc_type'
petsc_options_value = 'lu'
start_time = 300 #starting frequency
end_time = 1200 #ending frequency
nl_abs_tol = 1e-6
[TimeStepper]
type = ConstantDT
dt = 50 #frequency stepsize
[]
[]
[Outputs]
csv=true
exodus=false
console = false
[]
(modules/combined/test/tests/reference_residual/group_variables.i)
[Mesh]
file = 2squares.e
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y;
scalar_strain_zz1 scalar_strain_zz2'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./scalar_strain_zz1]
order = FIRST
family = SCALAR
[../]
[./scalar_strain_zz2]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[./saved_x]
order = FIRST
family = LAGRANGE
[../]
[./saved_y]
order = FIRST
family = LAGRANGE
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./aux_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_scalar_strain_zz1]
order = FIRST
family = SCALAR
[../]
[./saved_scalar_strain_zz2]
order = FIRST
family = SCALAR
[../]
[]
[Postprocessors]
[./react_z1]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
block = 1
[../]
[./react_z2]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
block = 2
[../]
[]
[Modules]
[./TensorMechanics]
[./GeneralizedPlaneStrain]
[./gps1]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz1
block = '1'
[../]
[./gps2]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz2
block = '2'
[../]
[../]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = false
displacements = 'disp_x disp_y'
temperature = temp
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
block = '1 2'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./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
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./aux_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = aux_strain_zz
index_i = 2
index_j = 2
[../]
[]
[AuxScalarKernels]
[./saved_scalar_strain_zz1_ref_resid]
type = GeneralizedPlaneStrainReferenceResidual
variable = saved_scalar_strain_zz1
generalized_plane_strain = gps1_GeneralizedPlaneStrainUserObject
[../]
[./saved_scalar_strain_zz2_ref_resid]
type = GeneralizedPlaneStrainReferenceResidual
variable = saved_scalar_strain_zz2
generalized_plane_strain = gps2_GeneralizedPlaneStrainUserObject
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
expression = '(1-x)*t'
[../]
[]
[BCs]
[./bottom1x]
type = DirichletBC
boundary = 1
variable = disp_x
value = 0.0
[../]
[./bottom1y]
type = DirichletBC
boundary = 1
variable = disp_y
value = 0.0
[../]
[./bottom2x]
type = DirichletBC
boundary = 2
variable = disp_x
value = 0.0
[../]
[./bottom2y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
block = '1 2'
[../]
[./strain1]
type = ComputePlaneSmallStrain
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz1
block = 1
eigenstrain_names = eigenstrain
[../]
[./strain2]
type = ComputePlaneSmallStrain
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz2
block = 2
eigenstrain_names = eigenstrain
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
block = '1 2'
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-10
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
num_steps = 5000
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_second/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite_rr'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = 0
ymax = 10
nx = 2
ny = 33
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[block]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'block'
extra_vector_tags = 'ref'
[]
[plank]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = block_right
value = 0
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[]
[swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[]
[swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 3
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-12
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/verification/patch_tests/brick_2/brick2_template1.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick2_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./diag_saved_z]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./inc_slip_z]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./accum_slip_z]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y saved_z'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_begin
boundary = 4
paired_boundary = 3
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_begin
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x7]
type = NodalVariableValue
nodeid = 6
variable = disp_x
[../]
[./disp_x26]
type = NodalVariableValue
nodeid = 25
variable = disp_x
[../]
[./disp_y7]
type = NodalVariableValue
nodeid = 6
variable = disp_y
[../]
[./disp_y26]
type = NodalVariableValue
nodeid = 25
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-8
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-5
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '1 3 4 5'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x7 disp_y7 disp_x26 disp_y26 stress_yy stress_zz top_react_x top_react_y x_disp y_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/verification/patch_tests/brick_1/brick1_mu_0_2_pen.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick1_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./diag_saved_z]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./inc_slip_z]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./accum_slip_z]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[./tang_force_z]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y saved_z'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x5]
type = NodalVariableValue
nodeid = 4
variable = disp_x
[../]
[./disp_x8]
type = NodalVariableValue
nodeid = 7
variable = disp_x
[../]
[./disp_x13]
type = NodalVariableValue
nodeid = 12
variable = disp_x
[../]
[./disp_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_y5]
type = NodalVariableValue
nodeid = 4
variable = disp_y
[../]
[./disp_y8]
type = NodalVariableValue
nodeid = 7
variable = disp_y
[../]
[./disp_y13]
type = NodalVariableValue
nodeid = 12
variable = disp_y
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-8
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-5
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '1 3 4 5'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
file_base = brick1_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = brick1_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x5 disp_x8 disp_x13 disp_x16 disp_y5 disp_y8 disp_y13 disp_y16 stress_yy stress_zz top_react_x top_react_y x_disp y_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_ref_resid.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Variables]
[scalar_strain_zz]
order = FIRST
family = SCALAR
[]
[]
[AuxVariables]
[temp]
order = FIRST
family = LAGRANGE
[]
[saved_x]
order = FIRST
family = LAGRANGE
[]
[saved_y]
order = FIRST
family = LAGRANGE
[]
[saved_strain_zz]
family = SCALAR
order = FIRST
[]
[]
[Postprocessors]
[react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = SMALL
add_variables = true
displacements = 'disp_x disp_y'
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
planar_formulation = GENERALIZED_PLANE_STRAIN
eigenstrain_names = eigenstrain
scalar_out_of_plane_strain = scalar_strain_zz
temperature = temp
absolute_value_vector_tags = 'ref'
[]
[]
[AuxKernels]
[tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[]
[saved_x]
type = TagVectorAux
variable = 'saved_x'
vector_tag = 'ref'
v = 'disp_x'
execute_on = timestep_end
[]
[saved_y]
type = TagVectorAux
variable = 'saved_y'
vector_tag = 'ref'
execute_on = timestep_end
v = 'disp_y'
[]
[]
[AuxScalarKernels]
[saved_strain_zz]
type = ScalarTagVectorAux
variable = 'saved_strain_zz'
vector_tag = 'ref'
execute_on = timestep_end
v = 'scalar_strain_zz'
[]
[]
[Functions]
[tempfunc]
type = ParsedFunction
expression = '(1-x)*t'
[]
[]
[BCs]
[bottomx]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[]
[bottomy]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[]
[thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-8
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
num_steps = 5000
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_2/plane2_mu_0_2_pen.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane2_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x5]
type = NodalVariableValue
nodeid = 4
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y5]
type = NodalVariableValue
nodeid = 4
variable = disp_y
[../]
[./disp_y9]
type = NodalVariableValue
nodeid = 8
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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 = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalSmallStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalSmallStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-8
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = plane2_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = plane2_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x5 disp_y5 disp_x9 disp_y9 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/contact/examples/2d_indenter/indenter_rz_nodeface_friction.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
coord_type = RZ
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]#Comment
file = indenter_rz_fine.e
displacements = 'disp_x disp_y'
# For NodalVariableValue to work with distributed mesh
allow_renumbering = false
[] # Mesh
[Functions]
[./disp_y]
type = PiecewiseLinear
x = '0. 1.0 1.8 2. 3.0'
y = '0. -4.5 -5.4 -5.4 -4.0'
[../]
[] # Functions
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[] # Variables
[AuxVariables]
[saved_x]
[]
[saved_y]
[]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
block = '1 2'
use_automatic_differentiation = false
generate_output = 'stress_xx stress_xy stress_xz stress_yy stress_zz'
save_in = 'saved_x saved_y'
[../]
[]
[AuxKernels]
[] # AuxKernels
[BCs]
# Symmetries of the Problem
[./symm_x_indenter]
type = DirichletBC
variable = disp_x
boundary = 5
value = 0.0
[../]
[./symm_x_material]
type = DirichletBC
variable = disp_x
boundary = 9
value = 0.0
[../]
# Material should not fly away
[./material_base_y]
type = DirichletBC
variable = disp_y
boundary = 8
value = 0.0
[../]
# Drive indenter motion
[./disp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = disp_y
[../]
[] # BCs
[Contact]
[./dummy_name]
primary = 6
secondary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.5
penalty = 8e6
tangential_tolerance = 0.005
[../]
[]
[Dampers]
[./contact_slip]
type = ContactSlipDamper
secondary = 4
primary = 6
[../]
[]
[Materials]
[./tensor]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1.0e7
poissons_ratio = 0.25
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./tensor_2]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./power_law_hardening]
type = IsotropicPowerLawHardeningStressUpdate
strength_coefficient = 1e5 #K
strain_hardening_exponent = 0.5 #n
block = '2'
[../]
[./radial_return_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'power_law_hardening'
tangent_operator = elastic
block = '2'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -snes_linesearch_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu basic NONZERO 1e-15'
line_search = 'none'
automatic_scaling = true
nl_abs_tol = 1.5e-07
nl_rel_tol = 1.5e-07
l_max_its = 40
start_time = 0.0
dt = 0.025
end_time = 3.0
[]
[Postprocessors]
[./maxdisp]
type = NodalVariableValue
nodeid = 39 # 40-1 where 40 is the exodus node number
variable = disp_y
[../]
[resid_y]
type = NodalSum
variable = saved_y
boundary = 1
[]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
perf_graph = true
csv = true
[]
(modules/contact/test/tests/verification/hertz_cyl/half_symm_q4/hertz_cyl_half_1deg_template1.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = hertz_cyl_half_1deg.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Functions]
[./disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. -0.0020 -0.0020'
[../]
[./disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. 0.0 0.0014'
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 2
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 2
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 4
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[../]
[./disp_x226]
type = NodalVariableValue
nodeid = 225
variable = disp_x
[../]
[./disp_y226]
type = NodalVariableValue
nodeid = 225
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[../]
[./top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[../]
[./top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[../]
[]
[Materials]
[./stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[../]
[./stuff1_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff2_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[./stuff3_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '3'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff3_strain]
type = ComputeFiniteStrain
block = '3'
[../]
[./stuff3_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[../]
[./stuff4_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '4'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff4_strain]
type = ComputeFiniteStrain
block = '4'
[../]
[./stuff4_stress]
type = ComputeFiniteStrainElasticStress
block = '4'
[../]
[./stuff5_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '5'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff5_strain]
type = ComputeFiniteStrain
block = '5'
[../]
[./stuff5_stress]
type = ComputeFiniteStrainElasticStress
block = '5'
[../]
[./stuff6_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '6'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff6_strain]
type = ComputeFiniteStrain
block = '6'
[../]
[./stuff6_stress]
type = ComputeFiniteStrainElasticStress
block = '6'
[../]
[./stuff7_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff7_strain]
type = ComputeFiniteStrain
block = '7'
[../]
[./stuff7_stress]
type = ComputeFiniteStrainElasticStress
block = '7'
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-6
nl_rel_tol = 1e-5
l_max_its = 100
nl_max_its = 200
start_time = 0.0
end_time = 3.5
l_tol = 1e-3
dt = 0.1
dtmin = 0.1
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'x_disp y_disp cont_press'
start_time = 0.9
execute_vector_postprocessors_on = timestep_end
[../]
[./chkfile2]
type = CSV
show = 'bot_react_x bot_react_y disp_x226 disp_y226 top_react_x top_react_y'
start_time = 0.9
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./interface]
primary = 2
secondary = 3
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+10
[../]
[]
(modules/contact/test/tests/pdass_problems/cylinder_friction.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = hertz_cyl_coarser.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10001
new_block_name = 'secondary_lower'
sidesets = '3'
input = input_file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10000
sidesets = '2'
new_block_name = 'primary_lower'
input = secondary
[]
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[frictionless_normal_lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
use_dual = true
[]
[tangential_lm]
block = 'secondary_lower'
use_dual = true
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[saved_x]
[]
[saved_y]
[]
[diag_saved_x]
[]
[diag_saved_y]
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. -0.020 -0.020'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. 0.0 0.015'
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
block = '1 2 3 4 5 6 7'
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[]
[Postprocessors]
[bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[]
[bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[]
[top_react_x]
type = NodalSum
variable = saved_x
boundary = 4
[]
[top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[]
[BCs]
[side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[]
[bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[]
[stuff1_strain]
type = ComputeFiniteStrain
block = '1'
[]
[stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2 3 4 5 6 7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[stuff2_strain]
type = ComputeFiniteStrain
block = '2 3 4 5 6 7'
[]
[stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2 3 4 5 6 7'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type -pc_factor_shift_type -pc_factor_shift_amount -mat_mffd_err'
petsc_options_value = 'lu superlu_dist NONZERO 1e-15 1e-5'
line_search = 'none'
nl_abs_tol = 1e-7
start_time = 0.0
end_time = 0.3 # 3.5
l_tol = 1e-4
dt = 0.1
dtmin = 0.001
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4'
sort_by = id
[]
[y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4'
sort_by = id
[]
[cont_press]
type = NodalValueSampler
variable = frictionless_normal_lm
boundary = '3'
sort_by = id
[]
[friction]
type = NodalValueSampler
variable = frictionless_normal_lm
boundary = '3'
sort_by = id
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = false
csv = false
[console]
type = Console
max_rows = 5
[]
[chkfile]
type = CSV
show = 'x_disp y_disp cont_press friction'
file_base = cylinder_friction_check
create_final_symlink = true
execute_on = 'FINAL'
[]
[]
[UserObjects]
[weighted_vel_uo]
type = LMWeightedVelocitiesUserObject
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
lm_variable_normal = frictionless_normal_lm
lm_variable_tangential_one = tangential_lm
secondary_variable = disp_x
disp_x = disp_x
disp_y = disp_y
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeFrictionalForceLMMechanicalContact
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
friction_lm = tangential_lm
mu = 0.4
c_t = 1.0e5
c = 1.0e6
weighted_gap_uo = weighted_vel_uo
weighted_velocities_uo = weighted_vel_uo
[]
[x]
type = NormalMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_vel_uo
[]
[y]
type = NormalMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_vel_uo
[]
[tangential_x]
type = TangentialMortarMechanicalContact
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
variable = tangential_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_velocities_uo = weighted_vel_uo
[]
[tangential_y]
type = TangentialMortarMechanicalContact
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
variable = tangential_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_velocities_uo = weighted_vel_uo
[]
[]
(test/tests/predictors/simple/predictor_reference_residual_test.i)
# The purpose of this test is to ensure the SimplePredictor resets the std::precision
[Mesh]
type = GeneratedMesh
dim = 2
nx = 3
ny = 3
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff_u]
type = Diffusion
variable = u
extra_vector_tags = 'ref'
[../]
[]
[BCs]
[./bot]
type = DirichletBC
variable = u
boundary = bottom
value = 0.0
[../]
[./top]
type = FunctionDirichletBC
variable = u
boundary = top
function = 't'
[../]
[]
[Executioner]
type = Transient
start_time = 0.0
dt = 0.5
end_time = 1.0
[./Predictor]
type = SimplePredictor
scale = 1.0e-10
[../]
[]
(modules/combined/test/tests/reference_residual/reference_residual.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./saved_t]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
volumetric_locking_correction = true
incremental = true
save_in = 'saved_x saved_y saved_z'
eigenstrain_names = thermal_expansion
strain = FINITE
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temp
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
save_in = saved_t
extra_vector_tags = 'ref'
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0 1 2'
y = '0 1 1'
scale_factor = 0.1
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = pull
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[../]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = bottom
value = 10.0
[../]
[./top_temp]
type = DirichletBC
variable = temp
boundary = top
value = 20.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 0
eigenstrain_name = thermal_expansion
temperature = temp
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0.0
[../]
[./heat1]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 1e-3 #Tuned to give temperature reference resid close to that of solidmech
[../]
[./density]
type = Density
block = 0
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
l_tol = 1e-3
l_max_its = 100
dt = 1.0
end_time = 2.0
[]
[Postprocessors]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./ref_resid_z]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_z
[../]
[./ref_resid_t]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_t
[../]
[./nonlinear_its]
type = NumNonlinearIterations
[]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite_action_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e6
[]
[]
[MortarGapHeatTransfer]
[mortar_heat_transfer]
temperature = temp
use_displaced_mesh = true
gap_flux_options = conduction
gap_conductivity = 1
boundary = plank_right
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
thermal_lm_scaling = 1e-7
gap_geometry_type = PLATE
[]
[]
[BCs]
[left_temp]
type = ADDirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = ADDirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = ADDirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = ADDirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
nl_abs_tol = 1e-13
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/normalized_penalty/normalized_penalty_Q8.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = normalized_penalty_Q8.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Functions]
[./left_x]
type = PiecewiseLinear
x = '0 1 2'
y = '0 0.02 0'
[../]
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
generate_output = 'stress_xx'
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[./m3_s2]
primary = 3
secondary = 2
penalty = 1e10
normalize_penalty = true
formulation = penalty
tangential_tolerance = 1e-3
[../]
[]
[BCs]
[./left_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 1
function = left_x
[../]
[./y]
type = DirichletBC
variable = disp_y
boundary = '1 2 3 4'
value = 0.0
[../]
[./right]
type = DirichletBC
variable = disp_x
boundary = '3 4'
value = 0
[../]
[]
[Materials]
[./stiffStuff1]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 1000'
youngs_modulus = 3e8
poissons_ratio = 0.0
[../]
[./stiffStuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 1000'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_rel_tol = 1e-12
nl_abs_tol = 5e-8
l_max_its = 100
nl_max_its = 10
dt = 0.5
num_steps = 4
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/hertz_cyl/half_symm_q4/hertz_cyl_half_1deg_template3.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = hertz_cyl_half_1deg.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Functions]
[./disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 11.'
y = '0. -0.0020 -0.0020'
[../]
[./disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 11.'
y = '0. 0.0 0.0014'
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
extra_vector_tags = 'ref'
save_in = 'saved_x saved_y'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 2
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 2
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 4
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[../]
[./disp_x226]
type = NodalVariableValue
nodeid = 225
variable = disp_x
[../]
[./disp_y226]
type = NodalVariableValue
nodeid = 225
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[../]
[./top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[../]
[./top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[../]
[]
[Materials]
[./stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[../]
[./stuff1_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff2_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[./stuff3_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '3'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff3_strain]
type = ComputeFiniteStrain
block = '3'
[../]
[./stuff3_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[../]
[./stuff4_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '4'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff4_strain]
type = ComputeFiniteStrain
block = '4'
[../]
[./stuff4_stress]
type = ComputeFiniteStrainElasticStress
block = '4'
[../]
[./stuff5_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '5'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff5_strain]
type = ComputeFiniteStrain
block = '5'
[../]
[./stuff5_stress]
type = ComputeFiniteStrainElasticStress
block = '5'
[../]
[./stuff6_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '6'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff6_strain]
type = ComputeFiniteStrain
block = '6'
[../]
[./stuff6_stress]
type = ComputeFiniteStrainElasticStress
block = '6'
[../]
[./stuff7_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff7_strain]
type = ComputeFiniteStrain
block = '7'
[../]
[./stuff7_stress]
type = ComputeFiniteStrainElasticStress
block = '7'
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-7
nl_rel_tol = 1e-6
l_max_its = 100
nl_max_its = 200
start_time = 0.0
end_time = 2.0
l_tol = 5e-4
dt = 0.1
dtmin = 0.1
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'x_disp y_disp cont_press'
start_time = 0.9
execute_vector_postprocessors_on = timestep_end
[../]
[./chkfile2]
type = CSV
show = 'bot_react_x bot_react_y disp_x226 disp_y226 top_react_x top_react_y'
start_time = 0.9
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./interface]
primary = 2
secondary = 3
model = coulomb
friction_coefficient = 0.0
formulation = penalty
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
[Dampers]
[./contact_slip]
type = ContactSlipDamper
primary = '2'
secondary = '3'
[../]
[]
(modules/heat_transfer/test/tests/interface_heating_mortar/transient_joule_heating_constraint.i)
## Units in the input file: m-Pa-s-K-V
[Mesh]
[left_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 10
xmax = 0.1
ymin = 0
ymax = 0.5
boundary_name_prefix = moving_block
[]
[left_block]
type = SubdomainIDGenerator
input = left_rectangle
subdomain_id = 1
[]
[right_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 10
xmin = 0.1
xmax = 0.2
ymin = 0
ymax = 0.5
boundary_name_prefix = fixed_block
boundary_id_offset = 4
[]
[right_block]
type = SubdomainIDGenerator
input = right_rectangle
subdomain_id = 2
[]
[two_blocks]
type = MeshCollectionGenerator
inputs = 'left_block right_block'
[]
[block_rename]
type = RenameBlockGenerator
input = two_blocks
old_block = '1 2'
new_block = 'left_block right_block'
[]
[interface_secondary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'fixed_block_left'
new_block_id = 3
new_block_name = 'interface_secondary_subdomain'
input = block_rename
[]
[interface_primary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'moving_block_right'
new_block_id = 4
new_block_name = 'interface_primary_subdomain'
input = interface_secondary_subdomain
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[temperature_interface_lm]
block = 'interface_secondary_subdomain'
[]
[potential]
[]
[potential_interface_lm]
block = 'interface_secondary_subdomain'
[]
[]
[AuxVariables]
[interface_normal_lm]
order = FIRST
family = LAGRANGE
block = 'interface_secondary_subdomain'
initial_condition = 1.0
[]
[]
[Kernels]
[HeatDiff_steel]
type = ADHeatConduction
variable = temperature
thermal_conductivity = steel_thermal_conductivity
extra_vector_tags = 'ref'
block = 'left_block'
[]
[HeatTdot_steel]
type = ADHeatConductionTimeDerivative
variable = temperature
specific_heat = steel_heat_capacity #use parsed material property
density_name = steel_density
extra_vector_tags = 'ref'
block = 'left_block'
[]
[HeatDiff_aluminum]
type = ADHeatConduction
variable = temperature
thermal_conductivity = aluminum_thermal_conductivity
extra_vector_tags = 'ref'
block = 'right_block'
[]
[HeatTdot_aluminum]
type = ADHeatConductionTimeDerivative
variable = temperature
specific_heat = aluminum_heat_capacity #use parsed material property
density_name = aluminum_density
extra_vector_tags = 'ref'
block = 'right_block'
[]
[electric_steel]
type = ADMatDiffusion
variable = potential
diffusivity = steel_electrical_conductivity
extra_vector_tags = 'ref'
block = 'left_block'
[]
[electric_aluminum]
type = ADMatDiffusion
variable = potential
diffusivity = aluminum_electrical_conductivity
extra_vector_tags = 'ref'
block = 'right_block'
[]
[]
[BCs]
[temperature_left]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'moving_block_left'
[]
[temperature_right]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'fixed_block_right'
[]
[electric_left]
type = ADDirichletBC
variable = potential
value = 0.0
boundary = moving_block_left
[]
[electric_right]
type = ADDirichletBC
variable = potential
value = 3.0e-1
boundary = fixed_block_right
[]
[]
[Constraints]
[thermal_contact]
type = ModularGapConductanceConstraint
variable = temperature_interface_lm
secondary_variable = temperature
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
gap_flux_models = 'closed_temperature'
[]
[electrical_contact]
type = ModularGapConductanceConstraint
variable = potential_interface_lm
secondary_variable = potential
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
gap_flux_models = 'closed_electric'
[]
[interface_heating]
type = ADInterfaceJouleHeatingConstraint
potential_lagrange_multiplier = potential_interface_lm
secondary_variable = temperature
primary_electrical_conductivity = steel_electrical_conductivity
secondary_electrical_conductivity = aluminum_electrical_conductivity
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
[]
[]
[Materials]
[steel_thermal_properties]
type = ADGenericConstantMaterial
prop_names = 'steel_density steel_thermal_conductivity steel_heat_capacity steel_electrical_conductivity steel_hardness'
prop_values = '8e3 16.2 500.0 1.39e6 1.0' ## for stainless steel 304
block = 'left_block interface_secondary_subdomain'
[]
[aluminum_thermal_properties]
type = ADGenericConstantMaterial
prop_names = 'aluminum_density aluminum_thermal_conductivity aluminum_heat_capacity aluminum_electrical_conductivity aluminum_hardness'
prop_values = ' 2.7e3 210 900.0 3.7e7 1.0' #for 99% pure Al
block = 'left_block right_block interface_secondary_subdomain'
[]
[]
[UserObjects]
[closed_temperature]
type = GapFluxModelPressureDependentConduction
primary_conductivity = steel_thermal_conductivity
secondary_conductivity = aluminum_thermal_conductivity
temperature = temperature
contact_pressure = interface_normal_lm
primary_hardness = steel_hardness
secondary_hardness = aluminum_hardness
boundary = moving_block_right
[]
[closed_electric]
type = GapFluxModelPressureDependentConduction
primary_conductivity = steel_electrical_conductivity
secondary_conductivity = aluminum_electrical_conductivity
temperature = potential
contact_pressure = interface_normal_lm
primary_hardness = steel_hardness
secondary_hardness = aluminum_hardness
boundary = moving_block_right
[]
[]
[Postprocessors]
[steel_interface_temperature]
type = AverageNodalVariableValue
variable = temperature
block = interface_primary_subdomain
[]
[aluminum_interface_temperature]
type = AverageNodalVariableValue
variable = temperature
block = interface_secondary_subdomain
[]
[interface_heat_flux_steel]
type = ADSideDiffusiveFluxAverage
variable = temperature
boundary = moving_block_right
diffusivity = steel_thermal_conductivity
[]
[interface_heat_flux_aluminum]
type = ADSideDiffusiveFluxAverage
variable = temperature
boundary = fixed_block_left
diffusivity = aluminum_thermal_conductivity
[]
[interface_electrical_flux]
type = ADSideDiffusiveFluxAverage
variable = potential
boundary = fixed_block_left
diffusivity = aluminum_electrical_conductivity
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = false
line_search = 'none'
nl_abs_tol = 1e-8
nl_rel_tol = 1e-4
nl_max_its = 100
nl_forced_its = 1
dt = 1200.0
dtmin = 1200.0
num_steps = 8
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/combined/test/tests/restart-transient-from-ss-with-stateful/sub_tr.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
nx = 8
ny = 8
xmin = -82.627
xmax = 82.627
ymin = -82.627
ymax = 82.627
dim = 2
[]
[./extra_nodes_x]
type = ExtraNodesetGenerator
input = 'gen'
new_boundary = 'no_x'
coord = '0 82.627 0'
[../]
[./extra_nodes_y]
type = ExtraNodesetGenerator
input = 'extra_nodes_x'
new_boundary = 'no_y'
coord = '-82.627 0 0'
[../]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[AuxVariables]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
# FINITE strain when strain is large, i.e., visible movement.
# SMALL strain when things are stressed, but may not move.
[./fuel]
add_variables = true
strain = FINITE
temperature = temp
eigenstrain_names = 'thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy hydrostatic_stress max_principal_stress strain_xy elastic_strain_xx stress_xy'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
incremental = true
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 'no_x'
value = 0.0
preset = true
[../]
[./no_y]
type = DirichletBC
preset = true
variable = disp_y
boundary = 'no_y'
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3e10 # Pa
poissons_ratio = 0.33 # unitless
[../]
[./thermal_strains]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 2e-6 # 1/K
stress_free_temperature = 500 # K
eigenstrain_name = 'thermal_eigenstrain'
[../]
[./stress_finite] # goes with FINITE strain formulation
type = ComputeFiniteStrainElasticStress
[../]
[]
[Postprocessors]
[./avg_temp]
type = ElementAverageValue
variable = temp
execute_on = 'initial timestep_end'
[../]
[./disp_x_max_element]
type = ElementExtremeValue
value_type = max
variable = disp_x
execute_on = 'initial timestep_end'
[../]
[./disp_y_max_element]
type = ElementExtremeValue
value_type = max
variable = disp_y
execute_on = 'initial timestep_end'
[../]
[./disp_x_max_nodal]
type = NodalExtremeValue
value_type = max
variable = disp_x
execute_on = 'initial timestep_end'
[../]
[./disp_y_max_nodal]
type = NodalExtremeValue
value_type = max
variable = disp_y
execute_on = 'initial timestep_end'
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 300'
line_search = 'none'
l_tol = 1e-02
nl_rel_tol = 5e-04
nl_abs_tol = 1e-2
l_max_its = 50
nl_max_its = 25
start_time = 0
end_time = 40
dt = 10
[]
[Outputs]
print_linear_residuals = false
perf_graph = true
exodus = true
[]
(modules/heat_transfer/test/tests/interface_heating_mortar/constraint_joule_heating_dual_material_insulated.i)
## Units in the input file: m-Pa-s-K-V
# Using the steady-state Fourier's law, the temperature at the interface in each block,
# in the case where thermal contact between the two blocks at the interface is not
# considered, (steel block on left, aluminum on right) is calculated as:
#
# T_{interface - steel} = 816.849K
# T_{interface - aluminum} = 339.871K
# which matches the simulation results to the 6 decimal places shown.
# As expected, the heat flux resulting from the volumetric Joule heating source is
# equivalent on both sides of the interface.
[Mesh]
[left_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 10
xmax = 0.1
ymin = 0
ymax = 0.5
boundary_name_prefix = moving_block
[]
[left_block]
type = SubdomainIDGenerator
input = left_rectangle
subdomain_id = 1
[]
[right_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 10
xmin = 0.1
xmax = 0.2
ymin = 0
ymax = 0.5
boundary_name_prefix = fixed_block
boundary_id_offset = 4
[]
[right_block]
type = SubdomainIDGenerator
input = right_rectangle
subdomain_id = 2
[]
[two_blocks]
type = MeshCollectionGenerator
inputs = 'left_block right_block'
[]
[block_rename]
type = RenameBlockGenerator
input = two_blocks
old_block = '1 2'
new_block = 'left_block right_block'
[]
[interface_secondary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'fixed_block_left'
new_block_id = 3
new_block_name = 'interface_secondary_subdomain'
input = block_rename
[]
[interface_primary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'moving_block_right'
new_block_id = 4
new_block_name = 'interface_primary_subdomain'
input = interface_secondary_subdomain
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[potential]
[]
[potential_interface_lm]
block = 'interface_secondary_subdomain'
[]
[]
[AuxVariables]
[interface_normal_lm]
order = FIRST
family = LAGRANGE
block = 'interface_secondary_subdomain'
initial_condition = 1.0
[]
[]
[Kernels]
[HeatDiff_steel]
type = ADHeatConduction
variable = temperature
thermal_conductivity = steel_thermal_conductivity
extra_vector_tags = 'ref'
block = 'left_block'
[]
[HeatDiff_aluminum]
type = ADHeatConduction
variable = temperature
thermal_conductivity = aluminum_thermal_conductivity
extra_vector_tags = 'ref'
block = 'right_block'
[]
[electric_steel]
type = ADMatDiffusion
variable = potential
diffusivity = steel_electrical_conductivity
extra_vector_tags = 'ref'
block = 'left_block'
[]
[electric_aluminum]
type = ADMatDiffusion
variable = potential
diffusivity = aluminum_electrical_conductivity
extra_vector_tags = 'ref'
block = 'right_block'
[]
[]
[BCs]
[temperature_left]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'moving_block_left'
[]
[temperature_right]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'fixed_block_right'
[]
[electric_left]
type = ADDirichletBC
variable = potential
value = 0.0
boundary = moving_block_left
[]
[electric_right]
type = ADDirichletBC
variable = potential
value = 3.0e-1
boundary = fixed_block_right
[]
[]
[Constraints]
[electrical_contact]
type = ModularGapConductanceConstraint
variable = potential_interface_lm
secondary_variable = potential
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
gap_flux_models = 'closed_electric'
[]
[interface_heating]
type = ADInterfaceJouleHeatingConstraint
potential_lagrange_multiplier = potential_interface_lm
secondary_variable = temperature
primary_electrical_conductivity = steel_electrical_conductivity
secondary_electrical_conductivity = aluminum_electrical_conductivity
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
[]
[]
[Materials]
[steel_thermal_properties]
type = ADGenericConstantMaterial
prop_names = 'steel_density steel_thermal_conductivity steel_heat_capacity steel_electrical_conductivity steel_hardness'
prop_values = '8e3 16.2 500.0 1.39e6 1.0' ## for stainless steel 304
block = 'left_block interface_secondary_subdomain'
[]
[aluminum_thermal_properties]
type = ADGenericConstantMaterial
prop_names = 'aluminum_density aluminum_thermal_conductivity aluminum_heat_capacity aluminum_electrical_conductivity aluminum_hardness'
prop_values = ' 2.7e3 210 900.0 3.7e7 1.0' #for 99% pure Al
block = 'left_block right_block interface_secondary_subdomain'
[]
[]
[UserObjects]
[closed_electric]
type = GapFluxModelPressureDependentConduction
primary_conductivity = steel_electrical_conductivity
secondary_conductivity = aluminum_electrical_conductivity
temperature = potential
contact_pressure = interface_normal_lm
primary_hardness = steel_hardness
secondary_hardness = aluminum_hardness
boundary = moving_block_right
[]
[]
[Postprocessors]
[steel_interface_temperature]
type = AverageNodalVariableValue
variable = temperature
block = interface_primary_subdomain
[]
[aluminum_interface_temperature]
type = AverageNodalVariableValue
variable = temperature
block = interface_secondary_subdomain
[]
[interface_heat_flux_steel]
type = ADSideDiffusiveFluxAverage
variable = temperature
boundary = moving_block_right
diffusivity = steel_thermal_conductivity
[]
[interface_heat_flux_aluminum]
type = ADSideDiffusiveFluxAverage
variable = temperature
boundary = fixed_block_left
diffusivity = aluminum_thermal_conductivity
[]
[interface_electrical_flux]
type = ADSideDiffusiveFluxAverage
variable = potential
boundary = fixed_block_left
diffusivity = aluminum_electrical_conductivity
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
automatic_scaling = false
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-6
nl_max_its = 100
nl_forced_its = 1
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/contact/test/tests/verification/patch_tests/brick_2/brick2_mu_0_2_pen.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick2_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./diag_saved_z]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./inc_slip_z]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./accum_slip_z]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[./tang_force_z]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y saved_z'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x7]
type = NodalVariableValue
nodeid = 6
variable = disp_x
[../]
[./disp_x26]
type = NodalVariableValue
nodeid = 25
variable = disp_x
[../]
[./disp_y7]
type = NodalVariableValue
nodeid = 6
variable = disp_y
[../]
[./disp_y26]
type = NodalVariableValue
nodeid = 25
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-8
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-5
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '1 3 4 5'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
file_base = brick2_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = brick2_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x7 disp_y7 disp_x26 disp_y26 stress_yy stress_zz top_react_x top_react_y x_disp y_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+7
[../]
[]
(modules/contact/test/tests/mortar_cartesian_lms/cylinder_friction_cartesian_vcp.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = hertz_cyl_coarser.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10001
new_block_name = 'secondary_lower'
sidesets = '3'
input = input_file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10000
sidesets = '2'
new_block_name = 'primary_lower'
input = secondary
[]
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
converge_on = 'disp_x disp_y'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[lm_x]
block = 'secondary_lower'
use_dual = true
scaling = 1.0e-5
[]
[lm_y]
block = 'secondary_lower'
use_dual = true
scaling = 1.0e-5
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[saved_x]
[]
[saved_y]
[]
[diag_saved_x]
[]
[diag_saved_y]
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. -0.020 -0.020'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. 0.0 0.015'
[]
[]
[Modules/TensorMechanics/Master]
[all]
incremental = false
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
block = '1 2 3 4 5 6 7'
strain = SMALL
add_variables = false
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[]
[Postprocessors]
[bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[]
[bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[]
[top_react_x]
type = NodalSum
variable = saved_x
boundary = 4
[]
[top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[]
[_dt]
type = TimestepSize
[]
[]
[BCs]
[side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[]
[bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2 3 4 5 6 7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[stuff1_stress]
type = ComputeLinearElasticStress
block = '1'
[]
[stuff2_stress]
type = ComputeLinearElasticStress
block = '2 3 4 5 6 7'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'NONZERO 1e-12'
line_search = 'none'
nl_abs_tol = 1e-7
l_max_its = 5
nl_rel_tol = 1e-09
start_time = -0.1
end_time = 0.3 # 3.5
l_tol = 1e-8
dt = 0.1
dtmin = 0.001
[]
[Preconditioning]
[vcp]
type = VCP
full = true
lm_variable = 'lm_x lm_y'
primary_variable = 'disp_x disp_y'
preconditioner = 'LU'
is_lm_coupling_diagonal = false
adaptive_condensation = true
[]
[]
[VectorPostprocessors]
[x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4'
sort_by = id
[]
[y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4'
sort_by = id
[]
[lm_x]
type = NodalValueSampler
variable = lm_x
boundary = '3'
sort_by = id
[]
[lm_y]
type = NodalValueSampler
variable = lm_y
boundary = '3'
sort_by = id
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = true
csv = false
[console]
type = Console
max_rows = 5
[]
[chkfile]
type = CSV
show = 'x_disp y_disp lm_x lm_y'
file_base = cylinder_friction_check
create_final_symlink = true
execute_on = 'FINAL'
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeFrictionalForceCartesianLMMechanicalContact
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
lm_x = lm_x
lm_y = lm_y
variable = lm_x
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
correct_edge_dropping = false
mu = 0.4
c_t = 1.0e6
c = 1.0e6
[]
[x]
type = CartesianMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
variable = lm_x
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
correct_edge_dropping = false
[]
[y]
type = CartesianMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
variable = lm_y
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
correct_edge_dropping = false
[]
[]
(modules/scalar_transport/test/tests/multiple-species/multiple-species.i)
Krht = 1
Krtt = 1
Krhh = 1
Kdh2 = 1
Kdt2 = 1
Kdht = 1
Ph2_left = 1
Pt2_left = 2
Pht_left = 3
Ph2_right = 0
Pt2_right = 0
Pht_right = 0
d_h = 1
d_t = 1
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = ref
[]
[Variables]
[h]
[]
[t]
[]
[]
[Kernels]
[time_h]
type = TimeDerivative
variable = h
extra_vector_tags = ref
[]
[diff_h]
type = MatDiffusion
variable = h
diffusivity = ${d_h}
extra_vector_tags = ref
[]
[time_t]
type = TimeDerivative
variable = t
extra_vector_tags = ref
[]
[diff_t]
type = MatDiffusion
variable = t
diffusivity = ${d_t}
extra_vector_tags = ref
[]
[]
[BCs]
[ht_h_left]
type = BinaryRecombinationBC
variable = h
v = t
Kr = Krht
boundary = left
[]
[ht_t_left]
type = BinaryRecombinationBC
variable = t
v = h
Kr = Krht
boundary = left
[]
[hh_left]
type = BinaryRecombinationBC
variable = h
v = h
Kr = Krhh
boundary = left
[]
[tt_left]
type = BinaryRecombinationBC
variable = t
v = t
Kr = Krtt
boundary = left
[]
[h_from_h2_left]
type = DissociationFluxBC
variable = h
v = ${Ph2_left} # Partial pressure of H2
Kd = Kdh2
boundary = left
[]
[t_from_t2_left]
type = DissociationFluxBC
variable = t
v = ${Pt2_left} # Partial pressure of T2
Kd = Kdt2
boundary = left
[]
[h_from_ht_left]
type = DissociationFluxBC
variable = h
v = ${Pht_left} # Partial pressure of HT
Kd = Kdht
boundary = left
[]
[t_from_ht_left]
type = DissociationFluxBC
variable = t
v = ${Pht_left} # Partial pressure of HT
Kd = Kdht
boundary = left
[]
[ht_h_right]
type = BinaryRecombinationBC
variable = h
v = t
Kr = Krht
boundary = right
[]
[ht_t_right]
type = BinaryRecombinationBC
variable = t
v = h
Kr = Krht
boundary = right
[]
[hh_right]
type = BinaryRecombinationBC
variable = h
v = h
Kr = Krhh
boundary = right
[]
[tt_right]
type = BinaryRecombinationBC
variable = t
v = t
Kr = Krtt
boundary = right
[]
[h_from_h2_right]
type = DissociationFluxBC
variable = h
v = ${Ph2_right} # Partial pressure of H2
Kd = Kdh2
boundary = right
[]
[t_from_t2_right]
type = DissociationFluxBC
variable = t
v = ${Pt2_right} # Partial pressure of T2
Kd = Kdt2
boundary = right
[]
[h_from_ht_right]
type = DissociationFluxBC
variable = h
v = ${Pht_right} # Partial pressure of HT
Kd = Kdht
boundary = right
[]
[t_from_ht_right]
type = DissociationFluxBC
variable = t
v = ${Pht_right} # Partial pressure of HT
Kd = Kdht
boundary = right
[]
[]
[Materials]
[Krht]
type = ADConstantMaterial
property_name = 'Krht'
value = '${Krht}'
[]
[Krhh]
type = ADConstantMaterial
property_name = 'Krhh'
value = '${Krhh}'
[]
[Krtt]
type = ADConstantMaterial
property_name = 'Krtt'
value = '${Krtt}'
[]
[Kdh2]
type = ADConstantMaterial
property_name = 'Kdh2'
value = '${Kdh2}'
[]
[Kdt2]
type = ADConstantMaterial
property_name = 'Kdt2'
value = '${Kdt2}'
[]
[Kdht]
type = ADConstantMaterial
property_name = 'Kdht'
value = '${Kdht}'
[]
[]
[Postprocessors]
[downstream_h_flux]
type = SideFluxAverage
variable = h
boundary = right
diffusivity = ${d_h}
[]
[downstream_t_flux]
type = SideFluxAverage
variable = t
boundary = right
diffusivity = ${d_t}
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
num_steps = 1000
steady_state_detection = true
steady_state_tolerance = 3e-08
dt = .1
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/interface_heating_mortar/constraint_joule_heating_dual_material.i)
## Units in the input file: m-Pa-s-K-V
[Mesh]
[left_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 10
xmax = 0.1
ymin = 0
ymax = 0.5
boundary_name_prefix = moving_block
[]
[left_block]
type = SubdomainIDGenerator
input = left_rectangle
subdomain_id = 1
[]
[right_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 10
xmin = 0.1
xmax = 0.2
ymin = 0
ymax = 0.5
boundary_name_prefix = fixed_block
boundary_id_offset = 4
[]
[right_block]
type = SubdomainIDGenerator
input = right_rectangle
subdomain_id = 2
[]
[two_blocks]
type = MeshCollectionGenerator
inputs = 'left_block right_block'
[]
[block_rename]
type = RenameBlockGenerator
input = two_blocks
old_block = '1 2'
new_block = 'left_block right_block'
[]
[interface_secondary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'fixed_block_left'
new_block_id = 3
new_block_name = 'interface_secondary_subdomain'
input = block_rename
[]
[interface_primary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'moving_block_right'
new_block_id = 4
new_block_name = 'interface_primary_subdomain'
input = interface_secondary_subdomain
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[temperature_interface_lm]
block = 'interface_secondary_subdomain'
[]
[potential]
[]
[potential_interface_lm]
block = 'interface_secondary_subdomain'
[]
[]
[AuxVariables]
[interface_normal_lm]
order = FIRST
family = LAGRANGE
block = 'interface_secondary_subdomain'
initial_condition = 1.0
[]
[]
[Kernels]
[HeatDiff_steel]
type = ADHeatConduction
variable = temperature
thermal_conductivity = steel_thermal_conductivity
extra_vector_tags = 'ref'
block = 'left_block'
[]
[HeatDiff_aluminum]
type = ADHeatConduction
variable = temperature
thermal_conductivity = aluminum_thermal_conductivity
extra_vector_tags = 'ref'
block = 'right_block'
[]
[electric_steel]
type = ADMatDiffusion
variable = potential
diffusivity = steel_electrical_conductivity
extra_vector_tags = 'ref'
block = 'left_block'
[]
[electric_aluminum]
type = ADMatDiffusion
variable = potential
diffusivity = aluminum_electrical_conductivity
extra_vector_tags = 'ref'
block = 'right_block'
[]
[]
[BCs]
[temperature_left]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'moving_block_left'
[]
[temperature_right]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'fixed_block_right'
[]
[electric_left]
type = ADDirichletBC
variable = potential
value = 0.0
boundary = moving_block_left
[]
[electric_right]
type = ADDirichletBC
variable = potential
value = 3.0e-1
boundary = fixed_block_right
[]
[]
[Constraints]
[thermal_contact]
type = ModularGapConductanceConstraint
variable = temperature_interface_lm
secondary_variable = temperature
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
gap_flux_models = 'closed_temperature'
[]
[electrical_contact]
type = ModularGapConductanceConstraint
variable = potential_interface_lm
secondary_variable = potential
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
gap_flux_models = 'closed_electric'
[]
[interface_heating]
type = ADInterfaceJouleHeatingConstraint
potential_lagrange_multiplier = potential_interface_lm
secondary_variable = temperature
primary_electrical_conductivity = steel_electrical_conductivity
secondary_electrical_conductivity = aluminum_electrical_conductivity
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
[]
[]
[Materials]
[steel_thermal_properties]
type = ADGenericConstantMaterial
prop_names = 'steel_density steel_thermal_conductivity steel_heat_capacity steel_electrical_conductivity steel_hardness'
prop_values = '8e3 16.2 500.0 1.39e6 1.0' ## for stainless steel 304
block = 'left_block interface_secondary_subdomain'
[]
[aluminum_thermal_properties]
type = ADGenericConstantMaterial
prop_names = 'aluminum_density aluminum_thermal_conductivity aluminum_heat_capacity aluminum_electrical_conductivity aluminum_hardness'
prop_values = ' 2.7e3 210 900.0 3.7e7 1.0' #for 99% pure Al
block = 'left_block right_block interface_secondary_subdomain'
[]
[]
[UserObjects]
[closed_temperature]
type = GapFluxModelPressureDependentConduction
primary_conductivity = steel_thermal_conductivity
secondary_conductivity = aluminum_thermal_conductivity
temperature = temperature
contact_pressure = interface_normal_lm
primary_hardness = steel_hardness
secondary_hardness = aluminum_hardness
boundary = moving_block_right
[]
[closed_electric]
type = GapFluxModelPressureDependentConduction
primary_conductivity = steel_electrical_conductivity
secondary_conductivity = aluminum_electrical_conductivity
temperature = potential
contact_pressure = interface_normal_lm
primary_hardness = steel_hardness
secondary_hardness = aluminum_hardness
boundary = moving_block_right
[]
[]
[Postprocessors]
[steel_interface_temperature]
type = AverageNodalVariableValue
variable = temperature
block = interface_primary_subdomain
[]
[aluminum_interface_temperature]
type = AverageNodalVariableValue
variable = temperature
block = interface_secondary_subdomain
[]
[interface_heat_flux_steel]
type = ADSideDiffusiveFluxAverage
variable = temperature
boundary = moving_block_right
diffusivity = steel_thermal_conductivity
[]
[interface_heat_flux_aluminum]
type = ADSideDiffusiveFluxAverage
variable = temperature
boundary = fixed_block_left
diffusivity = aluminum_thermal_conductivity
[]
[interface_electrical_flux]
type = ADSideDiffusiveFluxAverage
variable = potential
boundary = fixed_block_left
diffusivity = aluminum_electrical_conductivity
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
automatic_scaling = false
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-6
nl_max_its = 100
nl_forced_its = 1
[]
[Outputs]
csv = true
perf_graph = true
[]
(test/tests/problems/reference_residual_problem/reference_residual.i)
coef=1
[Mesh]
type = GeneratedMesh
dim = 1
nx = 2
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[u][]
[v][]
[]
[Kernels]
[u_diff]
type = CoefDiffusion
variable = u
coef = ${coef}
[]
[u_rxn]
type = PReaction
variable = u
coefficient = ${coef}
power = 2
[]
[u_f]
type = BodyForce
variable = u
value = ${coef}
[]
[v_diff]
type = Diffusion
variable = v
[]
[v_rxn]
type = PReaction
variable = v
coefficient = 1
power = 2
[]
[v_f]
type = BodyForce
variable = v
value = 1
[]
[]
[BCs]
[u]
type = RobinBC
boundary = 'left right'
coef = ${coef}
variable = u
extra_vector_tags = 'ref'
[]
[v]
type = RobinBC
boundary = 'left right'
coef = 1
variable = v
extra_vector_tags = 'ref'
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/cavity_pressure/rz_abs_ref.i)
#
# Cavity Pressure Test
#
# This test is designed to compute an internal pressure based on
# p = n * R * T / V
# where
# p is the pressure
# n is the amount of material in the volume (moles)
# R is the universal gas constant
# T is the temperature
# V is the volume
#
# The mesh is composed of one block (2) with an interior cavity of volume 8.
# Block 1 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts T in the following way:
# T => T0 + beta * t
# with
# beta = T0
# T0 = 240.54443866068704
# V0 = 7
# n0 = f(p0)
# p0 = 100
# R = 8.314472 J * K^(-1) * mol^(-1)
#
# So, n0 = p0 * V0 / R / T0 = 100 * 7 / 8.314472 / 240.544439
# = 0.35
#
# At t = 1, p = 200.
[Problem]
coord_type = RZ
type = ReferenceResidualProblem
reference_vector = ref
extra_tag_vectors = ref
[]
[GlobalParams]
displacements = 'disp_r disp_z'
absolute_value_vector_tags = ref
[]
[Mesh]
file = rz.e
[]
[Functions]
[temperature]
type = PiecewiseLinear
x = '0 1'
y = '1 2'
scale_factor = 240.54443866068704
[]
[]
[Variables]
[disp_r]
[]
[disp_z]
[]
[temp]
initial_condition = 240.54443866068704
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
[]
[heat]
type = Diffusion
variable = temp
use_displaced_mesh = true
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_r
boundary = '1 2'
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_z
boundary = '1 2'
value = 0.0
[]
[temperatureInterior]
type = FunctionDirichletBC
boundary = 2
function = temperature
variable = temp
[]
[CavityPressure]
[1]
boundary = 2
initial_pressure = 100
R = 8.314472
temperature = aveTempInterior
volume = internalVolume
startup_time = 0.5
output = ppress
[]
[]
[]
[Materials]
[elastic_tensor1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
block = 1
[]
[strain1]
type = ComputeAxisymmetricRZFiniteStrain
block = 1
[]
[stress1]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[elastic_tensor2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
block = 2
[]
[strain2]
type = ComputeAxisymmetricRZFiniteStrain
block = 2
[]
[stress2]
type = ComputeFiniteStrainElasticStress
block = 2
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_abs_tol = 1e-10
l_max_its = 20
dt = 0.5
end_time = 1.0
[]
[Postprocessors]
[internalVolume]
type = InternalVolume
boundary = 2
execute_on = 'initial linear'
[]
[aveTempInterior]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial linear'
[]
[]
[Outputs]
exodus = true
[checkpoint]
type = Checkpoint
num_files = 1
[]
[]
(modules/contact/test/tests/verification/patch_tests/plane_4/plane4_template1.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane4_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_y9]
type = NodalVariableValue
nodeid = 8
variable = disp_y
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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 = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalSmallStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalSmallStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x9 disp_y9 disp_x16 disp_y16 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/rom_stress_update/3tile_strain.i)
# This is a test to check that changing the finite_difference_width does indeed change convergence
# The number of nonlinear iterations should be greater a width of 1e-20 than 1e-2
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[temperature]
initial_condition = 920
[]
[]
[AuxKernels]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
generate_output = 'vonmises_stress'
extra_vector_tags = 'ref'
[]
[]
[BCs]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[pull_x]
type = DirichletBC
variable = disp_x
boundary = right
value = 5e-4
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
inelastic_models = rom_stress_prediction
[]
[rom_stress_prediction]
type = LAROMANCE3TileTest
temperature = temperature
outputs = all
initial_cell_dislocation_density = 5.7e12
initial_wall_dislocation_density = 4.83e11
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
dt = 1e-5
num_steps = 5
[]
[Postprocessors]
[extrapolation]
type = ElementAverageValue
variable = ROM_extrapolation
outputs = console
[]
[temperature]
type = ElementAverageValue
variable = temperature
outputs = 'console'
[]
[partition_weight]
type = ElementAverageMaterialProperty
mat_prop = partition_weight
outputs = 'console'
[]
[creep_rate]
type = ElementAverageMaterialProperty
mat_prop = creep_rate
[]
[rhom_rate]
type = ElementAverageMaterialProperty
mat_prop = cell_dislocation_rate
outputs = 'console'
[]
[rhoi_rate]
type = ElementAverageMaterialProperty
mat_prop = wall_dislocation_rate
outputs = 'console'
[]
[vonmises]
type = ElementAverageValue
variable = vonmises_stress
outputs = 'console'
[]
[nl_its]
type = NumNonlinearIterations
outputs = none
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
outputs = 'console'
[]
[]
[Outputs]
csv = true
perf_graph = true
[]
(test/tests/problems/reference_residual_problem/ad_abs_ref.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
[]
[GlobalParams]
absolute_value_vector_tags = 'absref'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'absref'
extra_tag_vectors = 'absref'
[]
[Variables]
[u][]
[v]
scaling = 1e-6
[]
[]
[Functions]
[ramp]
type = ParsedFunction
expression = 'if(t < 5, t - 5, 0) * x'
[]
[]
[Kernels]
[u_dt]
type = ADTimeDerivative
variable = u
[]
[u_coupled_rx]
type = ADCoupledForce
variable = u
v = v
coef = 1
[]
[v_dt]
type = ADTimeDerivative
variable = v
[]
[v_neg_force]
type = ADBodyForce
variable = v
value = ${fparse -1 / 2}
function = ramp
[]
[v_force]
type = ADBodyForce
variable = v
value = 1
function = ramp
[]
[]
[Postprocessors]
[u_avg]
type = ElementAverageValue
variable = u
execute_on = 'TIMESTEP_END INITIAL'
[]
[v_avg]
type = ElementAverageValue
variable = v
execute_on = 'TIMESTEP_END INITIAL'
[]
[timestep]
type = TimePostprocessor
outputs = 'none'
[]
[v_old]
type = ElementAverageValue
variable = v
execute_on = TIMESTEP_BEGIN
outputs = none
[]
[u_old]
type = ElementAverageValue
variable = u
execute_on = TIMESTEP_BEGIN
outputs = none
[]
[v_exact]
type = ParsedPostprocessor
pp_names = 'timestep v_old'
function = 't := if(timestep > 5, 5, timestep); (t^2 - 9 * t) / 8'
[]
[u_exact]
type = ParsedPostprocessor
pp_names = 'u_old v_exact'
function = 'u_old + v_exact'
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = none
num_steps = 10
nl_rel_tol = 1e-06
verbose = true
[]
[Outputs]
csv = true
[]
(modules/contact/test/tests/verification/hertz_cyl/quart_symm_q8/hertz_cyl_qsym_1deg_template1.i)
[GlobalParams]
order = SECOND
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Mesh]
file = hertz_cyl_qsym_1deg_q8.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Functions]
[./disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. -0.0020 -0.0020'
[../]
[./disp_ramp_zero]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 0.0 0.0'
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 4
paired_boundary = 3
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./disp_x281]
type = NodalVariableValue
nodeid = 280
variable = disp_x
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_y
boundary = '1 3'
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2 3'
value = 0.0
[../]
[./top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 5
function = disp_ramp_vert
[../]
[]
[Materials]
[./stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[../]
[./stuff1_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff2_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[./stuff3_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '3'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff3_strain]
type = ComputeFiniteStrain
block = '3'
[../]
[./stuff3_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[../]
[./stuff4_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '4'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff4_strain]
type = ComputeFiniteStrain
block = '4'
[../]
[./stuff4_stress]
type = ComputeFiniteStrainElasticStress
block = '4'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-7
nl_rel_tol = 1e-6
l_max_its = 50
nl_max_its = 100
start_time = 0.0
dt = 0.1
dtmin = 0.1
num_steps = 10
end_time = 1.0
l_tol = 1e-4
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4 5'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4 5'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '4'
sort_by = id
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x281 top_react_x top_react_y x_disp y_disp cont_press'
start_time = 0.9
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./interface]
primary = 3
secondary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+11
[../]
[]
(modules/scalar_transport/test/tests/multiple-species/single-specie.i)
Krtt=0.
Kdt2=1
Pt2_left=1
Pt2_right=0
d_t=1
l=1
[Mesh]
type = GeneratedMesh
dim = 1
nx = 20
xmax = ${l}
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = ref
[]
[Variables]
[t][]
[]
[Kernels]
[time_t]
type = TimeDerivative
variable = t
extra_vector_tags = ref
[]
[diff_t]
type = MatDiffusion
variable = t
diffusivity = ${d_t}
extra_vector_tags = ref
[]
[]
[BCs]
[tt_recombination]
type = BinaryRecombinationBC
variable = t
v = t
Kr = Krtt
boundary = 'left right'
[]
[t_from_t2_left]
type = DissociationFluxBC
variable = t
v = ${Pt2_left} # Partial pressure of T2
Kd = Kdt2
boundary = left
[]
[t_from_t2_right]
type = DissociationFluxBC
variable = t
v = ${Pt2_right} # Partial pressure of T2
Kd = Kdt2
boundary = right
[]
[]
[Materials]
[Krtt]
type = ADConstantMaterial
property_name = 'Krtt'
value = ${Krtt}
[]
[Kdt2]
type = ADConstantMaterial
property_name = 'Kdt2'
value = '${Kdt2}'
[]
[]
[Postprocessors]
[downstream_t_flux]
type = SideFluxAverage
variable = t
boundary = right
diffusivity = ${d_t}
[]
[downstream_t_conc]
type = SideAverageValue
variable = t
boundary = right
outputs = 'none'
[]
[upstream_t_conc]
type = SideAverageValue
variable = t
boundary = left
outputs = 'none'
[]
[difference]
type = DifferencePostprocessor
value1 = upstream_t_conc
value2 = downstream_t_conc
outputs = 'none'
[]
[domain_averaged_flux]
type = ScalePostprocessor
scaling_factor = ${fparse d_t / l}
value = difference
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
num_steps = 40
steady_state_detection = true
dt = .1
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/normalized_penalty/normalized_penalty_kin.i)
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Mesh]
file = normalized_penalty.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Functions]
[./left_x]
type = PiecewiseLinear
x = '0 1 2'
y = '0 0.02 0'
[../]
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
generate_output = 'stress_xx'
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[./m3_s2]
primary = 3
secondary = 2
penalty = 1e10
normalize_penalty = true
tangential_tolerance = 1e-3
[../]
[]
[BCs]
[./left_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 1
function = left_x
[../]
[./y]
type = DirichletBC
variable = disp_y
boundary = '1 2 3 4'
value = 0.0
[../]
[./right]
type = DirichletBC
variable = disp_x
boundary = '3 4'
value = 0
[../]
[]
[Materials]
[./stiffStuff1]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 1000'
youngs_modulus = 3e8
poissons_ratio = 0.0
[../]
[./stiffStuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 1000'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_rel_tol = 1e-12
nl_abs_tol = 3e-8
l_max_its = 100
nl_max_its = 20
dt = 0.5
num_steps = 4
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/mortar_cartesian_lms/cylinder_friction_cartesian.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = hertz_cyl_coarser.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10001
new_block_name = 'secondary_lower'
sidesets = '3'
input = input_file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10000
sidesets = '2'
new_block_name = 'primary_lower'
input = secondary
[]
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
converge_on = 'disp_x disp_y'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[lm_x]
block = 'secondary_lower'
use_dual = true
scaling = 1.0e-5
[]
[lm_y]
block = 'secondary_lower'
use_dual = true
scaling = 1.0e-5
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[saved_x]
[]
[saved_y]
[]
[diag_saved_x]
[]
[diag_saved_y]
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. -0.020 -0.020'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. 0.0 0.015'
[]
[]
[Modules/TensorMechanics/Master]
[all]
incremental = false
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
block = '1 2 3 4 5 6 7'
strain = SMALL
add_variables = false
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[]
[Postprocessors]
[bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[]
[bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[]
[top_react_x]
type = NodalSum
variable = saved_x
boundary = 4
[]
[top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[]
[_dt]
type = TimestepSize
[]
[]
[BCs]
[side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[]
[bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2 3 4 5 6 7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[stuff1_stress]
type = ComputeLinearElasticStress
block = '1'
[]
[stuff2_stress]
type = ComputeLinearElasticStress
block = '2 3 4 5 6 7'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -pc_svd_monitor '
'-snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu NONZERO 1e-12'
line_search = 'none'
nl_abs_tol = 1e-7
l_max_its = 5
nl_rel_tol = 1e-09
start_time = -0.1
end_time = 0.3 # 3.5
l_tol = 1e-8
dt = 0.1
dtmin = 0.001
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4'
sort_by = id
[]
[y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4'
sort_by = id
[]
[lm_x]
type = NodalValueSampler
variable = lm_x
boundary = '3'
sort_by = id
[]
[lm_y]
type = NodalValueSampler
variable = lm_y
boundary = '3'
sort_by = id
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = true
csv = false
[console]
type = Console
max_rows = 5
[]
[chkfile]
type = CSV
show = 'x_disp y_disp lm_x lm_y'
file_base = cylinder_friction_check
create_final_symlink = true
execute_on = 'FINAL'
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeFrictionalForceCartesianLMMechanicalContact
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
lm_x = lm_x
lm_y = lm_y
variable = lm_x
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
correct_edge_dropping = false
mu = 0.4
c_t = 1.0e6
c = 1.0e6
[]
[x]
type = CartesianMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
variable = lm_x
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
correct_edge_dropping = false
[]
[y]
type = CartesianMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
variable = lm_y
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
correct_edge_dropping = false
[]
[]
(modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_first/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_rr'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[block]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'block'
extra_vector_tags = 'ref'
[]
[plank]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[swell]
type = ADComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[]
[swell_mat]
type = ADGenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-12
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_first/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_rr'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank block'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-7
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/geomsearch/patch_update_strategy/always-grid-sequence.i)
[Mesh]
type = FileMesh
file = long_range_coarse.e
dim = 2
patch_update_strategy = always
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
solution_variables = 'u'
[]
[Variables]
[./u]
[../]
[]
[AuxVariables]
[./linear_field]
[../]
[./receiver]
# The field to transfer into
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[./elemental_reciever]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./diff]
type = CoefDiffusion
variable = u
coef = 1
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./linear_in_y]
# This just gives us something to transfer that varies in y so we can ensure the transfer is working properly...
type = FunctionAux
variable = linear_field
function = y
execute_on = initial
[../]
[./right_to_left]
type = GapValueAux
variable = receiver
paired_variable = linear_field
paired_boundary = rightleft
execute_on = 'nonlinear timestep_end'
boundary = leftright
[../]
[./y_displacement]
type = FunctionAux
variable = disp_y
function = t
execute_on = 'linear timestep_begin'
block = left
[../]
[./elemental_right_to_left]
type = GapValueAux
variable = elemental_reciever
paired_variable = linear_field
paired_boundary = rightleft
boundary = leftright
[../]
[]
[BCs]
[./top]
type = FunctionDirichletBC
variable = u
boundary = 'lefttop righttop'
function = 't'
[../]
[./bottom]
type = DirichletBC
variable = u
boundary = 'leftbottom rightbottom'
value = 0
[../]
[]
[Executioner]
type = Transient
num_steps = 3
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
num_grids = 2
[]
[Outputs]
exodus = true
[]
[Postprocessors]
[num_nl]
type = NumNonlinearIterations
[]
[total_nl]
type = CumulativeValuePostprocessor
postprocessor = num_nl
[]
[]
(modules/heat_transfer/test/tests/interface_heating_mortar/constraint_joule_heating_single_material.i)
## Units in the input file: m-Pa-s-K-V
[Mesh]
[left_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 10
xmax = 0.1
ymin = 0
ymax = 0.5
boundary_name_prefix = moving_block
[]
[left_block]
type = SubdomainIDGenerator
input = left_rectangle
subdomain_id = 1
[]
[right_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 10
xmin = 0.1
xmax = 0.2
ymin = 0
ymax = 0.5
boundary_name_prefix = fixed_block
boundary_id_offset = 4
[]
[right_block]
type = SubdomainIDGenerator
input = right_rectangle
subdomain_id = 2
[]
[two_blocks]
type = MeshCollectionGenerator
inputs = 'left_block right_block'
[]
[block_rename]
type = RenameBlockGenerator
input = two_blocks
old_block = '1 2'
new_block = 'left_block right_block'
[]
[interface_secondary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'fixed_block_left'
new_block_id = 3
new_block_name = 'interface_secondary_subdomain'
input = block_rename
[]
[interface_primary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'moving_block_right'
new_block_id = 4
new_block_name = 'interface_primary_subdomain'
input = interface_secondary_subdomain
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[potential]
[]
[potential_interface_lm]
block = 'interface_secondary_subdomain'
[]
[temperature_interface_lm]
block = 'interface_secondary_subdomain'
[]
[]
[AuxVariables]
[interface_normal_lm]
order = FIRST
family = LAGRANGE
block = 'interface_secondary_subdomain'
initial_condition = 1.0
[]
[]
[Kernels]
[HeatDiff_aluminum]
type = ADHeatConduction
variable = temperature
thermal_conductivity = aluminum_thermal_conductivity
extra_vector_tags = 'ref'
block = 'left_block right_block'
[]
[electric_aluminum]
type = ADMatDiffusion
variable = potential
diffusivity = aluminum_electrical_conductivity
extra_vector_tags = 'ref'
block = 'left_block right_block'
[]
[]
[BCs]
[temperature_left]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'moving_block_left'
[]
[temperature_right]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'fixed_block_right'
[]
[electric_left]
type = ADDirichletBC
variable = potential
value = 0.0
boundary = moving_block_left
[]
[electric_right]
type = ADDirichletBC
variable = potential
value = 3.0e-1
boundary = fixed_block_right
[]
[]
[Constraints]
[thermal_contact]
type = ModularGapConductanceConstraint
variable = temperature_interface_lm
secondary_variable = temperature
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
gap_flux_models = 'closed_temperature'
[]
[electrical_contact]
type = ModularGapConductanceConstraint
variable = potential_interface_lm
secondary_variable = potential
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
gap_flux_models = 'closed_electric'
[]
[interface_heating]
type = ADInterfaceJouleHeatingConstraint
potential_lagrange_multiplier = potential_interface_lm
secondary_variable = temperature
primary_electrical_conductivity = aluminum_electrical_conductivity
secondary_electrical_conductivity = aluminum_electrical_conductivity
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
[]
[]
[Materials]
[aluminum_thermal_properties]
type = ADGenericConstantMaterial
prop_names = 'aluminum_density aluminum_thermal_conductivity aluminum_heat_capacity aluminum_electrical_conductivity aluminum_hardness'
prop_values = ' 2.7e3 210 900.0 3.7e7 1.0' #for 99% pure Al
block = 'left_block right_block interface_secondary_subdomain'
[]
[]
[UserObjects]
[closed_temperature]
type = GapFluxModelPressureDependentConduction
primary_conductivity = aluminum_thermal_conductivity
secondary_conductivity = aluminum_thermal_conductivity
temperature = temperature
contact_pressure = interface_normal_lm
primary_hardness = aluminum_hardness
secondary_hardness = aluminum_hardness
boundary = moving_block_right
[]
[closed_electric]
type = GapFluxModelPressureDependentConduction
primary_conductivity = aluminum_electrical_conductivity
secondary_conductivity = aluminum_electrical_conductivity
temperature = potential
contact_pressure = interface_normal_lm
primary_hardness = aluminum_hardness
secondary_hardness = aluminum_hardness
boundary = moving_block_right
[]
[]
[Postprocessors]
[aluminum_interface_temperature]
type = AverageNodalVariableValue
variable = temperature
block = interface_secondary_subdomain
[]
[interface_heat_flux_aluminum]
type = ADSideDiffusiveFluxAverage
variable = temperature
boundary = fixed_block_left
diffusivity = aluminum_thermal_conductivity
[]
[aluminum_interface_potential]
type = AverageNodalVariableValue
variable = potential
block = interface_secondary_subdomain
[]
[interface_electrical_flux_aluminum]
type = ADSideDiffusiveFluxAverage
variable = potential
boundary = fixed_block_left
diffusivity = aluminum_electrical_conductivity
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
automatic_scaling = false
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-6
nl_max_its = 50
nl_forced_its = 1
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/heat_transfer/test/tests/interface_heating_mortar/constraint_joule_heating_offset_single_material_insulated.i)
## Units in the input file: m-Pa-s-K-V
[Mesh]
[left_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 100
xmax = 0.1
ymin = 0.1
ymax = 0.35
boundary_name_prefix = moving_block
[]
[left_block]
type = SubdomainIDGenerator
input = left_rectangle
subdomain_id = 1
[]
[right_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 100
xmin = 0.1
xmax = 0.2
ymin = 0
ymax = 0.5
boundary_name_prefix = fixed_block
boundary_id_offset = 4
[]
[right_block]
type = SubdomainIDGenerator
input = right_rectangle
subdomain_id = 2
[]
[two_blocks]
type = MeshCollectionGenerator
inputs = 'left_block right_block'
[]
[block_rename]
type = RenameBlockGenerator
input = two_blocks
old_block = '1 2'
new_block = 'left_block right_block'
[]
[interface_secondary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'fixed_block_left'
new_block_id = 3
new_block_name = 'interface_secondary_subdomain'
input = block_rename
[]
[interface_primary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'moving_block_right'
new_block_id = 4
new_block_name = 'interface_primary_subdomain'
input = interface_secondary_subdomain
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[potential]
[]
[potential_interface_lm]
block = 'interface_secondary_subdomain'
[]
[]
[AuxVariables]
[interface_normal_lm]
order = FIRST
family = LAGRANGE
block = 'interface_secondary_subdomain'
initial_condition = 1.0
[]
[]
[Kernels]
[HeatDiff_aluminum]
type = ADHeatConduction
variable = temperature
thermal_conductivity = aluminum_thermal_conductivity
extra_vector_tags = 'ref'
block = 'left_block right_block'
[]
[electric_aluminum]
type = ADMatDiffusion
variable = potential
diffusivity = aluminum_electrical_conductivity
extra_vector_tags = 'ref'
block = 'left_block right_block'
[]
[]
[BCs]
[temperature_left]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'moving_block_left'
[]
[temperature_right]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'fixed_block_right'
[]
[electric_left]
type = ADDirichletBC
variable = potential
value = 0.0
boundary = moving_block_left
[]
[electric_right]
type = ADDirichletBC
variable = potential
value = 3.0e-1
boundary = fixed_block_right
[]
[]
[Constraints]
[electrical_contact]
type = ModularGapConductanceConstraint
variable = potential_interface_lm
secondary_variable = potential
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
gap_flux_models = 'closed_electric'
correct_edge_dropping = true
[]
[interface_heating]
type = ADInterfaceJouleHeatingConstraint
potential_lagrange_multiplier = potential_interface_lm
secondary_variable = temperature
primary_electrical_conductivity = aluminum_electrical_conductivity
secondary_electrical_conductivity = aluminum_electrical_conductivity
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
[]
[]
[Materials]
[aluminum_thermal_properties]
type = ADGenericConstantMaterial
prop_names = 'aluminum_density aluminum_thermal_conductivity aluminum_heat_capacity aluminum_electrical_conductivity aluminum_hardness'
prop_values = ' 2.7e3 210 900.0 3.7e7 1.0' #for 99% pure Al
block = 'left_block right_block interface_secondary_subdomain'
[]
[]
[UserObjects]
[closed_electric]
type = GapFluxModelPressureDependentConduction
primary_conductivity = aluminum_electrical_conductivity
secondary_conductivity = aluminum_electrical_conductivity
temperature = potential
contact_pressure = interface_normal_lm
primary_hardness = aluminum_hardness
secondary_hardness = aluminum_hardness
boundary = moving_block_right
[]
[]
[Postprocessors]
[interface_heat_flux_large_block]
type = ADSideDiffusiveFluxAverage
variable = temperature
boundary = fixed_block_left
diffusivity = aluminum_thermal_conductivity
[]
[interface_heat_flux_small_block]
type = ADSideDiffusiveFluxAverage
variable = temperature
boundary = moving_block_right
diffusivity = aluminum_thermal_conductivity
[]
[interface_electrical_flux_large_block]
type = ADSideDiffusiveFluxAverage
variable = potential
boundary = fixed_block_left
diffusivity = aluminum_electrical_conductivity
[]
[interface_electrical_flux_small_block]
type = ADSideDiffusiveFluxAverage
variable = potential
boundary = moving_block_right
diffusivity = aluminum_electrical_conductivity
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
automatic_scaling = false
line_search = 'none'
nl_abs_tol = 2e-10
nl_rel_tol = 1e-6
nl_max_its = 50
nl_forced_its = 1
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_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]
[SolidMechanics]
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
factor = -100.0
[../]
[./side_press]
type = Pressure
variable = disp_x
boundary = 4
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
[../]
[]
(test/tests/problems/reference_residual_problem/no_ref.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
[]
[Problem]
type = ReferenceResidualProblem
# reference_vector = 'absref'
# extra_tag_vectors = 'absref'
[]
[Variables]
[u][]
[v]
scaling = 1e-6
[]
[]
[Functions]
[ramp]
type = ParsedFunction
expression = 'if(t < 5, t - 5, 0) * x'
[]
[]
[Kernels]
[u_dt]
type = TimeDerivative
variable = u
[]
[u_coupled_rx]
type = CoupledForce
variable = u
v = v
coef = 1
[]
[v_dt]
type = TimeDerivative
variable = v
[]
[v_neg_force]
type = BodyForce
variable = v
value = ${fparse -1 / 2}
function = ramp
[]
[v_force]
type = BodyForce
variable = v
value = 1
function = ramp
[]
[]
[Postprocessors]
[u_avg]
type = ElementAverageValue
variable = u
execute_on = 'TIMESTEP_END INITIAL'
[]
[v_avg]
type = ElementAverageValue
variable = v
execute_on = 'TIMESTEP_END INITIAL'
[]
[timestep]
type = TimePostprocessor
outputs = 'none'
[]
[v_old]
type = ElementAverageValue
variable = v
execute_on = TIMESTEP_BEGIN
outputs = none
[]
[u_old]
type = ElementAverageValue
variable = u
execute_on = TIMESTEP_BEGIN
outputs = none
[]
[v_exact]
type = ParsedPostprocessor
pp_names = 'timestep v_old'
function = 't := if(timestep > 5, 5, timestep); (t^2 - 9 * t) / 8'
[]
[u_exact]
type = ParsedPostprocessor
pp_names = 'u_old v_exact'
function = 'u_old + v_exact'
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = none
num_steps = 10
nl_rel_tol = 1e-06
verbose = true
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_1/plane1_template1.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane1_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x7]
type = NodalVariableValue
nodeid = 6
variable = disp_x
[../]
[./disp_y2]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_y7]
type = NodalVariableValue
nodeid = 6
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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 = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalSmallStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalSmallStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-9
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x2 disp_y2 disp_x7 disp_y7 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/verification/patch_tests/brick_3/brick3_template1.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick3_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./diag_saved_z]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./inc_slip_z]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./accum_slip_z]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y saved_z'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_begin
boundary = 4
paired_boundary = 3
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_begin
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x28]
type = NodalVariableValue
nodeid = 27
variable = disp_x
[../]
[./disp_x33]
type = NodalVariableValue
nodeid = 32
variable = disp_x
[../]
[./disp_y28]
type = NodalVariableValue
nodeid = 27
variable = disp_y
[../]
[./disp_y33]
type = NodalVariableValue
nodeid = 32
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-8
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-5
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '1 3 4 5'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x28 disp_y28 disp_x33 disp_y33 stress_yy stress_zz top_react_x top_react_y x_disp y_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/verification/patch_tests/plane_4/plane4_mu_0_2_pen.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane4_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_y9]
type = NodalVariableValue
nodeid = 8
variable = disp_y
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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 = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalSmallStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalSmallStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = plane4_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = plane4_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x9 disp_y9 disp_x16 disp_y16 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/mortar_tm/2d/ad_frictional/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_rr'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
extra_vector_tags = 'ref'
[]
[]
[Contact]
[frictional]
primary = plank_right
secondary = block_left
formulation = mortar
model = coulomb
c_normal = 1e3
c_tangential = 1e-6
friction_coefficient = 0.1
tangential_lm_scaling = 1.0e-10
[]
[]
[BCs]
[left_x]
type = ADDirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
preset = false
[]
[left_y]
type = ADDirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
preset = false
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu NONZERO 1e-15'
end_time = 5.3
dt = 0.12
dtmin = 0.12
timestep_tolerance = 1e-6
line_search = 'contact'
nl_div_tol = 1e100
nl_abs_tol = 1e-7
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictional_normal_lm
subdomain = frictional_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/verification/overclosure_removal/overclosure.i)
# ---------------------------------------------------------------------------------------------------------
# REGRESSION TEST FOR OVERCLOSURE REMOVAL
# =======================================
# THIS TEST DEMONSTRATES THAT THE CODE IS CAPABLE OF REMOVING A SIZEABLE OVERCLOSURE IN A SINGLE TIME-STEP
# --------------------------------------------------------------------------------------------------------
[Mesh]
file = oc_mesh.e
[]
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./penetration]
order = FIRST
family = LAGRANGE
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[../]
[]
[AuxKernels]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side1_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = 5
value = 0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = 1001 #nodeset 1001 top central node
value = 0.0
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeFiniteStrain
decomposition_method = EigenSolution
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e5
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeFiniteStrain
decomposition_method = EigenSolution
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-8
nl_rel_tol = 1e-9
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
dtmin = 1.0
l_tol = 1e-3
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 4
primary = 3
model = frictionless
formulation = penalty
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(test/tests/executioners/nl_forced_its/many_nl_forced_its_ref_res.i)
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
type = GeneratedMesh
dim = 1
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
extra_vector_tags = ref
[../]
[./dt]
type = TimeDerivative
variable = u
extra_vector_tags = ref
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
preset = false
boundary = left
value = -1
[../]
[./right]
type = DirichletBC
variable = u
preset = false
boundary = right
value = 1
[../]
[]
[Executioner]
type = Transient
line_search = none
nl_forced_its = 10
num_steps = 1
[]
(modules/heat_transfer/test/tests/interface_heating_mortar/constraint_joule_heating_single_material_insulated.i)
## Units in the input file: m-Pa-s-K-V
# In this steady-state, symmetric simulation, the temperature at the interface between
# the two blocks of aluminum can be calculated through Fourier's law (see the documentation
# page for ADInterfaceJouleHeatingConstraint for the relevant formulas).
#
# With the prescribed 0.0 V (left) and 0.3V (right) potential boundary conditions, the
# electric potential drop is 9.25e6 [V * S / m^2]. From this current-density-like LM variable,
# the volumetric heat source at the interface is calculated as
# q = 1.15625e6 [W/m^3}
# Because of the 2D nature of this problem, the volumetric heat source is equal to
# the negative of the heat flux at the interface.
#
# Finally, the temperature at the interface is computed as a function of the block width,
# thermal conductivity, and specified temperature boundary condition (300K on both the
# left and right edges):
# T_{interface} = 850.5952K
# which matches the simulation result to the 6 decimal places shown.
[Mesh]
[left_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 10
xmax = 0.1
ymin = 0
ymax = 0.5
boundary_name_prefix = moving_block
[]
[left_block]
type = SubdomainIDGenerator
input = left_rectangle
subdomain_id = 1
[]
[right_rectangle]
type = GeneratedMeshGenerator
dim = 2
nx = 100
ny = 10
xmin = 0.1
xmax = 0.2
ymin = 0
ymax = 0.5
boundary_name_prefix = fixed_block
boundary_id_offset = 4
[]
[right_block]
type = SubdomainIDGenerator
input = right_rectangle
subdomain_id = 2
[]
[two_blocks]
type = MeshCollectionGenerator
inputs = 'left_block right_block'
[]
[block_rename]
type = RenameBlockGenerator
input = two_blocks
old_block = '1 2'
new_block = 'left_block right_block'
[]
[interface_secondary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'fixed_block_left'
new_block_id = 3
new_block_name = 'interface_secondary_subdomain'
input = block_rename
[]
[interface_primary_subdomain]
type = LowerDBlockFromSidesetGenerator
sidesets = 'moving_block_right'
new_block_id = 4
new_block_name = 'interface_primary_subdomain'
input = interface_secondary_subdomain
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[potential]
[]
[potential_interface_lm]
block = 'interface_secondary_subdomain'
[]
[]
[AuxVariables]
[interface_normal_lm]
order = FIRST
family = LAGRANGE
block = 'interface_secondary_subdomain'
initial_condition = 1.0
[]
[]
[Kernels]
[HeatDiff_aluminum]
type = ADHeatConduction
variable = temperature
thermal_conductivity = aluminum_thermal_conductivity
extra_vector_tags = 'ref'
block = 'left_block right_block'
[]
[electric_aluminum]
type = ADMatDiffusion
variable = potential
diffusivity = aluminum_electrical_conductivity
extra_vector_tags = 'ref'
block = 'left_block right_block'
[]
[]
[BCs]
[temperature_left]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'moving_block_left'
[]
[temperature_right]
type = ADDirichletBC
variable = temperature
value = 300
boundary = 'fixed_block_right'
[]
[electric_left]
type = ADDirichletBC
variable = potential
value = 0.0
boundary = moving_block_left
[]
[electric_right]
type = ADDirichletBC
variable = potential
value = 3.0e-1
boundary = fixed_block_right
[]
[]
[Constraints]
[electrical_contact]
type = ModularGapConductanceConstraint
variable = potential_interface_lm
secondary_variable = potential
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
gap_flux_models = 'closed_electric'
[]
[interface_heating]
type = ADInterfaceJouleHeatingConstraint
potential_lagrange_multiplier = potential_interface_lm
secondary_variable = temperature
primary_electrical_conductivity = aluminum_electrical_conductivity
secondary_electrical_conductivity = aluminum_electrical_conductivity
primary_boundary = moving_block_right
primary_subdomain = interface_primary_subdomain
secondary_boundary = fixed_block_left
secondary_subdomain = interface_secondary_subdomain
[]
[]
[Materials]
[aluminum_thermal_properties]
type = ADGenericConstantMaterial
prop_names = 'aluminum_density aluminum_thermal_conductivity aluminum_heat_capacity aluminum_electrical_conductivity aluminum_hardness'
prop_values = ' 2.7e3 210 900.0 3.7e7 1.0' #for 99% pure Al
block = 'left_block right_block interface_secondary_subdomain'
[]
[]
[UserObjects]
[closed_electric]
type = GapFluxModelPressureDependentConduction
primary_conductivity = aluminum_electrical_conductivity
secondary_conductivity = aluminum_electrical_conductivity
temperature = potential
contact_pressure = interface_normal_lm
primary_hardness = aluminum_hardness
secondary_hardness = aluminum_hardness
boundary = moving_block_right
[]
[]
[Postprocessors]
[aluminum_interface_temperature]
type = AverageNodalVariableValue
variable = temperature
block = interface_secondary_subdomain
[]
[interface_heat_flux_aluminum]
type = ADSideDiffusiveFluxAverage
variable = temperature
boundary = fixed_block_left
diffusivity = aluminum_thermal_conductivity
[]
[aluminum_interface_potential]
type = AverageNodalVariableValue
variable = potential
block = interface_secondary_subdomain
[]
[interface_electrical_flux_aluminum]
type = ADSideDiffusiveFluxAverage
variable = potential
boundary = fixed_block_left
diffusivity = aluminum_electrical_conductivity
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
automatic_scaling = false
line_search = 'none'
nl_abs_tol = 2e-10
nl_rel_tol = 1e-6
nl_max_its = 50
nl_forced_its = 1
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/free_expansion_abs_ref/free_expansion_abs_ref.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
[square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[]
[eng1]
type = ExtraNodesetGenerator
input = square
new_boundary = 'lower_left'
coord = '0 0'
[]
[eng2]
type = ExtraNodesetGenerator
input = eng1
new_boundary = 'lower_right'
coord = '1 0'
[]
[]
[AuxVariables]
[temp]
[]
[ref_x]
[]
[ref_y]
[]
[]
[AuxKernels]
[tempfuncaux]
type = FunctionAux
variable = temp
function = '(1-x)*t'
use_displaced_mesh = false
[]
[ref_x]
type = TagVectorAux
variable = 'ref_x'
vector_tag = 'ref'
v = 'disp_x'
execute_on = timestep_end
[]
[ref_y]
type = TagVectorAux
variable = 'ref_y'
vector_tag = 'ref'
execute_on = timestep_end
v = 'disp_y'
[]
[]
[BCs]
[fix_x]
type = DirichletBC
boundary = 'lower_left'
variable = disp_x
value = 0.0
[]
[fix_y]
type = DirichletBC
boundary = 'lower_left lower_right'
variable = disp_y
value = 0.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = SMALL
add_variables = true
temperature = temp
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
planar_formulation = PLANE_STRAIN
eigenstrain_names = eigenstrain
absolute_value_vector_tags = 'ref'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[elastic_stress]
type = ComputeLinearElasticStress
[]
[thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
temperature = temp
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
l_max_its = 100
l_tol = 1e-8
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/brick_4/brick4_template1.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick4_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./diag_saved_z]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./inc_slip_z]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./accum_slip_z]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y saved_z'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_begin
boundary = 4
paired_boundary = 3
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_begin
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x59]
type = NodalVariableValue
nodeid = 58
variable = disp_x
[../]
[./disp_x64]
type = NodalVariableValue
nodeid = 63
variable = disp_x
[../]
[./disp_y59]
type = NodalVariableValue
nodeid = 58
variable = disp_y
[../]
[./disp_y64]
type = NodalVariableValue
nodeid = 63
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[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
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-7
nl_rel_tol = 1e-6
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-4
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '1 3 4 5'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x59 disp_y59 disp_x64 disp_y64 stress_yy stress_zz top_react_x top_react_y x_disp y_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/hertz_spherical/hertz_contact_hex20.i)
# Hertz Contact: Sphere on sphere
# Spheres have the same radius, Young's modulus, and Poisson's ratio.
# Define E:
# 1/E = (1-nu1^2)/E1 + (1-nu2^2)/E2
#
# Effective radius R:
# 1/R = 1/R1 + 1/R2
#
# F is the applied compressive load.
#
# Area of contact a::
# a^3 = 3FR/4E
#
# Depth of indentation d:
# d = a^2/R
#
#
# Let R1 = R2 = 2. Then R = 1.
#
# Let nu1 = nu2 = 0.25, E1 = E2 = 1.40625e7. Then E = 7.5e6.
#
# Let F = 10000. Then a = 0.1, d = 0.01.
#
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y disp_z'
order = SECOND
[]
[Mesh]#Comment
file = hertz_contact_hex20.e
allow_renumbering = false
[] # Mesh
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 795.77471545947674 # 10000/pi/2^2
[../]
[./disp_y]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. -0.01 -0.01'
[../]
[] # Functions
[Variables]
[./disp_x]
order = SECOND
family = LAGRANGE
[../]
[./disp_y]
order = SECOND
family = LAGRANGE
[../]
[./disp_z]
order = SECOND
family = LAGRANGE
[../]
[] # 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
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./hydrostatic]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[] # AuxVariables
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = SMALL
extra_vector_tags = 'ref'
save_in = 'saved_x saved_y saved_z'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_xx
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_yy
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 2
variable = stress_yz
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 0
variable = stress_zx
[../]
# [./vonmises]
# type = RankTwoScalarAux
# rank_two_tensor = stress
# variable = vonmises
# scalar_type = VonMisesStress
# [../]
[] # AuxKernels
[BCs]
[./base_x]
type = DirichletBC
variable = disp_x
boundary = 1000
value = 0.0
[../]
[./base_y]
type = DirichletBC
variable = disp_y
boundary = 1000
value = 0.0
[../]
[./base_z]
type = DirichletBC
variable = disp_z
boundary = 1000
value = 0.0
[../]
[./symm_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./symm_z]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[../]
[./disp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = disp_y
[../]
[] # BCs
[Contact]
[./dummy_name]
primary = 1000
secondary = 100
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+10
[../]
[]
#[Dampers]
# [./contact_slip]
# type = ContactSlipDamper
# primary = 1000
# secondary = 100
# [../]
#[]
[Materials]
[./tensor]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1.40625e7
poissons_ratio = 0.25
[../]
[./stress]
type = ComputeLinearElasticStress
block = '1'
[../]
[./tensor_1000]
type = ComputeIsotropicElasticityTensor
block = '1000'
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./stress_1000]
type = ComputeLinearElasticStress
block = '1000'
[../]
[] # Materials
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-7
l_max_its = 10
start_time = 0.0
dt = 0.05
end_time = 2.0
[./Quadrature]
order = THIRD
[../]
[] # Executioner
[Postprocessors]
[./maxdisp]
type = NodalVariableValue
nodeid = 386 # 387-1 where 387 is the exodus node number of the top-center node
variable = disp_y
[../]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 2
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 2
[../]
[./bot_react_z]
type = NodalSum
variable = saved_z
boundary = 2
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[] # Outputs
(modules/contact/test/tests/mortar_tm/2d/ad_frictionless_sec/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite_rr'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank block'
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
preset = false
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5.0
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-7
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/problems/reference_residual_problem/abs_ref.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
[]
[GlobalParams]
absolute_value_vector_tags = 'absref'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'absref'
extra_tag_vectors = 'absref'
[]
[Variables]
[u][]
[v]
scaling = 1e-6
[]
[]
[Functions]
[ramp]
type = ParsedFunction
expression = 'if(t < 5, t - 5, 0) * x'
[]
[]
[Kernels]
[u_dt]
type = TimeDerivative
variable = u
[]
[u_coupled_rx]
type = CoupledForce
variable = u
v = v
coef = 1
[]
[v_dt]
type = TimeDerivative
variable = v
[]
[v_neg_force]
type = BodyForce
variable = v
value = ${fparse -1 / 2}
function = ramp
[]
[v_force]
type = BodyForce
variable = v
value = 1
function = ramp
[]
[]
[Postprocessors]
[u_avg]
type = ElementAverageValue
variable = u
execute_on = 'TIMESTEP_END INITIAL'
[]
[v_avg]
type = ElementAverageValue
variable = v
execute_on = 'TIMESTEP_END INITIAL'
[]
[timestep]
type = TimePostprocessor
outputs = 'none'
[]
[v_old]
type = ElementAverageValue
variable = v
execute_on = TIMESTEP_BEGIN
outputs = none
[]
[u_old]
type = ElementAverageValue
variable = u
execute_on = TIMESTEP_BEGIN
outputs = none
[]
[v_exact]
type = ParsedPostprocessor
pp_names = 'timestep v_old'
function = 't := if(timestep > 5, 5, timestep); (t^2 - 9 * t) / 8'
[]
[u_exact]
type = ParsedPostprocessor
pp_names = 'u_old v_exact'
function = 'u_old + v_exact'
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = none
num_steps = 10
nl_rel_tol = 1e-06
verbose = true
[]
[Outputs]
csv = true
[]
(modules/combined/test/tests/generalized_plane_strain_tm_contact/out_of_plane_pressure.i)
# Tests for application of out-of-plane pressure in generalized plane strain.
[Mesh]
type = GeneratedMesh
nx = 2
ny = 2
dim = 2
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./saved_x]
order = FIRST
family = LAGRANGE
[../]
[./saved_y]
order = FIRST
family = LAGRANGE
[../]
[./saved_zz]
order = FIRST
family = SCALAR
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[]
[Modules]
[./TensorMechanics]
[./GeneralizedPlaneStrain]
[./gps]
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
out_of_plane_pressure = traction_function
factor = 1e5
[../]
[../]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxScalarKernels]
[./gps_ref_res]
type = GeneralizedPlaneStrainReferenceResidual
variable = saved_zz
generalized_plane_strain = gps_GeneralizedPlaneStrainUserObject
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./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
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./traction_function]
type = PiecewiseLinear
x = '0 2'
y = '0 1'
[../]
[]
[BCs]
[./leftx]
type = DirichletBC
boundary = left
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./strain]
type = ComputePlaneSmallStrain
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-11
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
num_steps = 5000
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/reference_residual/reference_residual_perfgraph.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./saved_t]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
volumetric_locking_correction = true
incremental = true
save_in = 'saved_x saved_y saved_z'
eigenstrain_names = thermal_expansion
strain = FINITE
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temp
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
save_in = saved_t
extra_vector_tags = 'ref'
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0 1 2'
y = '0 1 1'
scale_factor = 0.1
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = pull
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[../]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = bottom
value = 10.0
[../]
[./top_temp]
type = DirichletBC
variable = temp
boundary = top
value = 20.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 0
eigenstrain_name = thermal_expansion
temperature = temp
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0.0
[../]
[./heat1]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 1e-3 #Tuned to give temperature reference resid close to that of solidmech
[../]
[./density]
type = Density
block = 0
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
l_tol = 1e-3
l_max_its = 100
dt = 1.0
end_time = 2.0
[]
[Postprocessors]
[./res_calls]
type = PerfGraphData
section_name = "ReferenceResidualProblem::computeResidualInternal"
data_type = calls
[../]
[./elapsed]
type = PerfGraphData
section_name = "Root"
data_type = total
[../]
[]
[Outputs]
csv = true
[]
(test/tests/scaling/residual-based/residual-based-two-var.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
[]
[ICs]
[u]
type = FunctionIC
variable = u
function = '1000 * (1 - x)'
[]
[v]
type = FunctionIC
variable = v
function = '1e-3 * (1 - x)'
[]
[]
[Variables]
[u][]
[v][]
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
extra_vector_tags = 'ref'
[../]
[rxn]
type = PReaction
power = 2
variable = u
extra_vector_tags = 'ref'
[]
[./diff_v]
type = Diffusion
variable = v
extra_vector_tags = 'ref'
[../]
[rxn_v]
type = PReaction
power = 2
variable = v
extra_vector_tags = 'ref'
[]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 1000
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 0
[../]
[./left_v]
type = DirichletBC
variable = v
boundary = left
value = 1e-3
[../]
[./right_v]
type = DirichletBC
variable = v
boundary = right
value = 0
[../]
[]
[Executioner]
type = Steady
solve_type = PJFNK
verbose = true
automatic_scaling = true
resid_vs_jac_scaling_param = 1
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/pdass_problems/cylinder_friction_penalty_adaptivity.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = hertz_cyl_coarser.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10001
new_block_name = 'secondary_lower'
sidesets = '3'
input = input_file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10000
sidesets = '2'
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[AuxVariables]
[penalty_normal_pressure]
[]
[penalty_frictional_pressure]
[]
[accumulated_slip_one]
[]
[tangential_vel_one]
[]
[normal_gap]
[]
[react_x]
[]
[react_y]
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. -0.020 -0.020'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. 0.0 0.015'
[]
[]
[Modules/TensorMechanics/Master/all]
strain = FINITE
add_variables = true
extra_vector_tags = 'ref'
block = '1 2 3 4 5 6 7'
generate_output = 'stress_xx stress_yy stress_xy'
[]
[AuxKernels]
[penalty_normal_pressure]
type = PenaltyMortarUserObjectAux
variable = penalty_normal_pressure
user_object = friction_uo
contact_quantity = normal_pressure
[]
[penalty_frictional_pressure]
type = PenaltyMortarUserObjectAux
variable = penalty_frictional_pressure
user_object = friction_uo
contact_quantity = tangential_pressure_one
[]
[penalty_accumulated_slip]
type = PenaltyMortarUserObjectAux
variable = accumulated_slip_one
user_object = friction_uo
contact_quantity = accumulated_slip_one
[]
[penalty_tangential_vel]
type = PenaltyMortarUserObjectAux
variable = tangential_vel_one
user_object = friction_uo
contact_quantity = tangential_velocity_one
[]
[penalty_gap]
type = PenaltyMortarUserObjectAux
variable = normal_gap
user_object = friction_uo
contact_quantity = normal_gap
[]
[react_x]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_x'
variable = 'react_x'
[]
[react_y]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_y'
variable = 'react_y'
[]
[]
[Postprocessors]
[bot_react_x]
type = NodalSum
variable = react_x
boundary = 1
[]
[bot_react_y]
type = NodalSum
variable = react_y
boundary = 1
[]
[top_react_x]
type = NodalSum
variable = react_x
boundary = 4
[]
[top_react_y]
type = NodalSum
variable = react_y
boundary = 4
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[cumulative]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[gap]
type = SideExtremeValue
value_type = min
variable = normal_gap
boundary = 3
[]
[num_al]
type = NumAugmentedLagrangeIterations
[]
[]
[BCs]
[side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[]
[bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[]
[stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2 3 4 5 6 7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2 3 4 5 6 7'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type -pc_factor_shift_type -pc_factor_shift_amount -mat_mffd_err'
petsc_options_value = 'lu superlu_dist NONZERO 1e-15 1e-5'
line_search = 'none'
nl_abs_tol = 1e-10
start_time = 0.0
end_time = 0.3 # 3.5
l_tol = 1e-4
dt = 0.1
dtmin = 0.001
[Predictor]
type = SimplePredictor
scale = 1.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[surface]
type = NodalValueSampler
use_displaced_mesh = false
variable = 'disp_x disp_y penalty_normal_pressure penalty_frictional_pressure normal_gap'
boundary = '3'
sort_by = id
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = true
csv = false
[console]
type = Console
max_rows = 5
[]
[vectorpp_output]
type = CSV
create_final_symlink = true
file_base = cylinder_friction_penalty_adaptivity
execute_on = 'INITIAL TIMESTEP_END FINAL'
[]
[]
[UserObjects]
[friction_uo]
type = PenaltyFrictionUserObject
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
disp_x = disp_x
disp_y = disp_y
friction_coefficient = 0.4
secondary_variable = disp_x
penalty = 5e7
penalty_friction = 5e8
[]
[geo]
type = GeometrySphere
boundary = 3
center = '0 4 0'
radius = 3
[]
[]
[Adaptivity]
[Markers]
[contact]
type = BoundaryMarker
mark = REFINE
next_to = 3
[]
[]
initial_marker = contact
initial_steps = 2
[]
[Constraints]
[x]
type = NormalMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = friction_uo
[]
[y]
type = NormalMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '10000'
secondary_subdomain = '10001'
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = friction_uo
[]
[tangential_x]
type = TangentialMortarMechanicalContact
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_velocities_uo = friction_uo
[]
[tangential_y]
type = TangentialMortarMechanicalContact
primary_boundary = 2
secondary_boundary = 3
primary_subdomain = 10000
secondary_subdomain = 10001
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_velocities_uo = friction_uo
[]
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_first/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_rr'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[block]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'block'
extra_vector_tags = 'ref'
[]
[plank]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[]
[swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[]
[swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-12
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/verification/patch_tests/mindlin/cylinder_friction_node_face.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = hertz_cyl_coarser.e
[]
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[react_x]
[]
[react_y]
[]
[penetration]
[]
[inc_slip_x]
[]
[inc_slip_y]
[]
[accum_slip_x]
[]
[accum_slip_y]
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. -0.020 -0.020'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. 0.0 0.015'
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
extra_vector_tags = 'ref'
block = '1 2 3 4 5 6 7'
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
block = '1 2 3 4 5 6 7'
[]
[incslip_x]
type = PenetrationAux
variable = inc_slip_x
quantity = incremental_slip_x
boundary = 3
paired_boundary = 2
[]
[incslip_y]
type = PenetrationAux
variable = inc_slip_y
quantity = incremental_slip_y
boundary = 3
paired_boundary = 2
[]
[accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[]
[accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[]
[penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 2
[]
[react_x]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_x'
variable = 'react_x'
[]
[react_y]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_y'
variable = 'react_y'
[]
[]
[Postprocessors]
[bot_react_x]
type = NodalSum
variable = react_x
boundary = 1
[]
[bot_react_y]
type = NodalSum
variable = react_y
boundary = 1
[]
[top_react_x]
type = NodalSum
variable = react_x
boundary = 4
[]
[top_react_y]
type = NodalSum
variable = react_y
boundary = 4
[]
[penetration]
type = NodalExtremeValue
variable = penetration
value_type = max
boundary = 3
[]
[inc_slip_x_max]
type = NodalExtremeValue
variable = inc_slip_x
value_type = max
boundary = 3
[]
[inc_slip_x_min]
type = NodalExtremeValue
variable = inc_slip_x
value_type = min
boundary = 3
[]
[inc_slip_y_max]
type = NodalExtremeValue
variable = inc_slip_y
value_type = max
boundary = 3
[]
[inc_slip_y_min]
type = NodalExtremeValue
variable = inc_slip_y
value_type = min
boundary = 3
[]
[accum_slip_x]
type = NodalExtremeValue
variable = accum_slip_x
value_type = max
boundary = 3
[]
[accum_slip_y]
type = NodalExtremeValue
variable = accum_slip_y
value_type = max
boundary = 3
[]
[_dt]
type = TimestepSize
[]
[]
[BCs]
[side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[]
[bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[]
[stuff1_strain]
type = ComputeFiniteStrain
block = '1'
[]
[stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2 3 4 5 6 7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[stuff2_strain]
type = ComputeFiniteStrain
block = '2 3 4 5 6 7'
[]
[stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2 3 4 5 6 7'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type -pc_factor_shift_type '
'-pc_factor_shift_amount -mat_mffd_err'
petsc_options_value = 'lu superlu_dist NONZERO 1e-15 '
' 1e-5'
line_search = 'none'
nl_abs_tol = 1e-8
start_time = 0.0
end_time = 0.3
l_tol = 1e-4
dt = 0.1
dtmin = 0.1
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4'
sort_by = id
[]
[y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4'
sort_by = id
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = true
csv = true
[console]
type = Console
max_rows = 5
[]
[chkfile]
type = CSV
show = 'x_disp y_disp'
file_base = cylinder_friction_check
create_final_symlink = true
execute_on = 'FINAL'
[]
[]
[Contact]
[leftright]
primary = 2
secondary = 3
model = coulomb
formulation = penalty
penalty = 5e9
normalize_penalty = true
friction_coefficient = '0.2'
[]
[]
(modules/contact/test/tests/verification/hertz_cyl/half_symm_q8/hertz_cyl_half_1deg_template1.i)
[GlobalParams]
order = SECOND
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Mesh]
file = hertz_cyl_half_1deg.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Functions]
[./disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. -0.0020 -0.0020'
[../]
[./disp_ramp_horz]
type = PiecewiseLinear
x = '0. 1. 3.5'
y = '0. 0.0 0.0014'
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 2
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 2
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 2
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 4
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[../]
[./disp_x639]
type = NodalVariableValue
nodeid = 638
variable = disp_x
[../]
[./disp_y639]
type = NodalVariableValue
nodeid = 638
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_y
boundary = '1 2'
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[../]
[./top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = disp_ramp_vert
[../]
[./top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = disp_ramp_horz
[../]
[]
[Materials]
[./stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[../]
[./stuff1_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff2_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[./stuff3_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '3'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff3_strain]
type = ComputeFiniteStrain
block = '3'
[../]
[./stuff3_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[../]
[./stuff4_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '4'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff4_strain]
type = ComputeFiniteStrain
block = '4'
[../]
[./stuff4_stress]
type = ComputeFiniteStrainElasticStress
block = '4'
[../]
[./stuff5_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '5'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff5_strain]
type = ComputeFiniteStrain
block = '5'
[../]
[./stuff5_stress]
type = ComputeFiniteStrainElasticStress
block = '5'
[../]
[./stuff6_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '6'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff6_strain]
type = ComputeFiniteStrain
block = '6'
[../]
[./stuff6_stress]
type = ComputeFiniteStrainElasticStress
block = '6'
[../]
[./stuff7_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '7'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff7_strain]
type = ComputeFiniteStrain
block = '7'
[../]
[./stuff7_stress]
type = ComputeFiniteStrainElasticStress
block = '7'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-6
nl_rel_tol = 1e-5
l_max_its = 100
nl_max_its = 200
start_time = 0.0
end_time = 3.5
l_tol = 1e-3
dt = 0.1
dtmin = 0.1
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = id
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'x_disp y_disp cont_press'
start_time = 0.9
execute_vector_postprocessors_on = timestep_end
[../]
[./chkfile2]
type = CSV
show = 'bot_react_x bot_react_y disp_x639 disp_y639 top_react_x top_react_y'
start_time = 0.9
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./interface]
primary = 2
secondary = 3
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+10
[../]
[]
(modules/contact/test/tests/verification/hertz_cyl/quart_symm_q4/hertz_cyl_qsym_1deg_template1.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = hertz_cyl_qsym_1deg_q4.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Functions]
[./disp_ramp_vert]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. -0.0020 -0.0020'
[../]
[./disp_ramp_zero]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 0.0 0.0'
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 4
paired_boundary = 3
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 4
paired_boundary = 3
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./disp_x281]
type = NodalVariableValue
nodeid = 280
variable = disp_x
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_y
boundary = '1 3'
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_x
boundary = '1 2 3'
value = 0.0
[../]
[./top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 5
function = disp_ramp_vert
[../]
[]
[Materials]
[./stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e10
poissons_ratio = 0.0
[../]
[./stuff1_strain]
type = ComputeFiniteStrain
block = '1'
[../]
[./stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff2_strain]
type = ComputeFiniteStrain
block = '2'
[../]
[./stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[./stuff3_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '3'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff3_strain]
type = ComputeFiniteStrain
block = '3'
[../]
[./stuff3_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[../]
[./stuff4_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '4'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stuff4_strain]
type = ComputeFiniteStrain
block = '4'
[../]
[./stuff4_stress]
type = ComputeFiniteStrainElasticStress
block = '4'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-6
nl_rel_tol = 1e-5
l_max_its = 50
nl_max_its = 100
start_time = 0.0
dt = 0.1
dtmin = 0.1
num_steps = 10
end_time = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '3 4 5'
sort_by = id
[../]
[./y_disp]
type = NodalValueSampler
variable = disp_y
boundary = '3 4 5'
sort_by = id
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '4'
sort_by = id
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x281 top_react_x top_react_y x_disp y_disp cont_press'
start_time = 0.9
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./interface]
primary = 3
secondary = 4
model = glued
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_second/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite_rr'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank block'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = FunctionDirichletBC
variable = disp_x
preset = false
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5.0
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-7
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/normalized_penalty/normalized_penalty.i)
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Mesh]
file = normalized_penalty.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Functions]
[./left_x]
type = PiecewiseLinear
x = '0 1 2'
y = '0 0.02 0'
[../]
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
generate_output = 'stress_xx'
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[./m3_s2]
primary = 3
secondary = 2
penalty = 1e10
normalize_penalty = true
formulation = penalty
tangential_tolerance = 1e-3
[../]
[]
[BCs]
[./left_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 1
function = left_x
[../]
[./y]
type = DirichletBC
variable = disp_y
boundary = '1 2 3 4'
value = 0.0
[../]
[./right]
type = DirichletBC
variable = disp_x
boundary = '3 4'
value = 0
[../]
[]
[Materials]
[./stiffStuff1]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 1000'
youngs_modulus = 3e8
poissons_ratio = 0.0
[../]
[./stiffStuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 1000'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_rel_tol = 1e-12
nl_abs_tol = 5e-8
l_max_its = 100
nl_max_its = 10
dt = 0.5
num_steps = 4
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/mortar_tm/2d/ad_frictionless_fir/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_rr'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank block'
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-7
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]