- index_iThe index i of ij for the tensor to output (0, 1, 2)
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The index i of ij for the tensor to output (0, 1, 2)
- index_jThe index j of ij for the tensor to output (0, 1, 2)
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The index j of ij for the tensor to output (0, 1, 2)
- rank_two_tensorThe rank two material tensor name
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:The rank two material tensor name
- variableThe name of the variable that this object applies to
C++ Type:AuxVariableName
Unit:(no unit assumed)
Controllable:No
Description:The name of the variable that this object applies to
Rank Two Aux
Access a component of a RankTwoTensor
Description
The AuxKernel RankTwoAux
is used to save single components of Rank-2 tensors into an AuxVariable for visualization and/or post-processing purposes. An antisymmetric Rank-2 tensor would require nine separate RankTwoAux
AuxKernel-AuxVariable pairs to store all of the components of the antisymmetric Rank-2 tensor; six separate AuxKernel-AuxVariable pairs are required to print out all the unique components of a symmetric Rank-2 tensor. Quantities commonly examined with RankTwoAux
are stress () and strain ().
The RankTwoAux
takes as arguments the values of the index_i
and the index_j
for the single tensor component to save into an AuxVariable. Eq. (1) shows the index values for each Rank-2 tensor component. (1)
If desired, RankTwoAux
can be restricted to save data from a Rank-2 tensor at a single specified quadrature point per element. This option is generally used for debugging purposes.
AuxVariable Order
Results will have different quality based on the AuxVariable:
Elemental Constant Monomial Using an AuxVariable with
family = MONOMIAL
andorder = CONSTANT
will give a constant value of the AuxVariable for the entire element, which is computed by taking a volume-weighted average of the integration point quantities. This is the default option using SolidMechanics Action and requires the least computational cost.Elemental Higher-order Monomial Using an AuxVariable with
family = MONOMIAL
andorder = FIRST
or higher will result in fields that vary linearly (or with higher order) within each element. Because the Exodus mesh format does not support higher-order elemental variables, these AuxVariables are output by libMesh as nodal variables for visualization purposes. Using higher order monomial variables in this way can produce smoother visualizations of results for a properly converged simulation.Nodal Lagrange Using an AuxVariable with
family = LAGRANGE
will result in a smooth nodal field of the material property, constructed using nodal patch recovery.patch_polynomial_order
is set to equal the order of the AuxVariable by default. Use this option for the best (smoothest, most accurate) results, but there is some additional computational cost. Furthermore, this method is suitable only for serial simulations at present.
Example Input File Syntax
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
(modules/solid_mechanics/test/tests/elastic_patch/elastic_patch.i)An AuxVariable is required to store the RankTwoAux
AuxKernel information. Note that the name of the AuxVariable is used as the argument for the variable
input parameter in the RankTwoAux
block.
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
(modules/solid_mechanics/test/tests/elastic_patch/elastic_patch.i)Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Unit:(no unit assumed)
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Unit:(no unit assumed)
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- check_boundary_restrictedTrueWhether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
- execute_onLINEAR TIMESTEP_ENDThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
Default:LINEAR TIMESTEP_END
C++ Type:ExecFlagEnum
Unit:(no unit assumed)
Options:XFEM_MARK, FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, PRE_DISPLACE
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- patch_polynomial_orderPolynomial order used in least squares fitting of material property over the local patch of elements connected to a given node
C++ Type:MooseEnum
Unit:(no unit assumed)
Options:CONSTANT, FIRST, SECOND, THIRD, FOURTH
Controllable:No
Description:Polynomial order used in least squares fitting of material property over the local patch of elements connected to a given node
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The seed for the master random number generator
- selected_qpEvaluate the tensor at this specific quadpoint
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Evaluate the tensor at this specific quadpoint
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
Input Files
- (modules/contact/test/tests/verification/patch_tests/brick_1/brick1_template2.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_x_3d_shear.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/use_substep_dt.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation.i)
- (modules/contact/test/tests/verification/patch_tests/ring_1/ring1_template1.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial1_small_strain.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/special/rotate.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/small-tests/3d.i)
- (modules/solid_mechanics/test/tests/plane_stress/ad_weak_plane_stress_incremental.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/except6.i)
- (modules/solid_mechanics/test/tests/global_strain/global_strain_pressure_3D.i)
- (modules/combined/test/tests/poro_mechanics/pp_generation.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/cp_slip_rate_integ/crysp_substep.i)
- (modules/solid_mechanics/test/tests/multi/four_surface14.i)
- (modules/combined/test/tests/ad_cavity_pressure/initial_temperature.i)
- (modules/contact/test/tests/verification/patch_tests/brick_4/brick4_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_scalar_vector.i)
- (modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free_orientation_inclined.i)
- (modules/solid_mechanics/test/tests/visco/gen_kv_driving.i)
- (modules/solid_mechanics/test/tests/hyperelastic_viscoplastic/one_elem_base.i)
- (modules/solid_mechanics/test/tests/visco/visco_finite_strain.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/action/no_action_L.i)
- (modules/solid_mechanics/test/tests/capped_mohr_coulomb/small_deform1_cosserat.i)
- (modules/solid_mechanics/test/tests/orthotropic_plasticity/powerRuleHardening.i)
- (modules/xfem/test/tests/checkpoint/checkpoint.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_basal_active.i)
- (modules/combined/test/tests/generalized_plane_strain_tm_contact/out_of_plane_pressure.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/fileread.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/prop_block_read.i)
- (modules/contact/test/tests/explicit_dynamics/highvel.i)
- (modules/solid_mechanics/test/tests/auxkernels/ranktwoscalaraux.i)
- (modules/solid_mechanics/test/tests/plane_stress/weak_plane_stress_finite.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_read_slip_prop.i)
- (modules/solid_mechanics/test/tests/static_deformations/layered_cosserat_01.i)
- (modules/solid_mechanics/test/tests/multi/eight_surface14.i)
- (modules/combined/test/tests/poro_mechanics/unconsolidated_undrained.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_111tension.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/scalar_kernel/2dscalar.i)
- (modules/solid_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_newmark.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_4/cyl4_template1.i)
- (modules/combined/test/tests/eigenstrain/variable_finite.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_capyramidal_active.i)
- (modules/combined/test/tests/ACGrGrElasticDrivingForce/bicrystal.i)
- (modules/combined/examples/phase_field-mechanics/kks_mechanics_VTS.i)
- (modules/solid_mechanics/test/tests/plane_stress/weak_plane_stress_small.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/large-tests/2d.i)
- (modules/solid_mechanics/test/tests/1D_axisymmetric/axisymm_gps_finite.i)
- (modules/solid_mechanics/test/tests/plane_stress/ad_weak_plane_stress_finite.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/anis_mech_hill_tensor_creep_small_tiny_step_ts_limit_test.i)
- (modules/contact/test/tests/hertz_spherical/hertz_contact_rz.i)
- (modules/contact/test/tests/verification/patch_tests/ring_2/ring2_template2.i)
- (modules/solid_mechanics/test/tests/anisotropic_plasticity/ad_aniso_plasticity_x.i)
- (modules/solid_mechanics/test/tests/2D_geometries/2D-RZ_finiteStrain_test.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_2/cyl2_template2.i)
- (modules/solid_mechanics/test/tests/dynamics/time_integration/hht_test.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/pull_and_shear.i)
- (modules/contact/test/tests/hertz_spherical/hertz_contact_hex27.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/patch/large_patch.i)
- (modules/solid_mechanics/test/tests/umat/predef/dpredef.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/save_euler.i)
- (modules/solid_mechanics/test/tests/shell/static/finite_straintest.i)
- (modules/solid_mechanics/test/tests/shell/static/pressure_error.i)
- (modules/solid_mechanics/test/tests/multi/paper3.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_z_3d.i)
- (modules/contact/test/tests/verification/patch_tests/plane_2/plane2_template2.i)
- (modules/combined/test/tests/phase_field_fracture_viscoplastic/crack2d.i)
- (modules/porous_flow/test/tests/energy_conservation/heat03.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/pull_and_shear_1step.i)
- (modules/solid_mechanics/test/tests/2D_geometries/3D-RZ_finiteStrain_test.i)
- (modules/combined/test/tests/gravity/gravity_qp_select.i)
- (modules/porous_flow/examples/thm_example/2D.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/patch/small_patch.i)
- (modules/contact/test/tests/verification/patch_tests/plane_3/plane3_template1.i)
- (modules/solid_mechanics/test/tests/ad_2D_geometries/2D-RZ_finiteStrain_resid.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined.i)
- (modules/porous_flow/test/tests/mass_conservation/mass11.i)
- (modules/combined/examples/periodic_strain/global_strain_pfm.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_user_object.i)
- (modules/solid_mechanics/test/tests/lagrangian/materials/correctness/neohookean.i)
- (modules/contact/test/tests/verification/hertz_cyl/half_symm_q8/hertz_cyl_half_1deg_template1.i)
- (modules/solid_mechanics/test/tests/isotropic_elasticity_tensor/lambda_shear_modulus_test.i)
- (modules/solid_mechanics/test/tests/dynamics/wave_1D/wave_newmark.i)
- (modules/porous_flow/test/tests/thm_rehbinder/fixed_outer_rz.i)
- (modules/solid_mechanics/test/tests/multi/three_surface00.i)
- (modules/solid_mechanics/test/tests/hyperelastic_viscoplastic/one_elem_multi.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_x_3d_anisoElasticity.i)
- (modules/combined/test/tests/reference_residual/group_variables.i)
- (modules/solid_mechanics/test/tests/drucker_prager/small_deform2_inner_tip.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/scalar_kernel/2drow.i)
- (modules/solid_mechanics/examples/coal_mining/fine.i)
- (modules/solid_mechanics/test/tests/action/reduced_eigenstrain_action.i)
- (modules/solid_mechanics/test/tests/multi/three_surface03.i)
- (modules/solid_mechanics/test/tests/multi/three_surface16.i)
- (modules/contact/test/tests/mortar_cartesian_lms/cylinder_friction_cartesian.i)
- (modules/contact/test/tests/verification/patch_tests/plane_1/plane1_template2.i)
- (modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free.i)
- (modules/solid_mechanics/test/tests/elastic_patch/elastic_patch_quadratic.i)
- (modules/solid_mechanics/test/tests/recompute_radial_return/affine_plasticity.i)
- (modules/solid_mechanics/test/tests/plane_stress/ad_weak_plane_stress_small.i)
- (modules/solid_mechanics/test/tests/anisotropic_plasticity/ad_aniso_plasticity_y.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/small_deform_cosserat4.i)
- (modules/xfem/test/tests/moving_interface/moving_ad_bimaterial.i)
- (modules/solid_mechanics/test/tests/mean_cap_TC/small_deform4.i)
- (modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_2.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/pull_push.i)
- (modules/combined/examples/periodic_strain/global_strain_pfm_3D.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/orthotropic_rotation_Cijkl.i)
- (modules/combined/test/tests/multiphase_mechanics/twophasestress.i)
- (modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/hoop_strain_comparison.i)
- (modules/combined/test/tests/DiffuseCreep/stress.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/only_twinning_fcc.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/small_deform_cosserat1.i)
- (modules/xfem/test/tests/bimaterials/inclusion_ad_bimaterials_2d.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/except4.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform2.i)
- (modules/combined/test/tests/ad_cavity_pressure/additional_volume.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/special/objective_shear.i)
- (modules/xfem/test/tests/bimaterials/glued_bimaterials_2d.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform5.i)
- (modules/porous_flow/test/tests/mass_conservation/mass04.i)
- (modules/solid_mechanics/test/tests/j2_plasticity/hard2.i)
- (modules/solid_mechanics/test/tests/multi/three_surface20.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/bicrystal_test.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_xy_3d_anisoElasticity.i)
- (modules/solid_mechanics/examples/coal_mining/cosserat_mc_wp_sticky_longitudinal.i)
- (modules/solid_mechanics/test/tests/j2_plasticity/small_deform1.i)
- (modules/combined/test/tests/thermo_mech/ad-youngs_modulus_function_temp.i)
- (modules/contact/test/tests/verification/hertz_cyl/half_symm_q4/hertz_cyl_half_1deg_template3.i)
- (modules/solid_mechanics/test/tests/ad_isotropic_elasticity_tensor/youngs_modulus_poissons_ratio_test.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial2.i)
- (modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/ad_aniso_plasticity_x_one.i)
- (modules/solid_mechanics/test/tests/drucker_prager/small_deform3_lode_zero.i)
- (modules/contact/test/tests/verification/patch_tests/ring_4/ring4_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_newmark.i)
- (modules/contact/test/tests/verification/patch_tests/brick_2/brick2_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/initial_stress/mc_tensile.i)
- (modules/solid_mechanics/test/tests/drucker_prager/small_deform3_inner_tip.i)
- (modules/combined/examples/phase_field-mechanics/Conserved.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/aniso_creep_x_3d.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_integration_error.i)
- (modules/solid_mechanics/test/tests/1D_axisymmetric/axisymm_gps_incremental.i)
- (modules/combined/test/tests/cavity_pressure/3d.i)
- (modules/solid_mechanics/test/tests/ad_action/two_block.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_fully_saturated.i)
- (modules/solid_mechanics/test/tests/visco/visco_small_strain.i)
- (modules/solid_mechanics/test/tests/visco/gen_maxwell_relax.i)
- (modules/solid_mechanics/test/tests/shell/static/inclined_straintest.i)
- (modules/contact/test/tests/verification/patch_tests/brick_1/brick1_aug.i)
- (modules/solid_mechanics/examples/coal_mining/coarse.i)
- (modules/solid_mechanics/test/tests/ad_action/two_block_no_action.i)
- (modules/solid_mechanics/test/tests/mean_cap_TC/small_deform5.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/special/patch.i)
- (modules/solid_mechanics/test/tests/visco/gen_kv_creep.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/orthotropic_rotation_Cijkl.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/cross_material/correctness/plastic_j2.i)
- (modules/solid_mechanics/test/tests/jacobian/cto17.i)
- (modules/solid_mechanics/test/tests/volumetric_deform_grad/elastic_stress.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/planar_hard5.i)
- (modules/combined/test/tests/concentration_dependent_elasticity_tensor/concentration_dependent_elasticity_tensor.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/patch/large_patch.i)
- (modules/solid_mechanics/examples/coal_mining/cosserat_mc_wp.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/special/area.i)
- (modules/solid_mechanics/test/tests/global_strain/global_strain_uniaxial.i)
- (modules/combined/test/tests/power_law_hardening/PowerLawHardening.i)
- (modules/combined/test/tests/multiphase_mechanics/multiphasestress.i)
- (modules/solid_mechanics/test/tests/multi/three_surface04.i)
- (modules/xfem/test/tests/bimaterials/inclusion_bimaterials_2d.i)
- (modules/combined/test/tests/eigenstrain/composite.i)
- (modules/solid_mechanics/test/tests/multi/two_surface03.i)
- (modules/combined/test/tests/multiphase_mechanics/simpleeigenstrain.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/upper_twin_fraction_limit.i)
- (modules/solid_mechanics/examples/coal_mining/cosserat_wp_only.i)
- (modules/combined/test/tests/j2_plasticity_vs_LSH/j2_hard1_mod_small_strain.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/linesearch.i)
- (modules/solid_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i)
- (modules/solid_mechanics/test/tests/multi/three_surface06.i)
- (modules/contact/test/tests/hertz_spherical/hertz_contact_hex20.i)
- (modules/contact/test/tests/verification/patch_tests/plane_1/plane1_template1.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_xy_3d_shear.i)
- (modules/solid_mechanics/test/tests/j2_plasticity/solid_mechanics_j2plasticity.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_4/cyl4_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/multi/two_surface02.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/planar3.i)
- (modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/hoop_strain_comparison_coarse_zaxis.i)
- (modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_02_apply_stress.i)
- (modules/combined/test/tests/stateful_mortar_constraints/stateful_mortar_npr.i)
- (modules/solid_mechanics/test/tests/action/two_block_base_name.i)
- (modules/solid_mechanics/test/tests/dynamics/acceleration_bc/AccelerationBC_test.i)
- (modules/porous_flow/examples/coal_mining/coarse_with_fluid.i)
- (modules/solid_mechanics/test/tests/multi/rock1.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/convergence/sd-stress.i)
- (modules/combined/test/tests/inelastic_strain/elas_plas/elas_plas_nl1_cycle.i)
- (modules/solid_mechanics/test/tests/multi/three_surface05.i)
- (modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_3.i)
- (modules/solid_mechanics/test/tests/action/two_block_new.i)
- (modules/contact/test/tests/verification/patch_tests/plane_1/plane1_mu_0_2_pen.i)
- (modules/contact/test/tests/verification/patch_tests/brick_3/brick3_template1.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_4/cyl4_template2.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/cp_slip_rate_integ/crysp_linesearch.i)
- (modules/xfem/test/tests/bimaterials/glued_ad_bimaterials_2d.i)
- (modules/solid_mechanics/test/tests/generalized_plane_strain/out_of_plane_pressure.i)
- (modules/solid_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_newmark_material_dependent.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/karthik-eg-1.i)
- (modules/contact/test/tests/verification/patch_tests/ring_2/ring2_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial3_planar.i)
- (modules/solid_mechanics/test/tests/action/two_block_lagrangian.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_parabolic.i)
- (modules/combined/test/tests/phase_field_fracture/crack2d_computeCrackedStress_smallstrain.i)
- (modules/combined/test/tests/cavity_pressure/additional_volume.i)
- (modules/solid_mechanics/test/tests/multi/paper1.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_1/cyl1_template1.i)
- (modules/solid_mechanics/examples/coal_mining/cosserat_mc_wp_sticky.i)
- (modules/porous_flow/examples/tutorial/11_2D.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_twinning/demonstration_combined_hcp_slip_twins.i)
- (modules/contact/test/tests/mortar_cartesian_lms/cylinder_friction_cartesian_pg.i)
- (modules/solid_mechanics/test/tests/elem_prop_read_user_object/prop_elem_read.i)
- (modules/solid_mechanics/test/tests/mean_cap_TC/small_deform1.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform4.i)
- (modules/solid_mechanics/test/tests/poro/vol_expansion_action.i)
- (modules/solid_mechanics/test/tests/stress_recovery/patch/patch.i)
- (modules/combined/test/tests/DiffuseCreep/variable_base_eigen_strain.i)
- (modules/solid_mechanics/test/tests/drucker_prager/small_deform3_inner_edge.i)
- (modules/solid_mechanics/test/tests/2D_geometries/2D-RZ_finiteStrain_resid.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_aprismatic_capyramidal.i)
- (modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/ad_uniaxial_x.i)
- (modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_01.i)
- (modules/solid_mechanics/test/tests/umat/print_c/print_c.i)
- (modules/combined/test/tests/poro_mechanics/undrained_oedometer.i)
- (modules/solid_mechanics/test/tests/umat/print/print_shear.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_temperature_coefficients_function_variation.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/user_object_011orientation.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_x_3d.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/hcp_thermal_eigenstrain.i)
- (modules/solid_mechanics/test/tests/jacobian/cto18.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_twinning/modified_kalidindi_for_hcp.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/except3.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/user_object.i)
- (modules/solid_mechanics/test/tests/stress_recovery/patch/patch_finite_stress.i)
- (modules/solid_mechanics/test/tests/jacobian_damper/cube_load.i)
- (modules/contact/test/tests/verification/patch_tests/ring_3/ring3_template1.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform3.i)
- (modules/solid_mechanics/test/tests/multi/two_surface01.i)
- (modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_02_apply_disps.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/hcp_volumetric_eigenstrain_decrease.i)
- (modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/hoop_strain_comparison_coarse_xaxis.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/except1.i)
- (modules/combined/test/tests/ad_cavity_pressure/multiple_postprocessors.i)
- (modules/xfem/test/tests/moving_interface/moving_bimaterial_finite_strain.i)
- (modules/combined/test/tests/inelastic_strain/elas_plas/elas_plas_nl1.i)
- (modules/porous_flow/test/tests/poro_elasticity/mandel_fully_saturated_volume.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/test.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/use_substep_dt.i)
- (modules/xfem/test/tests/moving_interface/moving_bimaterial_finite_strain_esm.i)
- (modules/combined/test/tests/generalized_plane_strain_tm_contact/generalized_plane_strain_tm_contact.i)
- (modules/combined/test/tests/phase_field_fracture/crack2d_computeCrackedStress_finitestrain_plastic.i)
- (modules/solid_mechanics/test/tests/lagrangian/materials/correctness/stvenantkirchhoff.i)
- (modules/solid_mechanics/test/tests/mean_cap_TC/small_deform2.i)
- (modules/solid_mechanics/test/tests/drucker_prager/small_deform3_native.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/planar_hard4.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/patch/small_patch.i)
- (modules/porous_flow/test/tests/poro_elasticity/mandel_constM.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial1.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/special/patch.i)
- (modules/solid_mechanics/test/tests/anisotropic_plasticity/ad_aniso_plasticity_x_rotate.i)
- (modules/solid_mechanics/test/tests/action/no_block.i)
- (modules/solid_mechanics/test/tests/initial_stress/gravity.i)
- (modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment.i)
- (modules/solid_mechanics/test/tests/mean_cap_TC/small_deform3.i)
- (modules/contact/test/tests/hertz_spherical/hertz_contact_rz_quad8.i)
- (modules/solid_mechanics/test/tests/orthotropic_plasticity/orthotropic.i)
- (modules/solid_mechanics/test/tests/dynamics/time_integration/hht_test_ti.i)
- (modules/combined/test/tests/beam_eigenstrain_transfer/subapp2_uo_transfer.i)
- (modules/contact/test/tests/verification/patch_tests/plane_3/plane3_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_squares.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/aniso_creep_integration_error.i)
- (modules/solid_mechanics/test/tests/lagrangian/materials/badproperties/stvenantkirchhoff.i)
- (modules/solid_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_newmark_action.i)
- (modules/solid_mechanics/test/tests/elastic_patch/elastic_patch.i)
- (modules/combined/test/tests/eigenstrain/variable_cahnhilliard.i)
- (modules/solid_mechanics/test/tests/mean_cap/small_deform2.i)
- (modules/solid_mechanics/test/tests/isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i)
- (modules/combined/test/tests/j2_plasticity_vs_LSH/necking/j2_hard1_neckingRZ.i)
- (modules/contact/test/tests/verification/patch_tests/brick_4/brick4_template1.i)
- (modules/solid_mechanics/test/tests/eigenstrain/reducedOrderRZLinearConstant.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/rotation_matrix_update_euler_angle_111_orientation.i)
- (modules/combined/test/tests/eigenstrain/inclusion.i)
- (modules/contact/test/tests/verification/patch_tests/brick_2/brick2_aug.i)
- (modules/solid_mechanics/test/tests/static_deformations/cosserat_glide_fake_plastic.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/stabilization/cook_large.i)
- (modules/contact/test/tests/explicit_dynamics/settlement.i)
- (modules/solid_mechanics/test/tests/multi/three_surface08.i)
- (modules/contact/test/tests/verification/patch_tests/ring_1/ring1_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/static_deformations/layered_cosserat_03.i)
- (modules/contact/test/tests/verification/patch_tests/brick_3/brick3_mu_0_2_pen.i)
- (modules/porous_flow/test/tests/poro_elasticity/mandel.i)
- (modules/contact/test/tests/verification/patch_tests/mindlin/cylinder_friction_node_face.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/linesearch.i)
- (modules/solid_mechanics/test/tests/capped_mohr_coulomb/small_deform9_cosserat.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/except2.i)
- (modules/xfem/test/tests/moving_interface/moving_bimaterial.i)
- (modules/porous_flow/test/tests/poro_elasticity/vol_expansion.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_aprismatic_active.i)
- (modules/solid_mechanics/test/tests/mean_cap/small_deform1.i)
- (modules/contact/test/tests/verification/patch_tests/brick_2/brick2_template1.i)
- (modules/solid_mechanics/test/tests/ad_isotropic_elasticity_tensor/bulk_modulus_shear_modulus_test.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/multiple_eigenstrains_test.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/orthotropic_rotation_Cijkl.i)
- (modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/hoop_strain_comparison_coarse_yaxis.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/substep.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/special/area.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/stabilization/cook_small.i)
- (modules/contact/test/tests/verification/patch_tests/plane_3/plane3_template2.i)
- (modules/solid_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement_ti.i)
- (modules/combined/test/tests/beam_eigenstrain_transfer/subapp1_uo_transfer.i)
- (modules/solid_mechanics/test/tests/j2_plasticity/small_deform2.i)
- (modules/combined/test/tests/cavity_pressure/multiple_postprocessors.i)
- (modules/combined/test/tests/DiffuseCreep/stress_flux_n_gb_relax.i)
- (modules/solid_mechanics/test/tests/anisotropic_plasticity/anis_plasticity_test.i)
- (modules/contact/test/tests/pdass_problems/ironing_penalty_al.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/action/noaction_2d.i)
- (modules/solid_mechanics/test/tests/ad_2D_geometries/2D-RZ_finiteStrain_test.i)
- (modules/solid_mechanics/test/tests/multi/special_joint1.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/substep.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_y_3d.i)
- (modules/solid_mechanics/test/tests/multi/three_surface11.i)
- (modules/contact/test/tests/pdass_problems/ironing_penalty_action.i)
- (modules/solid_mechanics/test/tests/lagrangian/total/rates/shear.i)
- (modules/solid_mechanics/test/tests/hyperelastic_viscoplastic/one_elem_linear_harden.i)
- (modules/xfem/test/tests/moving_interface/moving_bimaterial_finite_strain_esm_using_cut_mesh.i)
- (modules/solid_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_hht_ti.i)
- (modules/solid_mechanics/test/tests/dynamics/time_integration/hht_test_action.i)
- (modules/solid_mechanics/test/tests/ad_action/two_block_new.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_temperature_coefficients_function.i)
- (modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/ad_aniso_plasticity_x_one_ref.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_substep.i)
- (modules/solid_mechanics/test/tests/drucker_prager/small_deform2_inner_edge.i)
- (modules/solid_mechanics/test/tests/finite_strain_tensor_mechanics_tests/finite_strain_patch.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/large-tests/1d.i)
- (modules/combined/test/tests/poro_mechanics/pp_generation_unconfined.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_1/cyl1_template2.i)
- (modules/solid_mechanics/test/tests/multi/paper5.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_2/cyl2_template1.i)
- (modules/solid_mechanics/test/tests/interface_stress/test.i)
- (modules/xfem/test/tests/moving_interface/moving_bimaterial_finite_strain_cut_mesh.i)
- (modules/solid_mechanics/test/tests/thermal_expansion/ad_constant_expansion_stress_free_temp.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_constM.i)
- (modules/solid_mechanics/test/tests/lagrangian/total/rates/rotation.i)
- (modules/solid_mechanics/examples/coal_mining/cosserat_mc_only.i)
- (modules/solid_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement.i)
- (modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_01_slippery.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/beam.i)
- (modules/combined/test/tests/j2_plasticity_vs_LSH/necking/j2_hard1_necking.i)
- (modules/solid_mechanics/test/tests/1D_axisymmetric/axisymm_gps_small.i)
- (modules/solid_mechanics/test/tests/shell/static/straintest.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/push_and_shear.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/cp_slip_rate_integ/crysp.i)
- (modules/solid_mechanics/test/tests/capped_mohr_coulomb/small_deform5.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial3.i)
- (modules/combined/test/tests/eigenstrain/variable.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/action/no_action_L.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/exception.i)
- (modules/solid_mechanics/test/tests/elem_prop_read_user_object/prop_grain_read_3d.i)
- (modules/contact/test/tests/verification/patch_tests/brick_4/brick4_template2.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_3/cyl3_template1.i)
- (modules/solid_mechanics/test/tests/umat/predef/predef.i)
- (modules/solid_mechanics/test/tests/multi/three_surface15.i)
- (modules/solid_mechanics/test/tests/stress_recovery/stress_concentration/stress_concentration.i)
- (modules/solid_mechanics/test/tests/multi/three_surface01.i)
- (modules/solid_mechanics/test/tests/umat/predef/predef_multiple.i)
- (modules/combined/test/tests/cavity_pressure/initial_temperature.i)
- (modules/solid_mechanics/test/tests/multi/three_surface07.i)
- (modules/porous_flow/examples/tutorial/11.i)
- (modules/solid_mechanics/test/tests/visco/burgers_creep.i)
- (modules/solid_mechanics/test/tests/multi/mc_wpt_1.i)
- (modules/porous_flow/examples/coal_mining/fine_with_fluid.i)
- (modules/solid_mechanics/test/tests/jacobian/cto16.i)
- (modules/porous_flow/examples/thm_example/2D_c.i)
- (modules/combined/test/tests/DiffuseCreep/strain.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/rates/shear.i)
- (modules/solid_mechanics/test/tests/multi/three_surface22.i)
- (modules/solid_mechanics/test/tests/umat/predef/predef_multiple_mat.i)
- (modules/solid_mechanics/test/tests/static_deformations/cosserat_glide.i)
- (modules/solid_mechanics/test/tests/multi/three_surface02.i)
- (modules/solid_mechanics/test/tests/multi/two_surface04.i)
- (modules/combined/test/tests/nodal_patch_recovery/npr_with_lower_domains.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_100compression.i)
- (modules/solid_mechanics/test/tests/j2_plasticity/small_deform3.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/scalar_kernel/2dsole.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/small-tests/2d.i)
- (modules/solid_mechanics/test/tests/ad_2D_geometries/3D-RZ_finiteStrain_test.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/small_deform1.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/planar_hard3.i)
- (modules/solid_mechanics/test/tests/isotropic_elasticity_tensor/youngs_modulus_poissons_ratio_test.i)
- (modules/solid_mechanics/test/tests/global_strain/global_strain_shear.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/stabilization/cook_large.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/action/noaction_3d.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/large-tests/3d.i)
- (modules/porous_flow/test/tests/mass_conservation/mass13.i)
- (modules/contact/test/tests/pdass_problems/cylinder_friction.i)
- (modules/solid_mechanics/test/tests/shell/static/pinched_cylinder_symm_unstructured.i)
- (modules/contact/test/tests/verification/patch_tests/brick_3/brick3_template2.i)
- (modules/solid_mechanics/test/tests/drucker_prager/small_deform3_outer_tip.i)
- (modules/solid_mechanics/test/tests/auxkernels/principalstress.i)
- (modules/contact/test/tests/verification/hertz_cyl/half_symm_q8/hertz_cyl_half_1deg_template3.i)
- (modules/solid_mechanics/examples/coal_mining/cosserat_elastic.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/special/objective_shear.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform_hard3.i)
- (modules/contact/test/tests/verification/patch_tests/brick_1/brick1_mu_0_2_pen.i)
- (modules/porous_flow/test/tests/mass_conservation/mass12.i)
- (modules/solid_mechanics/test/tests/elem_prop_read_user_object/prop_grain_read.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_no_substructure.i)
- (modules/solid_mechanics/test/tests/hyperelastic_viscoplastic/one_elem.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/small_deform_cosserat3.i)
- (modules/solid_mechanics/test/tests/recompute_radial_return/cp_affine_plasticity.i)
- (modules/contact/test/tests/verification/patch_tests/brick_2/brick2_template2.i)
- (modules/xfem/test/tests/crack_tip_enrichment/edge_crack_2d.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_no_negative_aprismatic.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial2_planar.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/planar_hard2.i)
- (modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_4.i)
- (modules/solid_mechanics/test/tests/shell/static/straintest_shear.i)
- (modules/contact/test/tests/verification/patch_tests/ring_4/ring4_template2.i)
- (modules/solid_mechanics/test/tests/line_material_rank_two_sampler/rank_two_sampler.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/special/rotate.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_011orientation.i)
- (modules/combined/test/tests/thermo_mech/youngs_modulus_function_temp.i)
- (modules/solid_mechanics/test/tests/umat/print_c/print_compare_c.i)
- (modules/contact/test/tests/verification/patch_tests/ring_3/ring3_template2.i)
- (modules/solid_mechanics/test/tests/mean_cap_TC/small_deform7.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/exception.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_increase.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform1_uo.i)
- (modules/solid_mechanics/test/tests/multi/three_surface13.i)
- (modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/ad_uniaxial_y.i)
- (modules/contact/test/tests/verification/patch_tests/brick_1/brick1_template1.i)
- (modules/combined/examples/phase_field-mechanics/hex_grain_growth_2D_eldrforce.i)
- (modules/solid_mechanics/test/tests/initial_stress/gravity_with_aux.i)
- (modules/contact/test/tests/pdass_problems/ironing_penalty.i)
- (modules/solid_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_hht.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/thermal_eigenstrain_test.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/convergence/ld-strain.i)
- (modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free_orientation_inclined_hht.i)
- (modules/solid_mechanics/test/tests/thermal_expansion/constant_expansion_stress_free_temp.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_representative_slip_systems.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_iso_creep_x_3d.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp.i)
- (modules/combined/test/tests/DiffuseCreep/strain_gb_relax.i)
- (modules/solid_mechanics/test/tests/multi/special_rock1.i)
- (modules/combined/test/tests/poro_mechanics/pp_generation_unconfined_action.i)
- (modules/contact/test/tests/pdass_problems/cylinder_friction_penalty.i)
- (modules/xfem/test/tests/crack_tip_enrichment/penny_crack_3d.i)
- (modules/solid_mechanics/test/tests/j2_plasticity/hard1.i)
- (modules/solid_mechanics/test/tests/multi/three_surface12.i)
- (modules/solid_mechanics/test/tests/action/two_block.i)
- (modules/solid_mechanics/test/tests/poro/vol_expansion.i)
- (modules/solid_mechanics/test/tests/dynamics/time_integration/newmark.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_3/cyl3_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_fileread.i)
- (modules/fsi/test/tests/fsi_acoustics/3D_struc_acoustic/3D_struc_acoustic.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/convergence/sd-strain.i)
- (modules/solid_mechanics/test/tests/multi/four_surface24.i)
- (modules/solid_mechanics/test/tests/lagrangian/materials/correctness/hyperelastic_J2_plastic.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform_hard2.i)
- (modules/solid_mechanics/test/tests/multi/three_surface09.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_linesearch.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_3/cyl3_template2.i)
- (modules/contact/test/tests/pdass_problems/ironing.i)
- (modules/solid_mechanics/test/tests/isotropicSD_plasticity/isotropicSD.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/planar1.i)
- (modules/contact/test/tests/verification/patch_tests/ring_1/ring1_template2.i)
- (modules/solid_mechanics/test/tests/finite_strain_tensor_mechanics_tests/elastic_rotation.i)
- (modules/solid_mechanics/test/tests/multi/three_surface10.i)
- (modules/contact/test/tests/mortar_dynamics/block-dynamics-friction-creep.i)
- (modules/contact/test/tests/verification/hertz_cyl/quart_symm_q4/hertz_cyl_qsym_1deg_template1.i)
- (modules/solid_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement_with_gravity.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/user_object_Voce_BCC.i)
- (modules/solid_mechanics/examples/cframe_iga/cframe_iga.i)
- (modules/solid_mechanics/test/tests/plane_stress/weak_plane_stress_incremental.i)
- (modules/solid_mechanics/test/tests/jacobian/cto15.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform6.i)
- (modules/solid_mechanics/test/tests/ad_isotropic_elasticity_tensor/lambda_shear_modulus_test.i)
- (modules/contact/test/tests/verification/patch_tests/plane_2/plane2_template1.i)
- (modules/contact/test/tests/mortar_cartesian_lms/cylinder_friction_cartesian_vcp.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/planar_hard1.i)
- (modules/solid_mechanics/test/tests/material_limit_time_step/creep/nafems_test5a_lim.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_cutback.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_temperature_coefficients.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/rates/rotation.i)
- (modules/contact/test/tests/verification/patch_tests/plane_4/plane4_mu_0_2_pen.i)
- (modules/combined/test/tests/inelastic_strain/creep/creep_nl1.i)
- (modules/solid_mechanics/test/tests/drucker_prager/small_deform2_lode_zero.i)
- (modules/solid_mechanics/test/tests/thermal_expansion/multiple_thermal_eigenstrains.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/pull_push_h.i)
- (modules/contact/test/tests/verification/patch_tests/plane_4/plane4_template1.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/stabilization/cook_small.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/convergence/ld-stress.i)
- (modules/porous_flow/test/tests/energy_conservation/heat04.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/small-tests/1d.i)
- (modules/porous_flow/test/tests/poro_elasticity/mandel_fully_saturated.i)
- (modules/solid_mechanics/test/tests/eigenstrain/reducedOrderRZQuadratic.i)
- (modules/fsi/test/tests/fsi_acoustics/1D_struc_acoustic/1D_struc_acoustic.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_2/cyl2_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/drucker_prager/small_deform2_native.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_save_euler.i)
- (modules/combined/test/tests/DiffuseCreep/stress_based_chem_pot.i)
- (modules/solid_mechanics/test/tests/lagrangian/cartesian/total/cross_material/correctness/plastic_j2.i)
- (modules/solid_mechanics/test/tests/global_strain/global_strain_disp.i)
- (modules/combined/test/tests/power_law_hardening/ADPowerLawHardening.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform_hard1.i)
- (modules/solid_mechanics/test/tests/visco/gen_maxwell_driving.i)
- (modules/combined/test/tests/j2_plasticity_vs_LSH/j2_hard1_mod_optimised.i)
- (modules/contact/test/tests/explicit_dynamics/test_balance.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform2_small_strain.i)
- (modules/solid_mechanics/test/tests/multi/three_surface14.i)
- (modules/solid_mechanics/test/tests/multi/six_surface14.i)
- (modules/solid_mechanics/test/tests/capped_weak_plane/small_deform_cosserat2.i)
- (modules/solid_mechanics/test/tests/isotropicSD_plasticity/powerRuleHardening.i)
- (modules/solid_mechanics/test/tests/dynamics/acceleration_bc/AccelerationBC_test_ti.i)
- (modules/solid_mechanics/test/tests/shell/static/beam_bending_moment_AD_2.i)
- (modules/contact/test/tests/verification/patch_tests/ring_2/ring2_template1.i)
- (modules/contact/test/tests/verification/patch_tests/plane_2/plane2_mu_0_2_pen.i)
- (modules/contact/test/tests/verification/patch_tests/ring_4/ring4_template1.i)
- (modules/solid_mechanics/test/tests/lagrangian/materials/correctness/cauchy-elastic.i)
- (modules/solid_mechanics/test/tests/shell/static/tapered.i)
- (modules/combined/test/tests/surface_tension_KKS/surface_tension_KKS.i)
- (modules/solid_mechanics/test/tests/initial_stress/gravity_cosserat.i)
- (modules/solid_mechanics/test/tests/mohr_coulomb/small_deform_hard_cubic.i)
- (modules/solid_mechanics/test/tests/multi/three_surface21.i)
- (modules/solid_mechanics/test/tests/jacobian/cto14.i)
- (modules/contact/test/tests/verification/hertz_cyl/quart_symm_q8/hertz_cyl_qsym_1deg_template1.i)
- (modules/contact/test/tests/verification/patch_tests/cyl_1/cyl1_mu_0_2_pen.i)
- (modules/contact/test/tests/verification/patch_tests/plane_4/plane4_template2.i)
- (modules/solid_mechanics/test/tests/static_deformations/layered_cosserat_02.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/hcp_volumetric_eigenstrain.i)
- (modules/contact/test/tests/verification/hertz_cyl/half_symm_q4/hertz_cyl_half_1deg_template1.i)
- (modules/combined/examples/phase_field-mechanics/kks_mechanics_KHS.i)
- (modules/solid_mechanics/test/tests/ad_anisotropic_creep/aniso_iso_creep_x_3d.i)
- (modules/combined/test/tests/poro_mechanics/borehole_lowres.i)
- (modules/porous_flow/test/tests/poro_elasticity/undrained_oedometer.i)
- (modules/combined/test/tests/phase_field_fracture/crack2d_computeCrackedStress_finitestrain_elastic.i)
- (modules/combined/test/tests/ad_cavity_pressure/3d.i)
- (modules/solid_mechanics/test/tests/shell/static/beam_bending_moment_AD.i)
- (modules/combined/test/tests/poro_mechanics/borehole_highres.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_error.i)
- (modules/solid_mechanics/test/tests/multi/two_surface05.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_test.i)
- (modules/contact/test/tests/verification/patch_tests/ring_3/ring3_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/eigenstrain/reducedOrderRZLinear.i)
- (modules/solid_mechanics/test/tests/drucker_prager/small_deform2_outer_tip.i)
- (modules/combined/examples/phase_field-mechanics/poly_grain_growth_2D_eldrforce.i)
- (modules/solid_mechanics/test/tests/isotropic_elasticity_tensor/bulk_modulus_shear_modulus_test.i)
- (modules/solid_mechanics/test/tests/mean_cap_TC/small_deform6.i)
- (modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/ad_uniaxial_x_non_linear.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_fully_saturated_volume.i)
- (modules/solid_mechanics/test/tests/volumetric_deform_grad/volumetric_strain_interface.i)
- (modules/solid_mechanics/test/tests/ad_isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i)
- (modules/solid_mechanics/test/tests/umat/print/print.i)
- (modules/combined/test/tests/poro_mechanics/mandel.i)
- (modules/solid_mechanics/test/tests/interface_stress/multi.i)
(modules/solid_mechanics/test/tests/elastic_patch/elastic_patch.i)
# Patch Test
# This test is designed to compute constant xx, yy, zz, xy, yz, and zx
# stress on a set of irregular hexes. The mesh is composed of one
# block with seven elements. The elements form a unit cube with one
# internal element. There is a nodeset for each exterior node.
# The cube is displaced by 1e-6 units in x, 2e-6 in y, and 3e-6 in z.
# The faces are sheared as well (1e-6, 2e-6, and 3e-6 for xy, yz, and
# zx). This gives a uniform strain/stress state for all six unique
# tensor components.
# With Young's modulus at 1e6 and Poisson's ratio at 0, the shear
# modulus is 5e5 (G=E/2/(1+nu)). Therefore,
#
# stress xx = 1e6 * 1e-6 = 1
# stress yy = 1e6 * 2e-6 = 2
# stress zz = 1e6 * 3e-6 = 3
# stress xy = 2 * 5e5 * 1e-6 / 2 = 0.5
# (2 * G * gamma_xy / 2 = 2 * G * epsilon_xy)
# stress yz = 2 * 5e5 * 2e-6 / 2 = 1
# stress zx = 2 * 5e5 * 3e-6 / 2 = 1.5
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
block = '1 2 3 4 5 6 7'
[]
[Mesh]#Comment
file = elastic_patch.e
[] # Mesh
[Functions]
[./rampConstant1]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 1e-6
[../]
[./rampConstant2]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 2e-6
[../]
[./rampConstant3]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 3e-6
[../]
[./rampConstant4]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 4e-6
[../]
[./rampConstant6]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 6e-6
[../]
[] # Functions
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
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
[../]
[./elastic_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./hydrostatic]
order = CONSTANT
family = MONOMIAL
[../]
[./firstinv]
order = CONSTANT
family = MONOMIAL
[../]
[./secondinv]
order = CONSTANT
family = MONOMIAL
[../]
[./thirdinv]
order = CONSTANT
family = MONOMIAL
[../]
[./maxprincipal]
order = CONSTANT
family = MONOMIAL
[../]
[./midprincipal]
order = CONSTANT
family = MONOMIAL
[../]
[./minprincipal]
order = CONSTANT
family = MONOMIAL
[../]
[./direction]
order = CONSTANT
family = MONOMIAL
[../]
[./max_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./sint]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Kernels]
[SolidMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./elastic_energy]
type = ElasticEnergyAux
variable = elastic_energy
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = vonmisesStress
[../]
[./hydrostatic]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic
scalar_type = hydrostatic
[../]
[./fi]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = firstinv
scalar_type = firstinvariant
[../]
[./si]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = secondinv
scalar_type = secondinvariant
[../]
[./ti]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = thirdinv
scalar_type = thirdinvariant
[../]
[./maxprincipal]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = maxprincipal
scalar_type = MaxPRiNCIpAl
[../]
[./midprincipal]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = midprincipal
scalar_type = MidPRiNCIpAl
[../]
[./minprincipal]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = minprincipal
scalar_type = MiNPRiNCIpAl
[../]
[./direction]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = direction
scalar_type = direction
direction = '1 1 1'
[../]
[./max_shear]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = max_shear
scalar_type = MaxShear
[../]
[./sint]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = sint
scalar_type = StressIntensity
[../]
[] # AuxKernels
[BCs]
[./node1_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./node1_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = rampConstant2
[../]
[./node1_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 1
function = rampConstant3
[../]
[./node2_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = rampConstant1
[../]
[./node2_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = rampConstant2
[../]
[./node2_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 2
function = rampConstant6
[../]
[./node3_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 3
function = rampConstant1
[../]
[./node3_y]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[../]
[./node3_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 3
function = rampConstant3
[../]
[./node4_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0.0
[../]
[./node4_y]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[./node4_z]
type = DirichletBC
variable = disp_z
boundary = 4
value = 0.0
[../]
[./node5_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 5
function = rampConstant1
[../]
[./node5_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 5
function = rampConstant4
[../]
[./node5_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 5
function = rampConstant3
[../]
[./node6_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 6
function = rampConstant2
[../]
[./node6_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 6
function = rampConstant4
[../]
[./node6_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 6
function = rampConstant6
[../]
[./node7_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 7
function = rampConstant2
[../]
[./node7_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 7
function = rampConstant2
[../]
[./node7_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 7
function = rampConstant3
[../]
[./node8_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 8
function = rampConstant1
[../]
[./node8_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 8
function = rampConstant2
[../]
[./node8_z]
type = DirichletBC
variable = disp_z
boundary = 8
value = 0.0
[../]
[] # BCs
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeFiniteStrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[] # Materials
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 2
end_time = 2.0
[] # Executioner
[Outputs]
exodus = true
[] # Outputs
(modules/solid_mechanics/test/tests/elastic_patch/elastic_patch.i)
# Patch Test
# This test is designed to compute constant xx, yy, zz, xy, yz, and zx
# stress on a set of irregular hexes. The mesh is composed of one
# block with seven elements. The elements form a unit cube with one
# internal element. There is a nodeset for each exterior node.
# The cube is displaced by 1e-6 units in x, 2e-6 in y, and 3e-6 in z.
# The faces are sheared as well (1e-6, 2e-6, and 3e-6 for xy, yz, and
# zx). This gives a uniform strain/stress state for all six unique
# tensor components.
# With Young's modulus at 1e6 and Poisson's ratio at 0, the shear
# modulus is 5e5 (G=E/2/(1+nu)). Therefore,
#
# stress xx = 1e6 * 1e-6 = 1
# stress yy = 1e6 * 2e-6 = 2
# stress zz = 1e6 * 3e-6 = 3
# stress xy = 2 * 5e5 * 1e-6 / 2 = 0.5
# (2 * G * gamma_xy / 2 = 2 * G * epsilon_xy)
# stress yz = 2 * 5e5 * 2e-6 / 2 = 1
# stress zx = 2 * 5e5 * 3e-6 / 2 = 1.5
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
block = '1 2 3 4 5 6 7'
[]
[Mesh]#Comment
file = elastic_patch.e
[] # Mesh
[Functions]
[./rampConstant1]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 1e-6
[../]
[./rampConstant2]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 2e-6
[../]
[./rampConstant3]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 3e-6
[../]
[./rampConstant4]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 4e-6
[../]
[./rampConstant6]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 6e-6
[../]
[] # Functions
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
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
[../]
[./elastic_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./hydrostatic]
order = CONSTANT
family = MONOMIAL
[../]
[./firstinv]
order = CONSTANT
family = MONOMIAL
[../]
[./secondinv]
order = CONSTANT
family = MONOMIAL
[../]
[./thirdinv]
order = CONSTANT
family = MONOMIAL
[../]
[./maxprincipal]
order = CONSTANT
family = MONOMIAL
[../]
[./midprincipal]
order = CONSTANT
family = MONOMIAL
[../]
[./minprincipal]
order = CONSTANT
family = MONOMIAL
[../]
[./direction]
order = CONSTANT
family = MONOMIAL
[../]
[./max_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./sint]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Kernels]
[SolidMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./elastic_energy]
type = ElasticEnergyAux
variable = elastic_energy
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = vonmisesStress
[../]
[./hydrostatic]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic
scalar_type = hydrostatic
[../]
[./fi]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = firstinv
scalar_type = firstinvariant
[../]
[./si]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = secondinv
scalar_type = secondinvariant
[../]
[./ti]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = thirdinv
scalar_type = thirdinvariant
[../]
[./maxprincipal]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = maxprincipal
scalar_type = MaxPRiNCIpAl
[../]
[./midprincipal]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = midprincipal
scalar_type = MidPRiNCIpAl
[../]
[./minprincipal]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = minprincipal
scalar_type = MiNPRiNCIpAl
[../]
[./direction]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = direction
scalar_type = direction
direction = '1 1 1'
[../]
[./max_shear]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = max_shear
scalar_type = MaxShear
[../]
[./sint]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = sint
scalar_type = StressIntensity
[../]
[] # AuxKernels
[BCs]
[./node1_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./node1_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = rampConstant2
[../]
[./node1_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 1
function = rampConstant3
[../]
[./node2_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = rampConstant1
[../]
[./node2_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = rampConstant2
[../]
[./node2_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 2
function = rampConstant6
[../]
[./node3_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 3
function = rampConstant1
[../]
[./node3_y]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[../]
[./node3_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 3
function = rampConstant3
[../]
[./node4_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0.0
[../]
[./node4_y]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[./node4_z]
type = DirichletBC
variable = disp_z
boundary = 4
value = 0.0
[../]
[./node5_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 5
function = rampConstant1
[../]
[./node5_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 5
function = rampConstant4
[../]
[./node5_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 5
function = rampConstant3
[../]
[./node6_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 6
function = rampConstant2
[../]
[./node6_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 6
function = rampConstant4
[../]
[./node6_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 6
function = rampConstant6
[../]
[./node7_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 7
function = rampConstant2
[../]
[./node7_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 7
function = rampConstant2
[../]
[./node7_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 7
function = rampConstant3
[../]
[./node8_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 8
function = rampConstant1
[../]
[./node8_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 8
function = rampConstant2
[../]
[./node8_z]
type = DirichletBC
variable = disp_z
boundary = 8
value = 0.0
[../]
[] # BCs
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeFiniteStrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[] # Materials
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 2
end_time = 2.0
[] # Executioner
[Outputs]
exodus = true
[] # Outputs
(modules/contact/test/tests/verification/patch_tests/brick_1/brick1_template2.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick1_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
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 = 5e+9
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_x_3d_shear.i)
# This test simulates shear test. The shear load is applied in one direction.
#
# -------------------
# ANALYTICAL SOLUTION
# -------------------
# https://mooseframework.inl.gov/source/materials/HillCreepStressUpdate.html
# q = [F(S22-S33)^2 + G(S33-S11)^2 + H(S11-S22)^2 + 2L(S23)^2 + 2M(S13)^2 + 2N(S12)^2]^0.5
# S12 = 10 Pa; other compoenents of stress are zero since it is a uniaxial test
# F=0.5 G=0.25 H=0.3866 L=1.6413 M=1.6413 N=1.2731 (as used in this test)
# Substituting the values of stress components and F, G, H, L, M and N we obtain
# q = 15.9568 Pa
#
# Equivalent_creep_strain_rate = A(q)^n (power law creep rate used in this test)
# Substituting A=1e-16 and n=9, and q as calculated above, we obtain
# Equivalent_creep_strain_rate = 6.7068e-06
#
# The 12 (xy) component of creep_strain_tensor is calculated as below
# creep_strain_tensor_12 = (Equivalent_creep_strain_rate / q) * 2.0 * N * S12 * time_increment
# Substituting the values and time_increment as 0.001 we obtain the analytical solution.
#
# MOOSE Analytical
# creep_strain_tensor_12 1.070870e-09 1.07019e-09
#
# -----------------------------------------
# PYTHON SCRIPT FOR THE ANALYTICAL SOLUTION
# -----------------------------------------
# import math
# F=0.5; G=0.25; H=0.3866; L=1.6413; M=1.6413; N=1.2731
# S11=0; S22=0; S33=0; S23=0; S13=0; S12=10
# q = math.sqrt(F*(S22-S33)**2 + G*(S33-S11)**2 + H*(S11-S22)**2 + 2*L*(S23)**2 + 2*M*(S13)**2 + 2*N*(S12)**2)
# print(q)
# A=1e-16; n=9; time=0.0001
# equivalent_creep_strain_rate = A*(q**n)
# print(equivalent_creep_strain_rate)
# equivalent_creep_strain_rate_12=(equivalent_creep_strain_rate / q) * 2.0 * N * S12 * time
# print(equivalent_creep_strain_rate_12)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 1.0
ymax = 1.0
zmax = 1.0
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[sigma_xy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
generate_output = 'elastic_strain_xy stress_xy'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_creep_two"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.25 0.3866 1.6413 1.6413 1.2731"
[]
[trial_creep_two]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
absolute_tolerance = 1e-20
relative_tolerance = 1e-20
# Force it to not use integration error
max_integration_error = 100.0
anisotropic_elasticity = true
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[shear_load]
type = ADNeumannBC
variable = disp_x
boundary = top
value = 10
[]
[no_disp_y_top]
type = ADDirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err'
petsc_options_value = 'lu superlu_dist 1e-5'
nl_rel_tol = 1.0e-14
nl_abs_tol = 1.0e-14
l_max_its = 10
num_steps = 5
dt = 1.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xy]
type = ElementAverageValue
variable = creep_strain_xy
execute_on = 'TIMESTEP_END'
[]
[elastic_strain_xy]
type = ElementAverageValue
variable = elastic_strain_xy
execute_on = 'TIMESTEP_END'
[]
[sigma_xy]
type = ElementAverageValue
variable = stress_xy
execute_on = 'TIMESTEP_END'
[]
[]
[Outputs]
csv = true
exodus = false
perf_graph = true
# unnecessary output variables
hide = 'matl_ts_min max_disp_x max_disp_y max_hydro dt num_lin num_nonlin'
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/use_substep_dt.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[ux]
[]
[uy]
[]
[uz]
[]
[]
[AuxVariables]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[rotout]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[gss]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[]
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = pk2
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[gss]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[]
[slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_rate_gss
index = 0
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[]
[pushy]
type = FunctionDirichletBC
variable = uy
boundary = top
function = '-0.1*t'
[]
[pullz]
type = FunctionDirichletBC
variable = uz
boundary = front
function = '0.1*t'
[]
[]
[UserObjects]
[slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[]
[slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[]
[state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
groups = '0 4 8 12'
group_values = '60.8 60.8 60.8'
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[]
[state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[]
[]
[Materials]
[crysp]
type = FiniteStrainUObasedCP
block = 0
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'
[]
[strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[]
[elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[gss]
type = ElementAverageValue
variable = gss
[]
[slip_increment]
type = ElementAverageValue
variable = slip_increment
[]
[uy_avg_top]
type = SideAverageValue
variable = uy
boundary = top
[]
[uz_avg_front]
type = SideAverageValue
variable = uz
boundary = front
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1.0
num_steps = 5
dtmin = 0.001
nl_abs_step_tol = 1e-10
[]
[Outputs]
csv = true
[]
(modules/porous_flow/test/tests/poro_elasticity/pp_generation.i)
# A sample is constrained on all sides and its boundaries are
# also impermeable. Fluid is pumped into the sample via a
# volumetric source (ie kg/second per cubic meter), and the
# rise in porepressure is observed.
#
# Source = s (units = kg/m^3/second)
#
# Expect:
# fluid_mass = mass0 + s*t
# stress = 0 (remember this is effective stress)
# Porepressure = fluid_bulk*log(fluid_mass_density/density_P0), where fluid_mass_density = fluid_mass*porosity
# porosity = biot+(phi0-biot)*exp(pp(biot-1)/solid_bulk)
#
# Parameters:
# Biot coefficient = 0.3
# Phi0 = 0.1
# Solid Bulk modulus = 2
# fluid_bulk = 13
# density_P0 = 1
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[]
[confinez]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back front'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
component = 2
variable = disp_z
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[flux]
type = PorousFlowAdvectiveFlux
variable = porepressure
gravity = '0 0 0'
fluid_component = 0
[]
[source]
type = BodyForce
function = 0.1
variable = porepressure
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[porosity]
type = PorousFlowPropertyAux
variable = porosity
property = porosity
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 13
density0 = 1
thermal_expansion = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseFullySaturated
porepressure = porepressure
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
porosity_zero = 0.1
biot_coefficient = 0.3
solid_bulk = 2
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1 0 0 0 1 0 0 0 1' # unimportant
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 0 # unimportant in this fully-saturated situation
phase = 0
[]
[]
[Functions]
[porosity_analytic]
type = ParsedFunction
expression = 'biot+(phi0-biot)*exp(pp*(biot-1)/bulk)'
symbol_names = 'biot phi0 pp bulk'
symbol_values = '0.3 0.1 p0 2'
[]
[]
[Postprocessors]
[fluid_mass]
type = PorousFlowFluidMass
fluid_component = 0
execute_on = 'initial timestep_end'
[]
[porosity]
type = PointValue
outputs = 'console csv'
point = '0 0 0'
variable = porosity
[]
[p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[]
[porosity_analytic]
type = FunctionValuePostprocessor
function = porosity_analytic
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
variable = disp_z
[]
[stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[]
[stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[]
[stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_max_it -snes_stol'
petsc_options_value = 'bcgs bjacobi 10000 1E-11'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = pp_generation
[csv]
type = CSV
[]
[]
(modules/contact/test/tests/verification/patch_tests/ring_1/ring1_template1.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring1_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 200
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 = 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/solid_mechanics/test/tests/mohr_coulomb/uni_axial1_small_strain.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
# back = zmin
# front = zmax
# bottom = ymin
# top = ymax
# left = xmin
# right = xmax
[./xmin_xzero]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = '0'
[../]
[./ymin_yzero]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = '0'
[../]
[./zmin_zzero]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = '0'
[../]
[./zmax_disp]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front'
function = '-1E-3*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./mc_int]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10E6
[../]
[./mc_phi]
type = SolidMechanicsHardeningExponential
value_0 = 0
value_residual = 0.6981317 # 40deg
rate = 10000
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 0
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 0
mc_edge_smoother = 25
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-10
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '5.77E10 3.85E10' # young = 100Gpa, poisson = 0.3
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-10
plastic_models = mc
max_NR_iterations = 1000
debug_fspb = crash
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
end_time = 0.5
dt = 0.05
solve_type = NEWTON
type = Transient
line_search = 'none'
nl_rel_tol = 1E-10
l_tol = 1E-3
l_max_its = 200
nl_max_its = 10
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[]
[Outputs]
file_base = uni_axial1_small_strain
exodus = true
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/special/rotate.i)
# Simple 3D test
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[angles]
type = PiecewiseLinear
x = '0 1 2'
y = '0 0 1.5707963'
[]
[stretch]
type = PiecewiseLinear
x = '0 1 2'
y = '0 0.1 0.1'
[]
[move_y]
type = ParsedFunction
expression = 'y*cos(theta) - z * (1 + a)*sin(theta) - y'
symbol_names = 'a theta'
symbol_values = 'stretch angles'
[]
[move_z]
type = ParsedFunction
expression = 'y*sin(theta) + z*(1+a)*cos(theta) - z'
symbol_names = 'a theta'
symbol_values = 'stretch angles'
[]
[dts]
type = PiecewiseConstant
x = '0 1 2'
y = '0.1 0.001 0.001'
direction = 'LEFT_INCLUSIVE'
[]
[]
[BCs]
[fix]
type = DirichletBC
preset = true
value = 0.0
boundary = left
variable = disp_x
[]
[front_y]
type = FunctionDirichletBC
boundary = front
variable = disp_y
function = move_y
preset = true
[]
[back_y]
type = FunctionDirichletBC
boundary = back
variable = disp_y
function = move_y
preset = true
[]
[front_z]
type = FunctionDirichletBC
boundary = front
variable = disp_z
function = move_z
preset = true
[]
[back_z]
type = FunctionDirichletBC
boundary = back
variable = disp_z
function = move_z
preset = true
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = stress_xx
[]
[syy]
type = ElementAverageValue
variable = stress_yy
[]
[szz]
type = ElementAverageValue
variable = stress_zz
[]
[syz]
type = ElementAverageValue
variable = stress_yz
[]
[sxz]
type = ElementAverageValue
variable = stress_xz
[]
[sxy]
type = ElementAverageValue
variable = stress_xy
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-6
start_time = 0.0
end_time = 2.0
[TimeStepper]
type = FunctionDT
function = dts
interpolate = False
[]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/small-tests/3d.i)
# 2D test with just strain control
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = false
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '3d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0
'
' 0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'left right bottom top back front'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[hvar]
family = SCALAR
order = SIXTH
[]
[]
[AuxVariables]
[sxx]
family = MONOMIAL
order = CONSTANT
[]
[syy]
family = MONOMIAL
order = CONSTANT
[]
[sxy]
family = MONOMIAL
order = CONSTANT
[]
[szz]
family = MONOMIAL
order = CONSTANT
[]
[syz]
family = MONOMIAL
order = CONSTANT
[]
[sxz]
family = MONOMIAL
order = CONSTANT
[]
[exx]
family = MONOMIAL
order = CONSTANT
[]
[eyy]
family = MONOMIAL
order = CONSTANT
[]
[exy]
family = MONOMIAL
order = CONSTANT
[]
[ezz]
family = MONOMIAL
order = CONSTANT
[]
[eyz]
family = MONOMIAL
order = CONSTANT
[]
[exz]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[sxx]
type = RankTwoAux
variable = sxx
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[syy]
type = RankTwoAux
variable = syy
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[sxy]
type = RankTwoAux
variable = sxy
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[zz]
type = RankTwoAux
variable = szz
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[syz]
type = RankTwoAux
variable = syz
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[sxz]
type = RankTwoAux
variable = sxz
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[exx]
type = RankTwoAux
variable = exx
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
[]
[eyy]
type = RankTwoAux
variable = eyy
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 1
[]
[exy]
type = RankTwoAux
variable = exy
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 1
[]
[ezz]
type = RankTwoAux
variable = ezz
rank_two_tensor = mechanical_strain
index_i = 2
index_j = 2
[]
[eyz]
type = RankTwoAux
variable = eyz
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 2
[]
[exz]
type = RankTwoAux
variable = exz
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 2
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
constraint_types = ${constraint_types}
targets = ${targets}
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[strain11]
type = ParsedFunction
expression = '4.0e-2*t'
[]
[strain22]
type = ParsedFunction
expression = '-2.0e-2*t'
[]
[strain33]
type = ParsedFunction
expression = '8.0e-2*t'
[]
[strain23]
type = ParsedFunction
expression = '2.0e-2*t'
[]
[strain13]
type = ParsedFunction
expression = '-7.0e-2*t'
[]
[strain12]
type = ParsedFunction
expression = '1.0e-2*t'
[]
[stress11]
type = ParsedFunction
expression = '4.0e2*t'
[]
[stress22]
type = ParsedFunction
expression = '-2.0e2*t'
[]
[stress33]
type = ParsedFunction
expression = '8.0e2*t'
[]
[stress23]
type = ParsedFunction
expression = '2.0e2*t'
[]
[stress13]
type = ParsedFunction
expression = '-7.0e2*t'
[]
[stress12]
type = ParsedFunction
expression = '1.0e2*t'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y z'
[]
[y]
variable = disp_y
auto_direction = 'x y z'
[]
[z]
variable = disp_z
auto_direction = 'x y z'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix_all"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix_all"
variable = disp_y
value = 0
[]
[fix1_z]
type = DirichletBC
boundary = "fix_all"
variable = disp_z
value = 0
[]
[fix2_x]
type = DirichletBC
boundary = "fix_xy"
variable = disp_x
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix_xy"
variable = disp_y
value = 0
[]
[fix3_z]
type = DirichletBC
boundary = "fix_z"
variable = disp_z
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[elastic_tensor_4]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 76000.0
poissons_ratio = 0.11
block = '4'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = sxx
execute_on = 'initial timestep_end'
[]
[syy]
type = ElementAverageValue
variable = syy
execute_on = 'initial timestep_end'
[]
[sxy]
type = ElementAverageValue
variable = sxy
execute_on = 'initial timestep_end'
[]
[szz]
type = ElementAverageValue
variable = szz
execute_on = 'initial timestep_end'
[]
[syz]
type = ElementAverageValue
variable = syz
execute_on = 'initial timestep_end'
[]
[sxz]
type = ElementAverageValue
variable = sxz
execute_on = 'initial timestep_end'
[]
[exx]
type = ElementAverageValue
variable = exx
execute_on = 'initial timestep_end'
[]
[eyy]
type = ElementAverageValue
variable = eyy
execute_on = 'initial timestep_end'
[]
[exy]
type = ElementAverageValue
variable = exy
execute_on = 'initial timestep_end'
[]
[ezz]
type = ElementAverageValue
variable = ezz
execute_on = 'initial timestep_end'
[]
[eyz]
type = ElementAverageValue
variable = eyz
execute_on = 'initial timestep_end'
[]
[exz]
type = ElementAverageValue
variable = exz
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 10
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/plane_stress/ad_weak_plane_stress_incremental.i)
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./nl_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = ADMaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./min_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = min
[../]
[./max_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = max
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./plane_stress]
planar_formulation = WEAK_PLANE_STRESS
strain = SMALL
incremental = true
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy'
eigenstrain_names = eigenstrain
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./strain_zz]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = nl_strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 1 100'
y='0 0.00 0.00'
[../]
[./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]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ADComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ADComputeStrainIncrementBasedStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
file_base = 'weak_plane_stress_incremental_out'
exodus = true
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/except6.i)
# Plastic deformation, tensile failure, with normal=(1,0,0)
# With Lame lambda=0 and Lame mu=1, applying the following
# deformation to the zmax surface of a unit cube:
# disp_x = t
# should yield trial stress:
# stress_xx = 2*t
# Use tensile strength = 1, we should return to stress_xx = 1
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
add_variables = true
incremental = true
generate_output = 'stress_xx stress_xy stress_xz stress_yy stress_yz stress_zz'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./bottomy]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./bottomz]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
variable = disp_x
boundary = right
function = t
[../]
[./topy]
type = FunctionDirichletBC
variable = disp_y
boundary = right
function = 0
[../]
[./topz]
type = FunctionDirichletBC
variable = disp_z
boundary = right
function = 0
[../]
[]
[AuxVariables]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[Postprocessors]
[./stress_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./stress_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./stress_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./stress_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./stress_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./stress_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./strainp_xx]
type = PointValue
point = '0 0 0'
variable = strainp_xx
[../]
[./strainp_xy]
type = PointValue
point = '0 0 0'
variable = strainp_xy
[../]
[./strainp_xz]
type = PointValue
point = '0 0 0'
variable = strainp_xz
[../]
[./strainp_yy]
type = PointValue
point = '0 0 0'
variable = strainp_yy
[../]
[./strainp_yz]
type = PointValue
point = '0 0 0'
variable = strainp_yz
[../]
[./strainp_zz]
type = PointValue
point = '0 0 0'
variable = strainp_zz
[../]
[./straint_xx]
type = PointValue
point = '0 0 0'
variable = straint_xx
[../]
[./straint_xy]
type = PointValue
point = '0 0 0'
variable = straint_xy
[../]
[./straint_xz]
type = PointValue
point = '0 0 0'
variable = straint_xz
[../]
[./straint_yy]
type = PointValue
point = '0 0 0'
variable = straint_yy
[../]
[./straint_yz]
type = PointValue
point = '0 0 0'
variable = straint_yz
[../]
[./straint_zz]
type = PointValue
point = '0 0 0'
variable = straint_zz
[../]
[./f_shear]
type = PointValue
point = '0 0 0'
variable = f_shear
[../]
[./f_tensile]
type = PointValue
point = '0 0 0'
variable = f_tensile
[../]
[./f_compressive]
type = PointValue
point = '0 0 0'
variable = f_compressive
[../]
[./intnl_shear]
type = PointValue
point = '0 0 0'
variable = intnl_shear
[../]
[./intnl_tensile]
type = PointValue
point = '0 0 0'
variable = intnl_tensile
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[./ls]
type = PointValue
point = '0 0 0'
variable = ls
[../]
[]
[UserObjects]
[./coh]
type = SolidMechanicsHardeningConstant
value = 30
[../]
[./tanphi]
type = SolidMechanicsHardeningConstant
value = 0.5
[../]
[./tanpsi]
type = SolidMechanicsHardeningConstant
value = 0.1111077
[../]
[./t_strength]
type = SolidMechanicsHardeningConstant
value = 1
[../]
[./c_strength]
type = SolidMechanicsHardeningConstant
value = 40
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1'
[../]
[./admissible]
type = ComputeMultipleInelasticStress
inelastic_models = stress
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakInclinedPlaneStressUpdate
normal_vector = '0 0 0'
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 0
smoothing_tol = 0
yield_function_tol = 1E-5
[../]
[]
[Executioner]
end_time = 2
dt = 1
type = Transient
[]
[Outputs]
file_base = except6
csv = true
[]
(modules/solid_mechanics/test/tests/global_strain/global_strain_pressure_3D.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[cnode]
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 100
input = generated_mesh
[]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./u_z]
[../]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./s00]
order = CONSTANT
family = MONOMIAL
[../]
[./s11]
order = CONSTANT
family = MONOMIAL
[../]
[./e00]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 0
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_z]
type = GlobalDisplacementAux
variable = disp_z
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 2
[../]
[./s00]
type = RankTwoAux
variable = s00
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./e00]
type = RankTwoAux
variable = e00
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[../]
[./e11]
type = RankTwoAux
variable = e11
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[../]
[]
[GlobalParams]
displacements = 'u_x u_y u_z'
block = 0
[]
[Kernels]
[SolidMechanics]
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[BCs]
[./Periodic]
[./all]
auto_direction = 'x z'
variable = ' u_x u_y u_z'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./fix_y]
type = DirichletBC
boundary = 100
variable = u_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
[./Pressure]
[./top]
boundary = top
function = 0.3
[../]
[./bottom]
boundary = bottom
function = 0.3
[../]
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '7 0.33'
fill_method = symmetric_isotropic_E_nu
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalStrainUserObject
execute_on = 'Initial Linear Nonlinear'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
line_search = basic
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
l_max_its = 30
nl_max_its = 12
l_tol = 1.0e-4
nl_rel_tol = 1.0e-6
nl_abs_tol = 1.0e-10
start_time = 0.0
num_steps = 2
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/poro_mechanics/pp_generation.i)
# A sample is constrained on all sides and its boundaries are
# also impermeable. Fluid is pumped into the sample via a
# volumetric source (ie m^3/second per cubic meter), and the
# rise in porepressure is observed.
#
# Source = s (units = 1/second)
#
# Expect:
# porepressure = Biot-Modulus*s*t
# stress = 0 (remember this is effective stress)
#
# Parameters:
# Biot coefficient = 0.3
# Porosity = 0.1
# Bulk modulus = 2
# Shear modulus = 1.5
# fluid bulk modulus = 1/0.3 = 3.333333
# 1/Biot modulus = (1 - 0.3)*(0.3 - 0.1)/2 + 0.1*0.3 = 0.1. BiotModulus = 10
# s = 0.1
#
# Expect
# porepressure = t
# stress = 0
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./porepressure]
[../]
[]
[BCs]
[./confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[../]
[./confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[../]
[./confinez]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back front'
[../]
[]
[Kernels]
[./grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[../]
[./grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[../]
[./grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[../]
[./poro_x]
type = PoroMechanicsCoupling
variable = disp_x
component = 0
[../]
[./poro_y]
type = PoroMechanicsCoupling
variable = disp_y
component = 1
[../]
[./poro_z]
type = PoroMechanicsCoupling
variable = disp_z
component = 2
[../]
[./poro_timederiv]
type = PoroFullSatTimeDerivative
variable = porepressure
[../]
[./source]
type = BodyForce
function = 0.1
variable = porepressure
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./poro_material]
type = PoroFullSatMaterial
porosity0 = 0.1
biot_coefficient = 0.3
solid_bulk_compliance = 0.5
fluid_bulk_compliance = 0.3
constant_porosity = true
[../]
[]
[Postprocessors]
[./p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[../]
[./zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
variable = disp_z
[../]
[./stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[../]
[./stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[../]
[./stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 10000'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = pp_generation
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/cp_slip_rate_integ/crysp_substep.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
[./disp_z]
block = 0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCPSlipRateRes
block = 0
gtol = 1e-2
slip_sys_file_name = input_slip_sys.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.01 5 8 0.001 0.01 9 12 0.001 0.01'
hprops = '1.0 541.5 60.8 109.8 2.5'
gprops = '1 4 60.8 5 8 60.8 9 12 60.8'
tan_mod_type = exact
slip_incr_tol = 1
maximum_substep_iteration = 8
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.2
dtmax = 10.0
dtmin = 0.05
end_time = 1
[]
[Outputs]
file_base = crysp_substep_out
exodus = true
print_linear_residuals = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/multi/four_surface14.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 3
# SimpleTester3 with a = 0 and b = 1 and strength = 1.1
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 2.1E-6m in y direction and 3E-6 in z direction.
# trial stress_yy = 2.1 and stress_zz = 3.0
#
# This is similar to three_surface14.i, and a description is found there.
# The result should be stress_zz=1=stress_yy, with internal0=2
# and internal1=1.1
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2.1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '3.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./f3]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int3]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./f3]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 3
variable = f3
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[./int3]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 3
variable = int3
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./f3]
type = PointValue
point = '0 0 0'
variable = f3
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[./int3]
type = PointValue
point = '0 0 0'
variable = int3
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple3]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2 simple3'
max_NR_iterations = 4
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1'
debug_jac_at_intnl = '1 1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = four_surface14
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/ad_cavity_pressure/initial_temperature.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 (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V0 + gamma * t
# with
# alpha = n0
# beta = T0 / 2
# gamma = -(0.003322259...) * V0
# 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
#
# The parameters combined at t = 1 gives p = 301.
#
# This test sets the initial temperature to 500, but the CavityPressure
# is told that that initial temperature is T0. Thus, the final solution
# is unchanged.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = 3d.e
[]
[GlobalParams]
volumetric_locking_correction = true
[]
[Functions]
[displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[]
[displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[]
[temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[]
[material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.35'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temp]
initial_condition = 500
[]
[material_input]
[]
[]
[AuxVariables]
[pressure_residual_x]
[]
[pressure_residual_y]
[]
[pressure_residual_z]
[]
[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
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
use_automatic_differentiation = true
[]
[heat]
type = ADDiffusion
variable = temp
use_displaced_mesh = true
[]
[material_input_dummy]
type = ADDiffusion
variable = material_input
use_displaced_mesh = true
[]
[]
[AuxKernels]
[stress_xx]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_xx
[]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_yy
[]
[stress_zz]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
[]
[stress_xy]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[]
[stress_yz]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 2
variable = stress_yz
[]
[stress_zx]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 0
variable = stress_zx
[]
[]
[BCs]
[no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[]
[no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[]
[no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[]
[prescribed_left]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[]
[prescribed_right]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[]
[no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[]
[no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[]
[temperatureInterior]
type = ADFunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[]
[MaterialInput]
type = ADFunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[]
[CavityPressure]
[1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
initial_temperature = 240.54443866068704
volume = internalVolume
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[elast_tensor1]
type = ADComputeElasticityTensor
C_ijkl = '0 5'
fill_method = symmetric_isotropic
block = 1
[]
[strain1]
type = ADComputeFiniteStrain
block = 1
[]
[stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[]
[elast_tensor2]
type = ADComputeElasticityTensor
C_ijkl = '0 5'
fill_method = symmetric_isotropic
block = 2
[]
[strain2]
type = ADComputeFiniteStrain
block = 2
[]
[stress2]
type = ADComputeFiniteStrainElasticStress
block = 2
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
use_pre_SMO_residual = true
[]
[Postprocessors]
[internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[]
[aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[]
[materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[]
[]
[Outputs]
exodus = true
[]
(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/test/tests/generalized_plane_strain/generalized_plane_strain_scalar_vector.i)
[Mesh]
file = 2squares.e
displacements = 'disp_x disp_y'
[]
[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
[../]
[]
[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
[../]
[]
[Physics]
[SolidMechanics]
[./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]
[SolidMechanics]
use_displaced_mesh = false
displacements = 'disp_x disp_y'
temperature = temp
save_in = 'saved_x saved_y'
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
[../]
[]
[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'
subblock_index_provider = test_subblock_index_provider
scalar_out_of_plane_strain = 'scalar_strain_zz1 scalar_strain_zz2'
block = '1 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'
[../]
[]
[UserObjects]
[./test_subblock_index_provider]
type = TestSubblockIndexProvider
[../]
[]
[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/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free_orientation_inclined.i)
# Test to verify the fundamental natural frequency of a one element ADComputeShellStress
# BCs: Clamped on one end, free on others.
# Initial perturbation applied to edge of the beam. After that, the shell vibrates freely.
#
# Results have been compared for various thicknesses with the following approximate Results
# (Moose results were obtained with 8 elements along the length)
# Thickness = 0.1. Reference freq: 10.785 Hz, Moose freq: 10.612 Hz
# Thickness = 0.05. Reference freq: 5.393 Hz, Moose freq: 5.335 Hz
# Thickness = 0.025. Reference freq: 2.696 Hz, Moose freq: 2.660 Hz
#
# Reference values have been obtained from Robert Blevins, "Formulas for Dynamics, Acoustics and Vibration",
# Table 5.3 case 11. Formula looks like: f = lambda^2/(2*pi*a^2) * sqrt(E*h^2/(12*(1-nu*nu))), where lambda
# changes as a function of shell dimensions.
# This test uses one single element for speed reasons.
# Here, the shell, instead of being on the XY plane, is oriented at a 45 deg. angle
# with respect to the Y axis.
[Mesh]
type = FileMesh
file = shell_inclined.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./rot_x]
[../]
[./rot_y]
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
# aux variables for dynamics
[./vel_x]
[../]
[./vel_y]
[../]
[./vel_z]
[../]
[./accel_x]
[../]
[./accel_y]
[../]
[./accel_z]
[../]
[./rot_vel_x]
[../]
[./rot_vel_y]
[../]
[./rot_accel_x]
[../]
[./rot_accel_y]
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
[../]
# Kernels for dynamics
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = '0'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = '0'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = '0'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = '0'
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = '0'
value = 0.0
[../]
[]
[Functions]
[./force_function]
type = PiecewiseLinear
x = '0.0 0.01 0.15 10.0'
y = '0.0 0.01 0.0 0.0'
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = '2'
function = force_function
[../]
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[../]
[./inertial_force_x]
type = ADInertialForceShell
use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 0
variable = disp_x
thickness = 0.1
[../]
[./inertial_force_y]
type = ADInertialForceShell
use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 1
variable = disp_y
thickness = 0.1
[../]
[./inertial_force_z]
type = ADInertialForceShell
use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 2
variable = disp_z
thickness = 0.1
[../]
[./inertial_force_rot_x]
type = ADInertialForceShell
use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 3
variable = rot_x
thickness = 0.1
[../]
[./inertial_force_rot_y]
type = ADInertialForceShell
use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 4
variable = rot_y
thickness = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 2100000
poissons_ratio = 0.3
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_z_tip]
type = PointValue
point = '0.0 1.06 1.06'
variable = disp_z
[../]
[./rot_x_tip]
type = PointValue
point = '0.0 1.06 1.06'
variable = rot_x
[../]
[./stress_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yy
[../]
[./stress_yy_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yy
[../]
[./stress_yy_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yy
[../]
[./stress_yy_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yy
[../]
[./stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[../]
[./stress_yz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yz
[../]
[./stress_yz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yz
[../]
[./stress_yz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yz
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-11
nl_max_its = 15
nl_rel_tol = 1e-11
nl_abs_tol = 1e-10
l_max_its = 20
dt = 0.005
dtmin = 0.005
timestep_tolerance = 2e-13
end_time = 0.5
[./TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[../]
[]
[Outputs]
perf_graph = true
csv = true
[]
(modules/solid_mechanics/test/tests/visco/gen_kv_driving.i)
# Represents a unique Maxwell module with E = 10GPa and eta = 10 days with an imposed eigenstrain alpha = 0.001.
# The behavior is set up so that the creep strain is driven by both the elastic stress and the internal
# stress induced by the eigenstrain (E * alpha).
#
# In this test, the specimen is free of external stress (sigma = 0) so the creep deformation only derives from
# the eigenstrain. The total strain to be expected is:
# epsilon = alpha * (1 + t / eta)
# Both the stress and the elastic strain are 0.
#
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[]
[Materials]
[./eigen]
type = ComputeEigenstrain
eigenstrain_name = eigen_true
eigen_base = '1e-3 1e-3 1e-3 0 0 0'
[../]
[./kelvin_voigt]
type = GeneralizedKelvinVoigtModel
creep_modulus = ''
creep_viscosity = '10'
poisson_ratio = 0.2
young_modulus = 10e9
driving_eigenstrain = eigen_true
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigen_true'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = kelvin_voigt
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-8
nl_max_its = 20
nl_rel_tol = 1e-11
nl_abs_tol = 1e-8
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = gen_kv_driving_out
exodus = true
[]
(modules/solid_mechanics/test/tests/hyperelastic_viscoplastic/one_elem_base.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
block = 0
[../]
[./uy]
block = 0
[../]
[./uz]
block = 0
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
base_name = test
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./peeq]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = test_stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = test_fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./peeq]
type = MaterialRealAux
variable = peeq
property = ep_eqv
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = '0.01*t'
[../]
[]
[UserObjects]
[./flowstress]
type = HEVPRambergOsgoodHardening
yield_stress = 100
hardening_exponent = 0.1
reference_plastic_strain = 0.002
intvar_prop_name = ep_eqv
[../]
[./flowrate]
type = HEVPFlowRatePowerLawJ2
reference_flow_rate = 0.0001
flow_rate_exponent = 50.0
flow_rate_tol = 1
strength_prop_name = flowstress
base_name = test
[../]
[./ep_eqv]
type = HEVPEqvPlasticStrain
intvar_rate_prop_name = ep_eqv_rate
[../]
[./ep_eqv_rate]
type = HEVPEqvPlasticStrainRate
flow_rate_prop_name = flowrate
[../]
[]
[Materials]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
base_name = test
[../]
[./viscop]
type = FiniteStrainHyperElasticViscoPlastic
block = 0
resid_abs_tol = 1e-18
resid_rel_tol = 1e-8
maxiters = 50
max_substep_iteration = 5
flow_rate_user_objects = 'flowrate'
strength_user_objects = 'flowstress'
internal_var_user_objects = 'ep_eqv'
internal_var_rate_user_objects = 'ep_eqv_rate'
base_name = test
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '2.8e5 1.2e5 1.2e5 2.8e5 1.2e5 2.8e5 0.8e5 0.8e5 0.8e5'
fill_method = symmetric9
base_name = test
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./peeq]
type = ElementAverageValue
variable = peeq
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.02
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
dtmax = 10.0
nl_rel_tol = 1e-10
dtmin = 0.02
num_steps = 10
[]
[Outputs]
file_base = one_elem_base
exodus = true
csv = false
[]
(modules/solid_mechanics/test/tests/visco/visco_finite_strain.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./axial_load]
type = NeumannBC
variable = disp_x
boundary = right
value = 10e6
[../]
[]
[Materials]
[./kelvin_voigt]
type = GeneralizedKelvinVoigtModel
creep_modulus = '10e9 10e9'
creep_viscosity = '1 10'
poisson_ratio = 0.2
young_modulus = 10e9
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = kelvin_voigt
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 100
l_tol = 1e-8
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = visco_finite_strain_out
exodus = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/action/no_action_L.i)
[Mesh]
type = FileMesh
file = 'L.exo'
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
stabilize_strain = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Functions]
[pfn]
type = PiecewiseLinear
x = '0 1 2'
y = '0.00 0.3 0.5'
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[BCs]
[left]
type = DirichletBC
preset = true
variable = disp_x
boundary = fix
value = 0.0
[]
[bottom]
type = DirichletBC
preset = true
variable = disp_y
boundary = fix
value = 0.0
[]
[back]
type = DirichletBC
preset = true
variable = disp_z
boundary = fix
value = 0.0
[]
[front]
type = FunctionDirichletBC
variable = disp_z
boundary = pull
function = pfn
preset = true
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[cauchy_stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[cauchy_stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[cauchy_stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[cauchy_stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[cauchy_stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[cauchy_stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-8
end_time = 1.0
dtmin = 0.5
dt = 0.5
[]
[Outputs]
exodus = true
csv = false
[]
(modules/solid_mechanics/test/tests/capped_mohr_coulomb/small_deform1_cosserat.i)
# Using Cosserat with large layer thickness, so this should reduce to standard
# Using CappedMohrCoulombCosserat with tensile failure only
# checking for small deformation
# A single element is stretched by 1E-6m in z direction, and by small amounts in x and y directions
# stress_zz = Youngs Modulus*Strain = 2E6*1E-6 = 2 Pa
# tensile_strength is set to 1Pa
# Then the final stress should return to the yeild surface and the minimum principal stress value should be 1pa.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0.1E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.2E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z'
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./ts]
type = SolidMechanicsHardeningConstant
value = 1
[../]
[./coh]
type = SolidMechanicsHardeningConstant
value = 1E6
[../]
[./ang]
type = SolidMechanicsHardeningConstant
value = 0.5
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 4.0E6
poisson = 0.0
layer_thickness = 1.0
joint_normal_stiffness = 1.0E16
joint_shear_stiffness = 1.0E16
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
[../]
[./tensile]
type = CappedMohrCoulombCosseratStressUpdate
tensile_strength = ts
compressive_strength = ts
cohesion = coh
friction_angle = ang
dilation_angle = ang
smoothing_tol = 0.0
yield_function_tol = 1.0E-9
host_youngs_modulus = 4.0E6
host_poissons_ratio = 0.0
[../]
[./stress]
type = ComputeMultipleInelasticCosseratStress
inelastic_models = tensile
perform_finite_strain_rotations = false
[../]
[]
[Executioner]
end_time = 1
dt = 1
nl_abs_tol = 1E-10
type = Transient
[]
[Outputs]
file_base = small_deform1_cosserat
csv = true
[]
(modules/solid_mechanics/test/tests/orthotropic_plasticity/powerRuleHardening.i)
# UserObject Orthotropic test, with power rule hardening with rate 1e1.
# Linear strain is applied in the x direction.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -.5
xmax = .5
ymin = -.5
ymax = .5
zmin = -.5
zmax = .5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz'
[../]
[]
[BCs]
[./xdisp]
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = '0.005*t'
[../]
[./yfix]
type = DirichletBC
variable = disp_y
#boundary = 'bottom top'
boundary = 'bottom'
value = 0
[../]
[./xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./zfix]
type = DirichletBC
variable = disp_z
#boundary = 'front back'
boundary = 'back'
value = 0
[../]
[]
[AuxVariables]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl]
order = CONSTANT
family = MONOMIAL
[../]
[./sdev]
order = CONSTANT
family = MONOMIAL
[../]
[./sdet]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./plastic_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xx
index_i = 0
index_j = 0
[../]
[./plastic_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xy
index_i = 0
index_j = 1
[../]
[./plastic_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xz
index_i = 0
index_j = 2
[../]
[./plastic_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_yy
index_i = 1
index_j = 1
[../]
[./plastic_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_yz
index_i = 1
index_j = 2
[../]
[./plastic_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[../]
[./sdev]
type = RankTwoScalarAux
variable = sdev
rank_two_tensor = stress
scalar_type = VonMisesStress
[../]
[]
[Postprocessors]
[./sdev]
type = PointValue
point = '0 0 0'
variable = sdev
[../]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./p_xx]
type = PointValue
point = '0 0 0'
variable = plastic_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./p_xy]
type = PointValue
point = '0 0 0'
variable = plastic_xy
[../]
[./p_xz]
type = PointValue
point = '0 0 0'
variable = plastic_xz
[../]
[./p_yz]
type = PointValue
point = '0 0 0'
variable = plastic_yz
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./p_yy]
type = PointValue
point = '0 0 0'
variable = plastic_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./p_zz]
type = PointValue
point = '0 0 0'
variable = plastic_zz
[../]
[./intnl]
type = PointValue
point = '0 0 0'
variable = intnl
[../]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningPowerRule
value_0 = 300
epsilon0 = 1
exponent = 1e1
[../]
[./Orthotropic]
type = SolidMechanicsPlasticOrthotropic
b = -0.1
c1 = '1 1 1 1 1 1'
c2 = '1 1 1 1 1 1'
associative = true
yield_strength = str
yield_function_tolerance = 1e-5
internal_constraint_tolerance = 1e-9
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '121e3 80e3'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1e-9
plastic_models = Orthotropic
debug_fspb = crash
tangent_operator = elastic
[../]
[]
[Executioner]
type = Transient
num_steps = 3
dt = .25
nl_rel_tol = 1e-6
nl_max_its = 10
l_tol = 1e-4
l_max_its = 50
solve_type = PJFNK
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
perf_graph = false
csv = true
[]
(modules/xfem/test/tests/checkpoint/checkpoint.i)
# This test is for two layer materials with different youngs modulus
# The global stress is determined by switching the stress based on level set values
# The material interface is marked by a level set function
# The two layer materials are glued together
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./level_set_cut_uo]
type = LevelSetCutUserObject
level_set_var = ls
[../]
[]
[Mesh]
displacements = 'disp_x disp_y'
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 5
xmin = 0.0
xmax = 5.
ymin = 0.0
ymax = 5.
elem_type = QUAD4
[]
[./left_bottom]
type = ExtraNodesetGenerator
new_boundary = 'left_bottom'
coord = '0.0 0.0'
input = gen
[../]
[./left_top]
type = ExtraNodesetGenerator
new_boundary = 'left_top'
coord = '0.0 5.'
input = left_bottom
[../]
[]
[AuxVariables]
[./ls]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./ls_function]
type = FunctionAux
variable = ls
function = ls_func
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Functions]
[./ls_func]
type = ParsedFunction
expression = 'y-2.5'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[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_xy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[../]
[./a_strain_xx]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 0
variable = a_strain_xx
[../]
[./a_strain_yy]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 1
index_j = 1
variable = a_strain_yy
[../]
[./a_strain_xy]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 1
variable = a_strain_xy
[../]
[./b_strain_xx]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 0
variable = b_strain_xx
[../]
[./b_strain_yy]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 1
index_j = 1
variable = b_strain_yy
[../]
[./b_strain_xy]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 1
variable = b_strain_xy
[../]
[]
[Constraints]
[./dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[./dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
boundary = top
variable = disp_x
function = 0.03*t
[../]
[./topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[../]
[]
[Materials]
[./elasticity_tensor_A]
type = ComputeIsotropicElasticityTensor
base_name = A
youngs_modulus = 1e9
poissons_ratio = 0.3
[../]
[./strain_A]
type = ComputeSmallStrain
base_name = A
[../]
[./stress_A]
type = ComputeLinearElasticStress
base_name = A
[../]
[./elasticity_tensor_B]
type = ComputeIsotropicElasticityTensor
base_name = B
youngs_modulus = 1e5
poissons_ratio = 0.3
[../]
[./strain_B]
type = ComputeSmallStrain
base_name = B
[../]
[./stress_B]
type = ComputeLinearElasticStress
base_name = B
[../]
[./combined_stress]
type = LevelSetBiMaterialRankTwo
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = stress
[../]
[./combined_dstressdstrain]
type = LevelSetBiMaterialRankFour
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = Jacobian_mult
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'bt'
# controls for linear iterations
l_max_its = 20
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-7
# time control
start_time = 0.0
dt = 0.1
num_steps = 2
max_xfem_update = 1
[]
[Outputs]
checkpoint = true
exodus = true
execute_on = timestep_end
csv = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_basal_active.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[temperature]
[]
[pk2_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_yy]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_yy]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_2]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[temperature]
type = ConstantAux
variable = temperature
value= 300
[]
[pk2_zz]
type = RankTwoAux
variable = pk2_zz
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = plastic_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_xx]
type = RankTwoAux
variable = e_xx
rank_two_tensor = total_lagrangian_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = total_lagrangian_strain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[slip_increment_0]
type = MaterialStdVectorAux
variable = slip_increment_0
property = slip_increment
index = 0
execute_on = timestep_end
[]
[slip_increment_1]
type = MaterialStdVectorAux
variable = slip_increment_1
property = slip_increment
index = 1
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = resolved_shear_stress_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_1]
type = MaterialStdVectorAux
variable = resolved_shear_stress_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[tau_2]
type = MaterialStdVectorAux
variable = resolved_shear_stress_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_1]
type = MaterialStdVectorAux
variable = slip_resistance_1
property = slip_resistance
index = 1
execute_on = timestep_end
[]
[slip_resistance_2]
type = MaterialStdVectorAux
variable = slip_resistance_2
property = slip_resistance
index = 2
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
# orient in approximately [011] to activate the basal slip planes
euler_angle_1 = 120.0
euler_angle_2 = 125.264
euler_angle_3 = 45.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 3
slip_sys_file_name = hcp_basal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 1
number_slip_systems_per_mode = '3'
lattice_friction_per_mode = '98' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '5.7e6' #from Knezevic et al. 2015 AM
normalized_slip_activiation_energy_per_mode = '0.002' #from Knezevic et al. 2015 AM
slip_energy_proportionality_factor_per_mode = '700' ##from Knezevic et al. 2015 AM
substructure_rate_coefficient_per_mode = '355' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2_zz]
type = ElementAverageValue
variable = pk2_zz
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_yy]
type = ElementAverageValue
variable = fp_yy
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_xx]
type = ElementAverageValue
variable = e_xx
[]
[e_yy]
type = ElementAverageValue
variable = e_yy
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[slip_increment_0]
type = ElementAverageValue
variable = slip_increment_0
[]
[slip_increment_1]
type = ElementAverageValue
variable = slip_increment_1
[]
[tau_0]
type = ElementAverageValue
variable = resolved_shear_stress_0
[]
[tau_1]
type = ElementAverageValue
variable = resolved_shear_stress_1
[]
[tau_2]
type = ElementAverageValue
variable = resolved_shear_stress_2
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_1]
type = ElementAverageValue
variable = slip_resistance_1
[]
[slip_resistance_2]
type = ElementAverageValue
variable = slip_resistance_2
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.5
dtmin = 1.0e-2
dtmax = 10.0
end_time = 2.5
[]
[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
[../]
[]
[Physics]
[./SolidMechanics]
[./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/solid_mechanics/test/tests/crystal_plasticity/user_object_based/fileread.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
[../]
[./uy]
[../]
[./uz]
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[../]
[]
[UserObjects]
[./slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
intvar_read_type = file_input
state_variable_file_name = input_state_variable.txt
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
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'
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'ux uy uz'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.05
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/prop_block_read.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
ymin = 0
xmax = 1
ymax = 1
nx = 2
ny = 2
elem_type = QUAD4
[]
[./subdomain_id]
input = gen
type = SubdomainPerElementGenerator
subdomain_ids = '0 1
0 1'
[../]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[GlobalParams]
volumetric_locking_correction = true
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./e_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./euler1]
order = CONSTANT
family = MONOMIAL
[../]
[./euler2]
order = CONSTANT
family = MONOMIAL
[../]
[./euler3]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[UserObjects]
[./prop_read]
type = PropertyReadFile
prop_file_name = 'euler_ang_file.txt'
# Enter file data as prop#1, prop#2, .., prop#nprop
nprop = 3
read_type = block
nblock= 2
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = lage
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = fp
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[../]
[./euler1]
type = MaterialRealVectorValueAux
variable = euler1
property = Euler_angles
component = 0
execute_on = timestep_end
[../]
[./euler2]
type = MaterialRealVectorValueAux
variable = euler2
property = Euler_angles
component = 1
execute_on = timestep_end
[../]
[./euler3]
type = MaterialRealVectorValueAux
variable = euler3
property = Euler_angles
component = 2
execute_on = timestep_end
[../]
[]
[BCs]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[UserObjects]
[./slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
groups = '0 4 8 12'
group_values = '60.8 60.8 60.8'
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
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'
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
read_prop_user_object = prop_read
[../]
[]
[Postprocessors]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./e_yy]
type = ElementAverageValue
variable = e_yy
[../]
[./fp_yy]
type = ElementAverageValue
variable = fp_yy
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.01
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.01
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y'
use_displaced_mesh = true
[../]
[]
(modules/contact/test/tests/explicit_dynamics/highvel.i)
# One element test to test the central difference time integrator in 3D.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
[block_one]
type = GeneratedMeshGenerator
dim = 3
nx = 3
ny = 3
nz = 3
xmin = 4.5
xmax = 5.5
ymin = 4.5
ymax = 5.5
zmin = 0.06
zmax = 1.06
boundary_name_prefix = 'ball'
[]
[block_two]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
xmin = 0.0
xmax = 10
ymin = 0.0
ymax = 10
zmin = -2
zmax = 0
boundary_name_prefix = 'base'
boundary_id_offset = 10
[]
[block_one_id]
type = SubdomainIDGenerator
input = block_one
subdomain_id = 1
[]
[block_two_id]
type = SubdomainIDGenerator
input = block_two
subdomain_id = 2
[]
[combine]
type = MeshCollectionGenerator
inputs = ' block_one_id block_two_id'
[]
[]
[AuxVariables]
[penetration]
[]
[]
[AuxKernels]
[penetration]
type = PenetrationAux
variable = penetration
boundary = ball_back
paired_boundary = base_front
quantity = distance
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[gap_rate]
[]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[stress_zz]
family = MONOMIAL
order = CONSTANT
[]
[strain_zz]
family = MONOMIAL
order = CONSTANT
[]
[kinetic_energy_one]
order = CONSTANT
family = MONOMIAL
[]
[elastic_energy_one]
order = CONSTANT
family = MONOMIAL
[]
[kinetic_energy_two]
order = CONSTANT
family = MONOMIAL
[]
[elastic_energy_two]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
execute_on = 'TIMESTEP_END'
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
index_i = 2
index_j = 2
variable = strain_zz
[]
[accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_x
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[accel_z]
type = TestNewmarkTI
variable = accel_z
displacement = disp_z
first = false
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[vel_z]
type = TestNewmarkTI
variable = vel_z
displacement = disp_z
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[kinetic_energy_one]
type = KineticEnergyAux
block = '1'
variable = kinetic_energy_one
newmark_velocity_x = vel_x
newmark_velocity_y = vel_y
newmark_velocity_z = vel_z
density = density
[]
[elastic_energy_one]
type = ElasticEnergyAux
variable = elastic_energy_one
block = '1'
[]
[kinetic_energy_two]
type = KineticEnergyAux
block = '2'
variable = kinetic_energy_two
newmark_velocity_x = vel_x
newmark_velocity_y = vel_y
newmark_velocity_z = vel_z
density = density
[]
[elastic_energy_two]
type = ElasticEnergyAux
variable = elastic_energy_two
block = '2'
[]
[]
[Kernels]
[DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
stiffness_damping_coefficient = 1.0e-3
generate_output = 'stress_zz strain_zz'
[]
[inertia_x]
type = InertialForce
variable = disp_x
[]
[inertia_y]
type = InertialForce
variable = disp_y
[]
[inertia_z]
type = InertialForce
variable = disp_z
[]
[gravity]
type = Gravity
variable = disp_z
value = -981
[]
[]
[BCs]
[x_front]
type = DirichletBC
variable = disp_x
boundary = 'ball_front'
preset = false
value = 0.0
[]
[y_front]
type = DirichletBC
variable = disp_y
boundary = 'ball_front'
preset = false
value = 0.0
[]
[x_fixed]
type = DirichletBC
variable = disp_x
boundary = 'base_back'
preset = false
value = 0.0
[]
[y_fixed]
type = DirichletBC
variable = disp_y
boundary = 'base_back'
preset = false
value = 0.0
[]
[z_fixed]
type = DirichletBC
variable = disp_z
boundary = 'base_back'
preset = false
value = 0.0
[]
[z_fixed_front]
type = DirichletBC
variable = disp_z
boundary = 'base_front'
preset = false
value = 0.0
[]
[]
[ExplicitDynamicsContact]
[my_contact]
model = frictionless_balance
primary = base_front
secondary = ball_back
vel_x = 'vel_x'
vel_y = 'vel_y'
vel_z = 'vel_z'
[]
[]
[Materials]
[elasticity_tensor_block_one]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.0
block = 1
outputs = 'exodus'
output_properties = __all__
[]
[elasticity_tensor_block_two]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.0
block = 2
outputs = 'exodus'
output_properties = __all__
[]
[strain_block]
type = ComputeFiniteStrain # ComputeIncrementalSmallStrain
displacements = 'disp_x disp_y disp_z'
implicit = false
[]
[stress_block]
type = ComputeFiniteStrainElasticStress
[]
[density_one]
type = GenericConstantMaterial
prop_names = density
prop_values = 1e1
outputs = 'exodus'
output_properties = 'density'
block = '1'
[]
[density_two]
type = GenericConstantMaterial
prop_names = density
prop_values = 1e6
outputs = 'exodus'
output_properties = 'density'
block = '2'
[]
[wave_speed]
type = WaveSpeed
outputs = 'exodus'
output_properties = 'wave_speed'
[]
[]
[Executioner]
type = Transient
end_time = 0.02
dt = 2e-4
timestep_tolerance = 1e-6
[TimeIntegrator]
type = CentralDifference
solve_type = lumped
[]
[]
[Outputs]
interval = 2
exodus = true
csv = true
execute_on = 'TIMESTEP_END'
file_base = highvel_out
[]
[Postprocessors]
[accel_58z]
type = NodalVariableValue
nodeid = 1
variable = accel_z
[]
[vel_58z]
type = NodalVariableValue
nodeid = 1
variable = vel_z
[]
[critical_time_step]
type = CriticalTimeStep
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = contact_pressure
block = '1 2'
value_type = max
[]
[penetration_max]
type = NodalExtremeValue
variable = penetration
block = '1 2'
value_type = max
[]
[total_kinetic_energy_one]
type = ElementIntegralVariablePostprocessor
variable = kinetic_energy_one
block = '1'
[]
[total_elastic_energy_one]
type = ElementIntegralVariablePostprocessor
variable = elastic_energy_one
block = '1'
[]
[total_kinetic_energy_two]
type = ElementIntegralVariablePostprocessor
variable = kinetic_energy_two
block = '2'
[]
[total_elastic_energy_two]
type = ElementIntegralVariablePostprocessor
variable = elastic_energy_two
block = '2'
[]
[]
(modules/solid_mechanics/test/tests/auxkernels/ranktwoscalaraux.i)
[Mesh]
displacements = 'disp_x disp_y disp_z'
[generated_mesh]
type = GeneratedMeshGenerator
elem_type = HEX8
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 1.0
[]
[node]
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 6
input = generated_mesh
[]
[snode]
type = ExtraNodesetGenerator
coord = '1.0 0.0 0.0'
new_boundary = 7
input = node
[]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Materials]
[./fplastic]
type = FiniteStrainPlasticMaterial
block = 0
yield_stress='0. 445. 0.05 610. 0.1 680. 0.38 810. 0.95 920. 2. 950.'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '2.827e5 1.21e5 1.21e5 2.827e5 1.21e5 2.827e5 0.808e5 0.808e5 0.808e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Functions]
[./topfunc]
type = ParsedFunction
expression = 't'
[../]
[]
[BCs]
[./bottom3]
type = DirichletBC
variable = disp_z
boundary = 0
value = 0.0
[../]
[./top]
type = FunctionDirichletBC
variable = disp_z
boundary = 5
function = topfunc
[../]
[./corner1]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.0
[../]
[./corner2]
type = DirichletBC
variable = disp_y
boundary = 6
value = 0.0
[../]
[./corner3]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./side1]
type = DirichletBC
variable = disp_y
boundary = 7
value = 0.0
[../]
[./side2]
type = DirichletBC
variable = disp_z
boundary = 7
value = 0.0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./hydrostatic]
order = CONSTANT
family = MONOMIAL
[../]
[./L2norm]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./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
[../]
[./hydrostatic]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic
scalar_type = Hydrostatic
[../]
[./L2norm]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = L2norm
scalar_type = L2norm
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./hydrostatic]
type = ElementAverageValue
variable = hydrostatic
[../]
[./L2norm]
type = ElementAverageValue
variable = L2norm
[../]
[]
[Executioner]
type = Transient
dt=0.1
dtmin=0.1
dtmax=1
end_time=1.0
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/plane_stress/weak_plane_stress_finite.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./nl_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./min_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = min
[../]
[./max_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = max
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[plane_stress]
planar_formulation = WEAK_PLANE_STRESS
strain = FINITE
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy'
eigenstrain_names = eigenstrain
[]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = nl_strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 1 100'
y='0 0.00 0.00'
[../]
[./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]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-06
# 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
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_read_slip_prop.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
block = 0
[../]
[./uy]
block = 0
[../]
[./uz]
block = 0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCrystalPlasticity
block = 0
gtol = 1e-2
slip_sys_file_name = input_slip_sys_prop.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
hprops = '1.0 541.5 60.8 109.8 2.5'
tan_mod_type = exact
intvar_read_type = slip_sys_file
num_slip_sys_props = 1
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.05
dtmax = 10.0
dtmin = 0.05
num_steps = 10
[]
[Outputs]
file_base = crysp_read_slip_prop_out
exodus = true
[]
(modules/solid_mechanics/test/tests/static_deformations/layered_cosserat_01.i)
# apply uniform stretches and observe the stresses
# with
# young = 0.7
# poisson = 0.2
# layer_thickness = 0.1
# joint_normal_stiffness = 0.25
# joint_shear_stiffness = 0.2
# then
# a0000 = 0.730681
# a0011 = 0.18267
# a2222 = 0.0244221
# a0022 = 0.006055
# a0101 = 0.291667
# a66 = 0.018717
# a77 = 0.310383
# b0110 = 0.000534
# b0101 = 0.000107
# and with
# strain_xx = 1
# strain_yy = 2
# strain_zz = 3
# then
# stress_xx = a0000*1 + a0011*2 + a0022*3 = 1.114187
# stress_yy = a0011*1 + a0000*2 + a0022*3 = 1.662197
# stress_zz = a0022*(1+2) + a2222*3 = 0.09083
# and all others zero
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
ymax = 1
nz = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./strain_xx]
type = FunctionDirichletBC
variable = disp_x
boundary = 'left right'
function = x
[../]
[./strain_yy]
type = FunctionDirichletBC
variable = disp_y
boundary = 'bottom top'
function = 2*y
[../]
[./strain_zz]
type = FunctionDirichletBC
variable = disp_z
boundary = 'back front'
function = 3*z
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yx]
type = PointValue
point = '0 0 0'
variable = stress_yx
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zx]
type = PointValue
point = '0 0 0'
variable = stress_zx
[../]
[./s_zy]
type = PointValue
point = '0 0 0'
variable = stress_zy
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./c_s_xx]
type = PointValue
point = '0 0 0'
variable = couple_stress_xx
[../]
[./c_s_xy]
type = PointValue
point = '0 0 0'
variable = couple_stress_xy
[../]
[./c_s_xz]
type = PointValue
point = '0 0 0'
variable = couple_stress_xz
[../]
[./c_s_yx]
type = PointValue
point = '0 0 0'
variable = couple_stress_yx
[../]
[./c_s_yy]
type = PointValue
point = '0 0 0'
variable = couple_stress_yy
[../]
[./c_s_yz]
type = PointValue
point = '0 0 0'
variable = couple_stress_yz
[../]
[./c_s_zx]
type = PointValue
point = '0 0 0'
variable = couple_stress_zx
[../]
[./c_s_zy]
type = PointValue
point = '0 0 0'
variable = couple_stress_zy
[../]
[./c_s_zz]
type = PointValue
point = '0 0 0'
variable = couple_stress_zz
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 0.7
poisson = 0.2
layer_thickness = 0.1
joint_normal_stiffness = 0.25
joint_shear_stiffness = 0.2
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = layered_cosserat_01
csv = true
[]
(modules/solid_mechanics/test/tests/multi/eight_surface14.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 3
# SimpleTester3 with a = 0 and b = 1 and strength = 1.1
# SimpleTester4 with a = 1 and b = 0 and strength = 1.1
# SimpleTester5 with a = 1 and b = 1 and strength = 3.1
# SimpleTester6 with a = 1 and b = 2 and strength = 3.1
# SimpleTester7 with a = 2 and b = 1 and strength = 3.1
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 2.1E-6m in y direction and 3E-6 in z direction.
# trial stress_yy = 2.1 and stress_zz = 3.0
#
# This is similar to three_surface14.i, and a description is found there.
# The result should be stress_zz=1=stress_yy, with internal0=2
# and internal1=1.1
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2.1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '3.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./f3]
order = CONSTANT
family = MONOMIAL
[../]
[./f4]
order = CONSTANT
family = MONOMIAL
[../]
[./f5]
order = CONSTANT
family = MONOMIAL
[../]
[./f6]
order = CONSTANT
family = MONOMIAL
[../]
[./f7]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int3]
order = CONSTANT
family = MONOMIAL
[../]
[./int4]
order = CONSTANT
family = MONOMIAL
[../]
[./int5]
order = CONSTANT
family = MONOMIAL
[../]
[./int6]
order = CONSTANT
family = MONOMIAL
[../]
[./int7]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./f3]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 3
variable = f3
[../]
[./f4]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 4
variable = f4
[../]
[./f5]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 5
variable = f5
[../]
[./f6]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 6
variable = f6
[../]
[./f7]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 7
variable = f7
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[./int3]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 3
variable = int3
[../]
[./int4]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 4
variable = int4
[../]
[./int5]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 5
variable = int5
[../]
[./int6]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 6
variable = int6
[../]
[./int7]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 7
variable = int7
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./f3]
type = PointValue
point = '0 0 0'
variable = f3
[../]
[./f4]
type = PointValue
point = '0 0 0'
variable = f4
[../]
[./f5]
type = PointValue
point = '0 0 0'
variable = f5
[../]
[./f6]
type = PointValue
point = '0 0 0'
variable = f6
[../]
[./f7]
type = PointValue
point = '0 0 0'
variable = f7
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[./int3]
type = PointValue
point = '0 0 0'
variable = int3
[../]
[./int4]
type = PointValue
point = '0 0 0'
variable = int4
[../]
[./int5]
type = PointValue
point = '0 0 0'
variable = int5
[../]
[./int6]
type = PointValue
point = '0 0 0'
variable = int6
[../]
[./int7]
type = PointValue
point = '0 0 0'
variable = int7
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple3]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple4]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple5]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple6]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 2
strength = 3.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple7]
type = SolidMechanicsPlasticSimpleTester
a = 2
b = 1
strength = 3.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2 simple3 simple4 simple5 simple6 simple7'
deactivation_scheme = optimized_to_safe
max_NR_iterations = 4
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1'
debug_jac_at_intnl = '1 1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = eight_surface14
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/poro_mechanics/unconsolidated_undrained.i)
# An unconsolidated-undrained test is performed.
# A sample's boundaries are impermeable. The sample is
# squeezed by a uniform mechanical pressure, and the
# rise in porepressure is observed.
#
# Expect:
# volumetricstrain = -MechanicalPressure/UndrainedBulk
# porepressure = SkemptonCoefficient*MechanicalPressure
# stress_zz = -MechanicalPresure + BiotCoefficient*porepressure
#
# Parameters:
# Biot coefficient = 0.3
# Porosity = 0.1
# Bulk modulus = 2
# Shear modulus = 1.5
# fluid bulk modulus = 1/0.3 = 3.333333
# 1/Biot modulus = (1 - 0.3)*(0.3 - 0.1)/2 + 0.1*0.3 = 0.1. BiotModulus = 10
# Undrained Bulk modulus = 2 + 0.3^2*10 = 2.9
# Skempton coefficient = 0.3*10/2.9 = 1.034483
#
# The mechanical pressure is applied using Neumann BCs,
# since the Neumann BCs are setting stressTOTAL.
#
# MechanicalPressure = 0.1*t (ie, totalstress_zz = total_stress_xx = totalstress_yy = -0.1*t)
#
# Expect:
# disp_z = volumetricstrain/3 = -MechanicalPressure/3/2.9 = -0.1149*0.1*t
# prorepressure = 1.034483*0.1*t
# stress_zz = -0.1*t + 0.3*1.034483*0.1*t = -0.68966*0.1*t
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./porepressure]
[../]
[]
[BCs]
[./pressure_x]
type = FunctionNeumannBC
variable = disp_x
function = -0.1*t
boundary = 'right'
[../]
[./pressure_y]
type = FunctionNeumannBC
variable = disp_y
function = -0.1*t
boundary = 'top'
[../]
[./pressure_z]
type = FunctionNeumannBC
variable = disp_z
function = -0.1*t
boundary = 'front'
[../]
[./confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[../]
[./confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[../]
[./confinez]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back'
[../]
[]
[Kernels]
[./grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[../]
[./grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[../]
[./grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[../]
[./poro_x]
type = PoroMechanicsCoupling
variable = disp_x
component = 0
[../]
[./poro_y]
type = PoroMechanicsCoupling
variable = disp_y
component = 1
[../]
[./poro_z]
type = PoroMechanicsCoupling
variable = disp_z
component = 2
[../]
[./poro_timederiv]
type = PoroFullSatTimeDerivative
variable = porepressure
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./poro_material]
type = PoroFullSatMaterial
porosity0 = 0.1
biot_coefficient = 0.3
solid_bulk_compliance = 0.5
fluid_bulk_compliance = 0.3
constant_porosity = true
[../]
[]
[Postprocessors]
[./p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[../]
[./zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
variable = disp_z
[../]
[./stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[../]
[./stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[../]
[./stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 10000'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = unconsolidated_undrained
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_111tension.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_4]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_5]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_6]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_7]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_8]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_9]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_10]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_11]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_6]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_7]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_8]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_9]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_11]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = twin_total_volume_fraction_twins
execute_on = timestep_end
[]
[slip_increment_0]
type = MaterialStdVectorAux
variable = slip_increment_0
property = slip_increment
index = 0
execute_on = timestep_end
[]
[slip_increment_1]
type = MaterialStdVectorAux
variable = slip_increment_1
property = slip_increment
index = 1
execute_on = timestep_end
[]
[slip_increment_2]
type = MaterialStdVectorAux
variable = slip_increment_2
property = slip_increment
index = 2
execute_on = timestep_end
[]
[slip_increment_3]
type = MaterialStdVectorAux
variable = slip_increment_3
property = slip_increment
index = 3
execute_on = timestep_end
[]
[slip_increment_4]
type = MaterialStdVectorAux
variable = slip_increment_4
property = slip_increment
index = 4
execute_on = timestep_end
[]
[slip_increment_5]
type = MaterialStdVectorAux
variable = slip_increment_5
property = slip_increment
index = 5
execute_on = timestep_end
[]
[slip_increment_6]
type = MaterialStdVectorAux
variable = slip_increment_6
property = slip_increment
index = 6
execute_on = timestep_end
[]
[slip_increment_7]
type = MaterialStdVectorAux
variable = slip_increment_7
property = slip_increment
index = 7
execute_on = timestep_end
[]
[slip_increment_8]
type = MaterialStdVectorAux
variable = slip_increment_8
property = slip_increment
index = 8
execute_on = timestep_end
[]
[slip_increment_9]
type = MaterialStdVectorAux
variable = slip_increment_9
property = slip_increment
index = 9
execute_on = timestep_end
[]
[slip_increment_10]
type = MaterialStdVectorAux
variable = slip_increment_10
property = slip_increment
index = 10
execute_on = timestep_end
[]
[slip_increment_11]
type = MaterialStdVectorAux
variable = slip_increment_11
property = slip_increment
index = 11
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_volume_fraction_6]
type = MaterialStdVectorAux
variable = twin_volume_fraction_6
property = twin_twin_system_volume_fraction
index = 6
execute_on = timestep_end
[]
[twin_volume_fraction_7]
type = MaterialStdVectorAux
variable = twin_volume_fraction_7
property = twin_twin_system_volume_fraction
index = 7
execute_on = timestep_end
[]
[twin_volume_fraction_8]
type = MaterialStdVectorAux
variable = twin_volume_fraction_8
property = twin_twin_system_volume_fraction
index = 8
execute_on = timestep_end
[]
[twin_volume_fraction_9]
type = MaterialStdVectorAux
variable = twin_volume_fraction_9
property = twin_twin_system_volume_fraction
index = 9
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_11]
type = MaterialStdVectorAux
variable = twin_volume_fraction_11
property = twin_twin_system_volume_fraction
index = 11
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.02*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5' # roughly copper
fill_method = symmetric9
euler_angle_1 = 54.74
euler_angle_2 = 45.0
euler_angle_3 = 270.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_xtalpl slip_xtalpl'
tan_mod_type = exact
[]
[twin_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
base_name = twin
number_slip_systems = 12
slip_sys_file_name = 'fcc_input_twinning_systems.txt'
initial_twin_lattice_friction = 60.0
[]
[slip_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
total_twin_volume_fraction = 'twin_total_volume_fraction_twins'
[]
[]
[Postprocessors]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[slip_increment_0]
type = ElementAverageValue
variable = slip_increment_0
[]
[slip_increment_1]
type = ElementAverageValue
variable = slip_increment_1
[]
[slip_increment_2]
type = ElementAverageValue
variable = slip_increment_2
[]
[slip_increment_3]
type = ElementAverageValue
variable = slip_increment_3
[]
[slip_increment_4]
type = ElementAverageValue
variable = slip_increment_4
[]
[slip_increment_5]
type = ElementAverageValue
variable = slip_increment_5
[]
[slip_increment_6]
type = ElementAverageValue
variable = slip_increment_6
[]
[slip_increment_7]
type = ElementAverageValue
variable = slip_increment_7
[]
[slip_increment_8]
type = ElementAverageValue
variable = slip_increment_8
[]
[slip_increment_9]
type = ElementAverageValue
variable = slip_increment_9
[]
[slip_increment_10]
type = ElementAverageValue
variable = slip_increment_10
[]
[slip_increment_11]
type = ElementAverageValue
variable = slip_increment_11
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_volume_fraction_6]
type = ElementAverageValue
variable = twin_volume_fraction_6
[]
[twin_volume_fraction_7]
type = ElementAverageValue
variable = twin_volume_fraction_7
[]
[twin_volume_fraction_8]
type = ElementAverageValue
variable = twin_volume_fraction_8
[]
[twin_volume_fraction_9]
type = ElementAverageValue
variable = twin_volume_fraction_9
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[twin_volume_fraction_11]
type = ElementAverageValue
variable = twin_volume_fraction_11
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.005
dtmin = 0.01
num_steps = 6
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/scalar_kernel/2dscalar.i)
# 2D with mixed conditions on stress/strain
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = false
macro_gradient = hvar
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '2d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0'
fixed_normal = true
new_boundary = 'left right bottom top'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[hvar]
family = SCALAR
order = THIRD
[]
[]
[AuxVariables]
[sxx]
family = MONOMIAL
order = CONSTANT
[]
[syy]
family = MONOMIAL
order = CONSTANT
[]
[sxy]
family = MONOMIAL
order = CONSTANT
[]
[exx]
family = MONOMIAL
order = CONSTANT
[]
[eyy]
family = MONOMIAL
order = CONSTANT
[]
[exy]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[sxx]
type = RankTwoAux
variable = sxx
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[syy]
type = RankTwoAux
variable = syy
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[sxy]
type = RankTwoAux
variable = sxy
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[exx]
type = RankTwoAux
variable = exx
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
[]
[eyy]
type = RankTwoAux
variable = eyy
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 1
[]
[exy]
type = RankTwoAux
variable = exy
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 1
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergenceS
variable = disp_x
component = 0
macro_var = hvar
constraint_types = ${constraint_types}
targets = ${targets}
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergenceS
variable = disp_y
component = 1
macro_var = hvar
constraint_types = ${constraint_types}
targets = ${targets}
[]
[]
[Problem]
kernel_coverage_check = false
error_on_jacobian_nonzero_reallocation = true
[]
[Functions]
[strain11]
type = ParsedFunction
value = '4.0e-2*t'
[]
[strain22]
type = ParsedFunction
value = '-2.0e-2*t'
[]
[strain12]
type = ParsedFunction
value = '1.0e-2*t'
[]
[stress11]
type = ParsedFunction
value = '400*t'
[]
[stress22]
type = ParsedFunction
value = '-200*t'
[]
[stress12]
type = ParsedFunction
value = '100*t'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y'
[]
[y]
variable = disp_y
auto_direction = 'x y'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix1"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix1"
variable = disp_y
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix2"
variable = disp_y
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrainS
constraint_types = ${constraint_types}
targets = ${targets}
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = sxx
execute_on = 'initial timestep_end'
[]
[syy]
type = ElementAverageValue
variable = syy
execute_on = 'initial timestep_end'
[]
[sxy]
type = ElementAverageValue
variable = sxy
execute_on = 'initial timestep_end'
[]
[exx]
type = ElementAverageValue
variable = exx
execute_on = 'initial timestep_end'
[]
[eyy]
type = ElementAverageValue
variable = eyy
execute_on = 'initial timestep_end'
[]
[exy]
type = ElementAverageValue
variable = exy
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
# solve_type = 'PJFNK'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 30
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_newmark.i)
# Test for rayleigh damping implemented using Newmark time integration
# The test is for an 1D bar element of unit length fixed on one end
# with a ramped pressure boundary condition applied to the other end.
# zeta and eta correspond to the stiffness and mass proportional rayleigh damping
# beta and gamma are Newmark time integration parameters
# The equation of motion in terms of matrices is:
#
# M*accel + eta*M*vel + zeta*K*vel + K*disp = P*Area
#
# Here M is the mass matrix, K is the stiffness matrix, P is the applied pressure
#
# This equation is equivalent to:
#
# density*accel + eta*density*vel + zeta*d/dt(Div stress) + Div stress = P
#
# The first two terms on the left are evaluated using the Inertial force kernel
# The next two terms on the left involving zeta are evaluated using the
# DynamicStressDivergenceTensors Kernel
# The residual due to Pressure is evaluated using Pressure boundary condition
#
# The system will come to steady state slowly after the pressure becomes constant.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.1
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[DynamicSolidMechanics]
displacements = 'disp_x disp_y disp_z'
stiffness_damping_coefficient = 0.1
[]
[inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25
gamma = 0.5
eta = 0.1
[]
[inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
eta = 0.1
[]
[inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
eta = 0.1
[]
[]
[AuxKernels]
[accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[]
[vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[]
[accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[]
[vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[]
[accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[]
[vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[BCs]
[top_y]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[]
[top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[Pressure]
[Side1]
boundary = bottom
function = pressure
factor = 1
displacements = 'disp_x disp_y disp_z'
[]
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '210e9 0'
[]
[strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[]
[stress]
type = ComputeLinearElasticStress
block = 0
[]
[density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '7750'
[]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dt = 0.1
[]
[Functions]
[pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.1 0.2 1.0 1.0 1.0'
scale_factor = 1e9
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[disp]
type = NodalExtremeValue
variable = disp_y
boundary = bottom
[]
[vel]
type = NodalExtremeValue
variable = vel_y
boundary = bottom
[]
[accel]
type = NodalExtremeValue
variable = accel_y
boundary = bottom
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/contact/test/tests/verification/patch_tests/cyl_4/cyl4_template1.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl4_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 1000
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 = 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 stress_yy stress_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
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/combined/test/tests/eigenstrain/variable_finite.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmax = 0.5
ymax = 0.5
elem_type = QUAD4
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./strain11]
order = CONSTANT
family = MONOMIAL
[../]
[./stress11]
order = CONSTANT
family = MONOMIAL
[../]
[./c]
[../]
[./eigenstrain00]
order = CONSTANT
family = MONOMIAL
[../]
[]
[ICs]
[./c_IC]
int_width = 0.15
x1 = 0
y1 = 0
radius = 0.25
outvalue = 0
variable = c
invalue = 1
type = SmoothCircleIC
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[AuxKernels]
[./strain11]
type = RankTwoAux
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
variable = strain11
[../]
[./stress11]
type = RankTwoAux
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 1
variable = stress11
[../]
[./eigenstrain00]
type = RankTwoAux
variable = eigenstrain00
rank_two_tensor = eigenstrain
index_j = 0
index_i = 0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 0.01*c^2
coupled_variables = c
outputs = exodus
output_properties = 'var_dep'
f_name = var_dep
enable_jit = true
derivative_order = 2
[../]
[./eigenstrain]
type = ComputeVariableEigenstrain
block = 0
eigen_base = '1 1 1 0 0 0'
args = c
prefactor = var_dep
eigenstrain_name = eigenstrain
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = 0.0005*t
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
num_steps = 3
solve_type = PJFNK
petsc_options_iname = '-pc_type '
petsc_options_value = lu
l_max_its = 20
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 1.0e-9
reset_dt = true
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_capyramidal_active.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[center_node]
type = BoundingBoxNodeSetGenerator
input = cube
new_boundary = 'center_point'
top_right = '0.51 0.51 0'
bottom_left = '0.49 0.49 0'
[]
[back_edge_y]
type = BoundingBoxNodeSetGenerator
input = center_node
new_boundary = 'back_edge_y'
bottom_left = '0.9 0.5 0'
top_right = '1.1 0.5 0'
[]
[back_edge_x]
type = BoundingBoxNodeSetGenerator
input = back_edge_y
new_boundary = back_edge_x
bottom_left = '0.5 0.9 0'
top_right = '0.5 1.0 0'
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_4]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_8]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_9]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_13]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_14]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_0]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_3]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_4]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_8]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_9]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_13]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_14]
order = CONSTANT
family = MONOMIAL
[]
[substructure_density]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = resolved_shear_stress_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[tau_4]
type = MaterialStdVectorAux
variable = resolved_shear_stress_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[tau_8]
type = MaterialStdVectorAux
variable = resolved_shear_stress_8
property = applied_shear_stress
index = 8
execute_on = timestep_end
[]
[tau_9]
type = MaterialStdVectorAux
variable = resolved_shear_stress_9
property = applied_shear_stress
index = 9
execute_on = timestep_end
[]
[tau_13]
type = MaterialStdVectorAux
variable = resolved_shear_stress_13
property = applied_shear_stress
index = 13
execute_on = timestep_end
[]
[tau_14]
type = MaterialStdVectorAux
variable = resolved_shear_stress_14
property = applied_shear_stress
index = 14
execute_on = timestep_end
[]
[forest_dislocations_0]
type = MaterialStdVectorAux
variable = forest_dislocations_0
property = forest_dislocation_density
index = 0
execute_on = timestep_end
[]
[forest_dislocations_3]
type = MaterialStdVectorAux
variable = forest_dislocations_3
property = forest_dislocation_density
index = 3
execute_on = timestep_end
[]
[forest_dislocations_4]
type = MaterialStdVectorAux
variable = forest_dislocations_4
property = forest_dislocation_density
index = 4
execute_on = timestep_end
[]
[forest_dislocations_8]
type = MaterialStdVectorAux
variable = forest_dislocations_8
property = forest_dislocation_density
index = 8
execute_on = timestep_end
[]
[forest_dislocations_9]
type = MaterialStdVectorAux
variable = forest_dislocations_9
property = forest_dislocation_density
index = 9
execute_on = timestep_end
[]
[forest_dislocations_13]
type = MaterialStdVectorAux
variable = forest_dislocations_13
property = forest_dislocation_density
index = 13
execute_on = timestep_end
[]
[forest_dislocations_14]
type = MaterialStdVectorAux
variable = forest_dislocations_14
property = forest_dislocation_density
index = 14
execute_on = timestep_end
[]
[substructure_density]
type = MaterialRealAux
variable = substructure_density
property = total_substructure_density
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_3]
type = MaterialStdVectorAux
variable = slip_resistance_3
property = slip_resistance
index = 3
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'center_point back_edge_y'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'center_point back_edge_x'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
euler_angle_1 = 68
euler_angle_2 = 14
euler_angle_3 = -53
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e4
initial_substructure_density = 5.0e2
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '1 1.5'
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1e5 2e7'
normalized_slip_activiation_energy_per_mode = '4e-3 3e-2'
slip_energy_proportionality_factor_per_mode = '330 100'
substructure_rate_coefficient_per_mode = '400 100'
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0 0' #minimize impact
grain_size = 20.0e-3 #20 microns
[]
[]
[Postprocessors]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[tau_0]
type = ElementAverageValue
variable = resolved_shear_stress_0
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[tau_4]
type = ElementAverageValue
variable = resolved_shear_stress_4
[]
[tau_8]
type = ElementAverageValue
variable = resolved_shear_stress_8
[]
[tau_9]
type = ElementAverageValue
variable = resolved_shear_stress_9
[]
[tau_13]
type = ElementAverageValue
variable = resolved_shear_stress_13
[]
[tau_14]
type = ElementAverageValue
variable = resolved_shear_stress_14
[]
[forest_dislocation_0]
type = ElementAverageValue
variable = forest_dislocations_0
[]
[forest_dislocation_3]
type = ElementAverageValue
variable = forest_dislocations_3
[]
[forest_dislocation_4]
type = ElementAverageValue
variable = forest_dislocations_4
[]
[forest_dislocation_8]
type = ElementAverageValue
variable = forest_dislocations_8
[]
[forest_dislocation_9]
type = ElementAverageValue
variable = forest_dislocations_9
[]
[forest_dislocation_13]
type = ElementAverageValue
variable = forest_dislocations_13
[]
[forest_dislocation_14]
type = ElementAverageValue
variable = forest_dislocations_14
[]
[substructure_density]
type = ElementAverageValue
variable = substructure_density
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_3]
type = ElementAverageValue
variable = slip_resistance_3
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.015
dtmin = 1.0e-4
dtmax = 0.1
end_time = 0.15
[]
[Outputs]
csv = true
[]
(modules/combined/test/tests/ACGrGrElasticDrivingForce/bicrystal.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 3
xmax = 1000
ymax = 1000
elem_type = QUAD4
uniform_refine = 2
[]
[GlobalParams]
op_num = 2
var_name_base = gr
[]
[Variables]
[./PolycrystalVariables]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[ICs]
[./PolycrystalICs]
[./BicrystalBoundingBoxIC]
x1 = 0
y1 = 0
x2 = 500
y2 = 1000
[../]
[../]
[]
[AuxVariables]
[./bnds]
order = FIRST
family = LAGRANGE
[../]
[./elastic_strain11]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain22]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain12]
order = CONSTANT
family = MONOMIAL
[../]
[./unique_grains]
order = CONSTANT
family = MONOMIAL
[../]
[./var_indices]
order = CONSTANT
family = MONOMIAL
[../]
[./C1111]
order = CONSTANT
family = MONOMIAL
[../]
[./active_bounds_elemental]
order = CONSTANT
family = MONOMIAL
[../]
[./euler_angle]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./PolycrystalKernel]
[../]
[./PolycrystalElasticDrivingForce]
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./bnds_aux]
type = BndsCalcAux
variable = bnds
execute_on = timestep_end
[../]
[./elastic_strain11]
type = RankTwoAux
variable = elastic_strain11
rank_two_tensor = elastic_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./elastic_strain22]
type = RankTwoAux
variable = elastic_strain22
rank_two_tensor = elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./elastic_strain12]
type = RankTwoAux
variable = elastic_strain12
rank_two_tensor = elastic_strain
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./unique_grains]
type = FeatureFloodCountAux
variable = unique_grains
flood_counter = grain_tracker
execute_on = 'initial timestep_begin'
field_display = UNIQUE_REGION
[../]
[./var_indices]
type = FeatureFloodCountAux
variable = var_indices
flood_counter = grain_tracker
execute_on = 'initial timestep_begin'
field_display = VARIABLE_COLORING
[../]
[./C1111]
type = RankFourAux
variable = C1111
rank_four_tensor = elasticity_tensor
index_l = 0
index_j = 0
index_k = 0
index_i = 0
execute_on = timestep_end
[../]
[./active_bounds_elemental]
type = FeatureFloodCountAux
variable = active_bounds_elemental
field_display = ACTIVE_BOUNDS
execute_on = 'initial timestep_begin'
flood_counter = grain_tracker
[../]
[./euler_angle]
type = OutputEulerAngles
variable = euler_angle
euler_angle_provider = euler_angle_file
grain_tracker = grain_tracker
output_euler_angle = 'phi1'
[../]
[]
[BCs]
[./top_displacement]
type = DirichletBC
variable = disp_y
boundary = top
value = -10.0
[../]
[./x_anchor]
type = DirichletBC
variable = disp_x
boundary = 'left right'
value = 0.0
[../]
[./y_anchor]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./Copper]
type = GBEvolution
block = 0
T = 500 # K
wGB = 75 # nm
GBmob0 = 2.5e-6 #m^4/(Js) from Schoenfelder 1997
Q = 0.23 #Migration energy in eV
GBenergy = 0.708 #GB energy in J/m^2
time_scale = 1.0e-6
[../]
[./ElasticityTensor]
type = ComputePolycrystalElasticityTensor
grain_tracker = grain_tracker
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[]
[UserObjects]
[./euler_angle_file]
type = EulerAngleFileReader
file_name = test.tex
[../]
[./grain_tracker]
type = GrainTrackerElasticity
connecting_threshold = 0.05
compute_var_to_feature_map = true
flood_entity_type = elemental
execute_on = 'initial timestep_begin'
euler_angle_provider = euler_angle_file
fill_method = symmetric9
C_ijkl = '1.27e5 0.708e5 0.708e5 1.27e5 0.708e5 1.27e5 0.7355e5 0.7355e5 0.7355e5'
outputs = none
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[./gr0_area]
type = ElementIntegralVariablePostprocessor
variable = gr0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
coupled_groups = 'gr0,gr1 disp_x,disp_y'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart -pc_hypre_boomeramg_strong_threshold'
petsc_options_value = 'hypre boomeramg 31 0.7'
l_max_its = 30
l_tol = 1e-4
nl_max_its = 30
nl_rel_tol = 1e-9
start_time = 0.0
num_steps = 3
dt = 0.2
[./Adaptivity]
initial_adaptivity = 2
refine_fraction = 0.7
coarsen_fraction = 0.1
max_h_level = 2
[../]
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[]
(modules/combined/examples/phase_field-mechanics/kks_mechanics_VTS.i)
# KKS phase-field model coupled with elasticity using the Voigt-Taylor scheme as
# described in L.K. Aagesen et al., Computational Materials Science, 140, 10-21 (2017)
# Original run #170329e
[Mesh]
type = GeneratedMesh
dim = 3
nx = 640
ny = 1
nz = 1
xmin = -10
xmax = 10
ymin = 0
ymax = 0.03125
zmin = 0
zmax = 0.03125
elem_type = HEX8
[]
[Variables]
# order parameter
[./eta]
order = FIRST
family = LAGRANGE
[../]
# solute concentration
[./c]
order = FIRST
family = LAGRANGE
[../]
# chemical potential
[./w]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (matrix)
[./cm]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (precipitate)
[./cp]
order = FIRST
family = LAGRANGE
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[ICs]
[./eta_ic]
variable = eta
type = FunctionIC
function = ic_func_eta
block = 0
[../]
[./c_ic]
variable = c
type = FunctionIC
function = ic_func_c
block = 0
[../]
[./w_ic]
variable = w
type = ConstantIC
value = 0.00991
block = 0
[../]
[./cm_ic]
variable = cm
type = ConstantIC
value = 0.131
block = 0
[../]
[./cp_ic]
variable = cp
type = ConstantIC
value = 0.236
block = 0
[../]
[]
[Functions]
[./ic_func_eta]
type = ParsedFunction
expression = '0.5*(1.0+tanh((x)/delta_eta/sqrt(2.0)))'
symbol_names = 'delta_eta'
symbol_values = '0.8034'
[../]
[./ic_func_c]
type = ParsedFunction
expression = '0.2388*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^3*(6*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^2-15*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))+10)+0.1338*(1-(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^3*(6*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^2-15*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))+10))'
symbol_names = 'delta'
symbol_values = '0.8034'
[../]
[./psi_eq_int]
type = ParsedFunction
expression = 'volume*psi_alpha'
symbol_names = 'volume psi_alpha'
symbol_values = 'volume psi_alpha'
[../]
[./gamma]
type = ParsedFunction
expression = '(psi_int - psi_eq_int) / dy / dz'
symbol_names = 'psi_int psi_eq_int dy dz'
symbol_values = 'psi_int psi_eq_int 0.03125 0.03125'
[../]
[]
[AuxVariables]
[./sigma11]
order = CONSTANT
family = MONOMIAL
[../]
[./sigma22]
order = CONSTANT
family = MONOMIAL
[../]
[./sigma33]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[./e12]
order = CONSTANT
family = MONOMIAL
[../]
[./e22]
order = CONSTANT
family = MONOMIAL
[../]
[./e33]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el11]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el12]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el22]
order = CONSTANT
family = MONOMIAL
[../]
[./f_el]
order = CONSTANT
family = MONOMIAL
[../]
[./eigen_strain00]
order = CONSTANT
family = MONOMIAL
[../]
[./Fglobal]
order = CONSTANT
family = MONOMIAL
[../]
[./psi]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./matl_sigma11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = sigma11
[../]
[./matl_sigma22]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = sigma22
[../]
[./matl_sigma33]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = sigma33
[../]
[./matl_e11]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 0
variable = e11
[../]
[./matl_e12]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 1
variable = e12
[../]
[./matl_e22]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 1
index_j = 1
variable = e22
[../]
[./matl_e33]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = e33
[../]
[./f_el]
type = MaterialRealAux
variable = f_el
property = f_el_mat
execute_on = timestep_end
[../]
[./GlobalFreeEnergy]
variable = Fglobal
type = KKSGlobalFreeEnergy
fa_name = fm
fb_name = fp
w = 0.0264
kappa_names = kappa
interfacial_vars = eta
[../]
[./psi_potential]
variable = psi
type = ParsedAux
coupled_variables = 'Fglobal w c f_el sigma11 e11'
expression = 'Fglobal - w*c + f_el - sigma11*e11'
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = right
value = 0
[../]
[./front_y]
type = DirichletBC
variable = disp_y
boundary = front
value = 0
[../]
[./back_y]
type = DirichletBC
variable = disp_y
boundary = back
value = 0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0
[../]
[]
[Materials]
# Chemical free energy of the matrix
[./fm]
type = DerivativeParsedMaterial
property_name = fm
coupled_variables = 'cm'
expression = '6.55*(cm-0.13)^2'
[../]
# Elastic energy of the matrix
[./elastic_free_energy_m]
type = ElasticEnergyMaterial
base_name = matrix
f_name = fe_m
args = ' '
outputs = exodus
[../]
# Total free energy of the matrix
[./Total_energy_matrix]
type = DerivativeSumMaterial
property_name = f_total_matrix
sum_materials = 'fm fe_m'
coupled_variables = 'cm'
[../]
# Free energy of the precipitate phase
[./fp]
type = DerivativeParsedMaterial
property_name = fp
coupled_variables = 'cp'
expression = '6.55*(cp-0.235)^2'
[../]
# Elastic energy of the precipitate
[./elastic_free_energy_p]
type = ElasticEnergyMaterial
base_name = ppt
f_name = fe_p
args = ' '
outputs = exodus
[../]
# Total free energy of the precipitate
[./Total_energy_ppt]
type = DerivativeSumMaterial
property_name = f_total_ppt
sum_materials = 'fp fe_p'
coupled_variables = 'cp'
[../]
# Total elastic energy
[./Total_elastic_energy]
type = DerivativeTwoPhaseMaterial
eta = eta
f_name = f_el_mat
fa_name = fe_m
fb_name = fe_p
outputs = exodus
W = 0
[../]
# h(eta)
[./h_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta
[../]
# g(eta)
[./g_eta]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta
[../]
# constant properties
[./constants]
type = GenericConstantMaterial
prop_names = 'M L kappa misfit'
prop_values = '0.7 0.7 0.01704 0.00377'
[../]
#Mechanical properties
[./Stiffness_matrix]
type = ComputeElasticityTensor
C_ijkl = '103.3 74.25 74.25 103.3 74.25 103.3 46.75 46.75 46.75'
base_name = matrix
fill_method = symmetric9
[../]
[./Stiffness_ppt]
type = ComputeElasticityTensor
C_ijkl = '100.7 71.45 71.45 100.7 71.45 100.7 50.10 50.10 50.10'
base_name = ppt
fill_method = symmetric9
[../]
[./stress_matrix]
type = ComputeLinearElasticStress
base_name = matrix
[../]
[./stress_ppt]
type = ComputeLinearElasticStress
base_name = ppt
[../]
[./strain_matrix]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
base_name = matrix
[../]
[./strain_ppt]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
base_name = ppt
eigenstrain_names = 'eigenstrain_ppt'
[../]
[./eigen_strain]
type = ComputeEigenstrain
base_name = ppt
eigen_base = '1 1 1 0 0 0'
prefactor = misfit
eigenstrain_name = 'eigenstrain_ppt'
[../]
[./global_stress]
type = TwoPhaseStressMaterial
base_A = matrix
base_B = ppt
[../]
[./global_strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
# enforce c = (1-h(eta))*cm + h(eta)*cp
[./PhaseConc]
type = KKSPhaseConcentration
ca = cm
variable = cp
c = c
eta = eta
[../]
# enforce pointwise equality of chemical potentials
[./ChemPotVacancies]
type = KKSPhaseChemicalPotential
variable = cm
cb = cp
fa_name = f_total_matrix
fb_name = f_total_ppt
[../]
#
# Cahn-Hilliard Equation
#
[./CHBulk]
type = KKSSplitCHCRes
variable = c
ca = cm
fa_name = f_total_matrix
w = w
[../]
[./dcdt]
type = CoupledTimeDerivative
variable = w
v = c
[../]
[./ckernel]
type = SplitCHWRes
mob_name = M
variable = w
[../]
#
# Allen-Cahn Equation
#
[./ACBulkF]
type = KKSACBulkF
variable = eta
fa_name = f_total_matrix
fb_name = f_total_ppt
w = 0.0264
args = 'cp cm'
[../]
[./ACBulkC]
type = KKSACBulkC
variable = eta
ca = cm
cb = cp
fa_name = f_total_matrix
[../]
[./ACInterface]
type = ACInterface
variable = eta
kappa_name = kappa
[../]
[./detadt]
type = TimeDerivative
variable = eta
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm ilu nonzero'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 1.0e-11
num_steps = 200
[./TimeStepper]
type = SolutionTimeAdaptiveDT
dt = 0.5
[../]
[]
[VectorPostprocessors]
#[./eta]
# type = LineValueSampler
# start_point = '-10 0 0'
# end_point = '10 0 0'
# variable = eta
# num_points = 321
# sort_by = id
#[../]
#[./eta_position]
# type = FindValueOnLineSample
# vectorpostprocessor = eta
# variable_name = eta
# search_value = 0.5
#[../]
# [./f_el]
# type = LineMaterialRealSampler
# start = '-20 0 0'
# end = '20 0 0'
# sort_by = id
# property = f_el
# [../]
# [./f_el_a]
# type = LineMaterialRealSampler
# start = '-20 0 0'
# end = '20 0 0'
# sort_by = id
# property = fe_m
# [../]
# [./f_el_b]
# type = LineMaterialRealSampler
# start = '-20 0 0'
# end = '20 0 0'
# sort_by = id
# property = fe_p
# [../]
# [./h_out]
# type = LineMaterialRealSampler
# start = '-20 0 0'
# end = '20 0 0'
# sort_by = id
# property = h
# [../]
# [./fm_out]
# type = LineMaterialRealSampler
# start = '-20 0 0'
# end = '20 0 0'
# sort_by = id
# property = fm
# [../]
[]
[Postprocessors]
[./f_el_int]
type = ElementIntegralMaterialProperty
mat_prop = f_el_mat
[../]
[./c_alpha]
type = SideAverageValue
boundary = left
variable = c
[../]
[./c_beta]
type = SideAverageValue
boundary = right
variable = c
[../]
[./e11_alpha]
type = SideAverageValue
boundary = left
variable = e11
[../]
[./e11_beta]
type = SideAverageValue
boundary = right
variable = e11
[../]
[./s11_alpha]
type = SideAverageValue
boundary = left
variable = sigma11
[../]
[./s22_alpha]
type = SideAverageValue
boundary = left
variable = sigma22
[../]
[./s33_alpha]
type = SideAverageValue
boundary = left
variable = sigma33
[../]
[./s11_beta]
type = SideAverageValue
boundary = right
variable = sigma11
[../]
[./s22_beta]
type = SideAverageValue
boundary = right
variable = sigma22
[../]
[./s33_beta]
type = SideAverageValue
boundary = right
variable = sigma33
[../]
[./f_el_alpha]
type = SideAverageValue
boundary = left
variable = f_el
[../]
[./f_el_beta]
type = SideAverageValue
boundary = right
variable = f_el
[../]
[./f_c_alpha]
type = SideAverageValue
boundary = left
variable = Fglobal
[../]
[./f_c_beta]
type = SideAverageValue
boundary = right
variable = Fglobal
[../]
[./chem_pot_alpha]
type = SideAverageValue
boundary = left
variable = w
[../]
[./chem_pot_beta]
type = SideAverageValue
boundary = right
variable = w
[../]
[./psi_alpha]
type = SideAverageValue
boundary = left
variable = psi
[../]
[./psi_beta]
type = SideAverageValue
boundary = right
variable = psi
[../]
[./total_energy]
type = ElementIntegralVariablePostprocessor
variable = Fglobal
[../]
# Get simulation cell size from postprocessor
[./volume]
type = ElementIntegralMaterialProperty
mat_prop = 1
[../]
[./psi_eq_int]
type = FunctionValuePostprocessor
function = psi_eq_int
[../]
[./psi_int]
type = ElementIntegralVariablePostprocessor
variable = psi
[../]
[./gamma]
type = FunctionValuePostprocessor
function = gamma
[../]
[]
#
# Precondition using handcoded off-diagonal terms
#
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Outputs]
[./exodus]
type = Exodus
time_step_interval = 20
[../]
[./csv]
type = CSV
execute_on = 'final'
[../]
#[./console]
# type = Console
# output_file = true
# [../]
[]
(modules/solid_mechanics/test/tests/plane_stress/weak_plane_stress_small.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./nl_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./min_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = min
[../]
[./max_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = max
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[plane_stress]
planar_formulation = WEAK_PLANE_STRESS
strain = SMALL
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy'
eigenstrain_names = eigenstrain
[]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = nl_strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 1 100'
y='0 0.00 0.00'
[../]
[./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]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-06
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/large-tests/2d.i)
# 2D with mixed conditions on stress/strain
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = true
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '2d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0'
fixed_normal = true
new_boundary = 'left right bottom top'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[hvar]
family = SCALAR
order = FOURTH
[]
[]
[AuxVariables]
[s11]
family = MONOMIAL
order = CONSTANT
[]
[s21]
family = MONOMIAL
order = CONSTANT
[]
[s31]
family = MONOMIAL
order = CONSTANT
[]
[s12]
family = MONOMIAL
order = CONSTANT
[]
[s22]
family = MONOMIAL
order = CONSTANT
[]
[s32]
family = MONOMIAL
order = CONSTANT
[]
[s13]
family = MONOMIAL
order = CONSTANT
[]
[s23]
family = MONOMIAL
order = CONSTANT
[]
[s33]
family = MONOMIAL
order = CONSTANT
[]
[F11]
family = MONOMIAL
order = CONSTANT
[]
[F21]
family = MONOMIAL
order = CONSTANT
[]
[F31]
family = MONOMIAL
order = CONSTANT
[]
[F12]
family = MONOMIAL
order = CONSTANT
[]
[F22]
family = MONOMIAL
order = CONSTANT
[]
[F32]
family = MONOMIAL
order = CONSTANT
[]
[F13]
family = MONOMIAL
order = CONSTANT
[]
[F23]
family = MONOMIAL
order = CONSTANT
[]
[F33]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s11]
type = RankTwoAux
variable = s11
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[s21]
type = RankTwoAux
variable = s21
rank_two_tensor = pk1_stress
index_i = 1
index_j = 0
[]
[s31]
type = RankTwoAux
variable = s31
rank_two_tensor = pk1_stress
index_i = 2
index_j = 0
[]
[s12]
type = RankTwoAux
variable = s12
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[s22]
type = RankTwoAux
variable = s22
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[s32]
type = RankTwoAux
variable = s32
rank_two_tensor = pk1_stress
index_i = 2
index_j = 1
[]
[s13]
type = RankTwoAux
variable = s13
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[s23]
type = RankTwoAux
variable = s23
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[s33]
type = RankTwoAux
variable = s33
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[F11]
type = RankTwoAux
variable = F11
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 0
[]
[F21]
type = RankTwoAux
variable = F21
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 0
[]
[F31]
type = RankTwoAux
variable = F31
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 0
[]
[F12]
type = RankTwoAux
variable = F12
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 1
[]
[F22]
type = RankTwoAux
variable = F22
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[F32]
type = RankTwoAux
variable = F32
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 1
[]
[F13]
type = RankTwoAux
variable = F13
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 2
[]
[F23]
type = RankTwoAux
variable = F23
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 2
[]
[F33]
type = RankTwoAux
variable = F33
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 2
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
constraint_types = ${constraint_types}
targets = ${targets}
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[strain11]
type = ParsedFunction
expression = '4.0e-1*t'
[]
[strain22]
type = ParsedFunction
expression = '-2.0e-1*t'
[]
[strain12]
type = ParsedFunction
expression = '1.0e-1*t'
[]
[strain21]
type = ParsedFunction
expression = '-1.5e-1*t'
[]
[stress11]
type = ParsedFunction
expression = '4.0e2*t'
[]
[stress22]
type = ParsedFunction
expression = '-2.0e2*t'
[]
[stress12]
type = ParsedFunction
expression = '1.0e2*t'
[]
[stress21]
type = ParsedFunction
expression = '-1.5e2*t'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y'
[]
[y]
variable = disp_y
auto_direction = 'x y'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix1"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix1"
variable = disp_y
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix2"
variable = disp_y
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Postprocessors]
[s11]
type = ElementAverageValue
variable = s11
execute_on = 'initial timestep_end'
[]
[s21]
type = ElementAverageValue
variable = s21
execute_on = 'initial timestep_end'
[]
[s31]
type = ElementAverageValue
variable = s31
execute_on = 'initial timestep_end'
[]
[s12]
type = ElementAverageValue
variable = s12
execute_on = 'initial timestep_end'
[]
[s22]
type = ElementAverageValue
variable = s22
execute_on = 'initial timestep_end'
[]
[s32]
type = ElementAverageValue
variable = s32
execute_on = 'initial timestep_end'
[]
[s13]
type = ElementAverageValue
variable = s13
execute_on = 'initial timestep_end'
[]
[s23]
type = ElementAverageValue
variable = s23
execute_on = 'initial timestep_end'
[]
[s33]
type = ElementAverageValue
variable = s33
execute_on = 'initial timestep_end'
[]
[F11]
type = ElementAverageValue
variable = F11
execute_on = 'initial timestep_end'
[]
[F21]
type = ElementAverageValue
variable = F21
execute_on = 'initial timestep_end'
[]
[F31]
type = ElementAverageValue
variable = F31
execute_on = 'initial timestep_end'
[]
[F12]
type = ElementAverageValue
variable = F12
execute_on = 'initial timestep_end'
[]
[F22]
type = ElementAverageValue
variable = F22
execute_on = 'initial timestep_end'
[]
[F32]
type = ElementAverageValue
variable = F32
execute_on = 'initial timestep_end'
[]
[F13]
type = ElementAverageValue
variable = F13
execute_on = 'initial timestep_end'
[]
[F23]
type = ElementAverageValue
variable = F23
execute_on = 'initial timestep_end'
[]
[F33]
type = ElementAverageValue
variable = F33
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 30
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/1D_axisymmetric/axisymm_gps_finite.i)
# this test checks the asixymmetric 1D generalized plane strain formulation using finite strains
[GlobalParams]
displacements = disp_x
scalar_out_of_plane_strain = scalar_strain_yy
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = line.e
[]
[Variables]
[./disp_x]
[../]
[./scalar_strain_yy]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./temp]
initial_condition = 580.0
[../]
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '580 580 680'
[../]
[./disp_x]
type = PiecewiseLinear
x = '0 1'
y = '0 2e-3'
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[]
[Physics]
[SolidMechanics]
[./GeneralizedPlaneStrain]
[./gps]
[../]
[../]
[../]
[]
[AuxKernels]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[./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_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./temp]
type = FunctionAux
variable = temp
function = temp
execute_on = 'timestep_begin'
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
boundary = 1
value = 0
variable = disp_x
[../]
[./disp_x]
type = FunctionDirichletBC
boundary = 2
function = disp_x
variable = disp_x
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3600
poissons_ratio = 0.2
[../]
[./strain]
type = ComputeAxisymmetric1DFiniteStrain
eigenstrain_names = eigenstrain
scalar_out_of_plane_strain = scalar_strain_yy
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
temperature = temp
stress_free_temperature = 580
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = 'none'
l_max_its = 50
l_tol = 1e-6
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0
end_time = 2
num_steps = 2
[]
[Outputs]
exodus = true
console = true
[]
(modules/solid_mechanics/test/tests/plane_stress/ad_weak_plane_stress_finite.i)
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./nl_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = ADMaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./min_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = min
[../]
[./max_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = max
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./plane_stress]
planar_formulation = WEAK_PLANE_STRESS
strain = FINITE
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy'
eigenstrain_names = eigenstrain
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./strain_zz]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = nl_strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 1 100'
y='0 0.00 0.00'
[../]
[./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]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ADComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
file_base = 'weak_plane_stress_finite_out'
exodus = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/anis_mech_hill_tensor_creep_small_tiny_step_ts_limit_test.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
second_order = true
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
incremental = true
generate_output = 'elastic_strain_xx elastic_strain_yy elastic_strain_xy stress_xx stress_xy '
'stress_yy'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[Variables]
[disp_x]
order = SECOND
[]
[disp_y]
order = SECOND
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = trial_creep_creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = trial_creep_creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = ADRankTwoAux
rank_two_tensor = trial_creep_creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1e3 1e8'
y = '0 1e2 1e2'
[]
[]
[Materials]
# Supplying elasticity tensor three times with different base_name
[elasticity_tensor_three]
type = ADComputeElasticityTensor
fill_method = orthotropic
C_ijkl = '2.0e3 2.0e5 2.0e3 0.71428571e3 0.71428571e3 0.71428571e3 0.4 0.2 0.004 0.004 0.2 0.4'
[]
[elasticity_tensor]
type = ADComputeElasticityTensor
fill_method = orthotropic
C_ijkl = '2.0e3 2.0e5 2.0e3 0.71428571e3 0.71428571e3 0.71428571e3 0.4 0.2 0.004 0.004 0.2 0.4'
base_name = trial_creep
[]
[elasticity_tensor_two]
type = ADComputeElasticityTensor
fill_method = orthotropic
C_ijkl = '2.0e3 2.0e5 2.0e3 0.71428571e3 0.71428571e3 0.71428571e3 0.4 0.2 0.004 0.004 0.2 0.4'
base_name = trial_creep_two
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_creep trial_creep_two"
max_iterations = 5
absolute_tolerance = 1e-05
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.5 0.3866 1.6413 1.6413 1.2731"
base_name = trial_creep
[]
[trial_creep]
type = ADHillCreepStressUpdate
coefficient = 3e-18
n_exponent = 5
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 1.0e-5
base_name = trial_creep
# Force it to not use integration error
max_integration_error = 1.0
[]
[hill_tensor_two]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.5 0.3866 1.6413 1.6413 1.2731"
base_name = trial_creep_two
[]
[trial_creep_two]
type = ADHillCreepStressUpdate
coefficient = 3e-18
n_exponent = 5
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 1.0e-5
base_name = trial_creep_two
# Force it to not use integration error
max_integration_error = 1.0
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[Pressure]
[Side1]
boundary = top
function = pull
[]
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_gmres_restart -pc_type -sub_pc_type'
petsc_options_value = '101 asm lu'
line_search = 'none'
nl_rel_tol = 1e-10
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 7
start_time = 0
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 5.0e1
[]
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/contact/test/tests/hertz_spherical/hertz_contact_rz.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.
#
## Note: There is not a good way to check the result. The standard approach is
## to map contact pressure as a function of radius, but we don't have the
## contact pressure available. See the description on Wikipedia for details of
## analytic equations, and the Abaqus Benchmarks Manual, 1.1.11, for a plot of
## contact pressure vs. radius.
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
coord_type = RZ
[]
[Mesh]#Comment
file = hertz_contact_rz.e
displacements = 'disp_x disp_y'
allow_renumbering = false
[] # Mesh
[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 = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
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
[../]
[] # AuxVariables
[Physics/SolidMechanics/QuasiStatic]
[./all]
add_variables = true
strain = SMALL
[../]
[]
[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
[../]
[] # AuxKernels
[BCs]
[./base_y]
type = DirichletBC
variable = disp_y
boundary = 1000
value = 0.0
[../]
[./symm_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./disp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = disp_y
[../]
[] # BCs
[Contact]
[./dummy_name]
primary = 1000
secondary = 100
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.4
penalty = 8e7
tangential_tolerance = 0.005
[../]
[]
[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
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
line_search = 'none'
nl_abs_tol = 1e-7
l_max_its = 200
start_time = 0.0
dt = 0.5
end_time = 2.0
[] # Executioner
[Postprocessors]
[./maxdisp]
type = NodalVariableValue
nodeid = 39 # 40-1 where 40 is the exodus node number of the top-left node
variable = disp_y
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[] # Outputs
(modules/contact/test/tests/verification/patch_tests/ring_2/ring2_template2.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring2_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 200
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 = 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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/anisotropic_plasticity/ad_aniso_plasticity_x.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[plasticity_strain_zz]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_zz
index_i = 2
index_j = 2
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[elastic_strain_yy]
type = ADRankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
[]
[sigma_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1e1 1e8'
y = '0 -4e2 -4e2'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 70000
poissons_ratio = 0.25
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_plasticity"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5829856 0.364424 0.6342174 2.0691375 2.3492325 1.814589"
base_name = trial_plasticity
[]
[trial_plasticity]
type = ADHillPlasticityStressUpdate
hardening_constant = 2000.0
yield_stress = 0.001 # was 200 for verification
absolute_tolerance = 1e-14
relative_tolerance = 1e-12
base_name = trial_plasticity
internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-6
internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 25
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 1.0e-5
time_t = '0 3.4e-5 10'
time_dt = '1.0e-5 1.0e-7 1.0e-7'
[]
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[plasticity_strain_yy]
type = ElementalVariableValue
variable = plastic_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_yy]
type = ElementalVariableValue
variable = elastic_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_yy]
type = ElementalVariableValue
variable = stress_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[plasticity_strain_xx]
type = ElementalVariableValue
variable = plastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[plasticity_strain_zz]
type = ElementalVariableValue
variable = plastic_strain_zz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/2D_geometries/2D-RZ_finiteStrain_test.i)
# Considers the mechanics solution for a thick spherical shell that is uniformly
# pressurized on the inner and outer surfaces, using 2D axisymmetric geometry.
# This test uses the strain calculator ComputeAxisymmetricRZFiniteStrain,
# which is generated through the use of the SolidMechanics QuasiStatic Physics.
#
# From Roark (Formulas for Stress and Strain, McGraw-Hill, 1975), the radially-dependent
# circumferential stress in a uniformly pressurized thick spherical shell is given by:
#
# S(r) = [ Pi[ri^3(2r^3+ro^3)] - Po[ro^3(2r^3+ri^3)] ] / [2r^3(ro^3-ri^3)]
#
# where:
# Pi = inner pressure
# Po = outer pressure
# ri = inner radius
# ro = outer radius
#
# The tests assume an inner and outer radii of 5 and 10, with internal and external
# pressures of 100000 and 200000 at t = 1.0, respectively. The resulting compressive
# tangential stress is largest at the inner wall and, from the above equation, has a
# value of -271429.
#
# RESULTS are below. Since stresses are average element values, values for the
# edge element and one-element-in are used to extrapolate the stress to the
# inner surface. The vesrion of the tests that are checked use the coarsest meshes.
#
# Mesh Radial elem S(edge elem) S(one elem in) S(extrap to surf)
# 1D-SPH
# 2D-RZ 12 (x10) -265004 -254665 -270174
# 3D 12 (6x6) -261880 -252811 -266415
#
# 1D-SPH
# 2D-RZ 48 (x10) -269853 -266710 -271425
# 3D 48 (10x10) -268522 -265653 -269957
#
# The numerical solution converges to the analytical solution as the mesh is
# refined.
[Mesh]
file = 2D-RZ_mesh.e
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
block = 1
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
block = 1
[../]
[./_elastic_strain]
type = ComputeFiniteStrainElasticStress
block = 1
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_r]
type = DirichletBC
variable = disp_r
boundary = xzero
value = 0.0
[../]
[./no_disp_z]
type = DirichletBC
variable = disp_z
boundary = yzero
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_r]
type = Pressure
variable = disp_r
boundary = outer
function = '200000*t'
[../]
[./exterior_pressure_z]
type = Pressure
variable = disp_z
boundary = outer
function = '200000*t'
[../]
[./interior_pressure_r]
type = Pressure
variable = disp_r
boundary = inner
function = '100000*t'
[../]
[./interior_pressure_z]
type = Pressure
variable = disp_z
boundary = inner
function = '100000*t'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 0.2
dt = 0.1
[]
[Postprocessors]
[./strainTheta]
type = ElementAverageValue
variable = strain_theta
[../]
[./stressTheta]
type = ElementAverageValue
variable = stress_theta
[../]
[./stressTheta_pt]
type = PointValue
point = '5.0 0.0 0.0'
#bottom inside edge for comparison to theory; use csv = true
variable = stress_theta
[../]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/cyl_2/cyl2_template2.i)
#
# This input file is a template for both the frictionless and glued test
# variations for the current problem geometry. In order to create an input
# file to run outside the runtest framework, look at the tests file and add the
# appropriate input file lines from the cli_args line.
#
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl2_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 1000
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 = 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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/dynamics/time_integration/hht_test.i)
# Test for HHT time integration
# The test is for an 1D bar element of unit length fixed on one end
# with a ramped pressure boundary condition applied to the other end.
# alpha, beta and gamma are HHT time integration parameters
# The equation of motion in terms of matrices is:
#
# M*accel + alpha*(K*disp - K*disp_old) + K*disp = P(t+alpha dt)*Area
#
# Here M is the mass matrix, K is the stiffness matrix, P is the applied pressure
#
# This equation is equivalent to:
#
# density*accel + alpha*(Div stress - Div stress_old) +Div Stress= P(t+alpha dt)
#
# The first term on the left is evaluated using the Inertial force kernel
# The next two terms on the left involving alpha are evaluated using the
# DynamicStressDivergenceTensors Kernel
# The residual due to Pressure is evaluated using Pressure boundary condition
#
# The system will come to steady state slowly after the pressure becomes constant.
# Alpha equal to zero will result in Newmark integration.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x disp_y disp_z'
hht_alpha = 0.11
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25
gamma = 0.5
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 0
index_j = 1
[../]
[]
[BCs]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = top
value=0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = top
value=0.0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value=0.0
[../]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value=0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value=0.0
[../]
[./Pressure]
[./Side1]
boundary = bottom
function = pressure
factor = 1
hht_alpha = 0.11
displacements = 'disp_x disp_y disp_z'
[../]
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '210e9 0'
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '7750'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dt = 0.1
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.1 0.2 1.0 1.0 1.0'
scale_factor = 1e9
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp]
type = NodalExtremeValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalExtremeValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalExtremeValue
variable = accel_y
boundary = bottom
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
[../]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/pull_and_shear.i)
# Dynamic problem with plasticity.
# A column of material (not subject to gravity) has the z-displacement
# of its sides fixed, but the centre of its bottom side is pulled
# downwards. This causes failure in the bottom elements.
#
# The problem utilises damping in the following way.
# The DynamicStressDivergenceTensors forms the residual
# integral grad(stress) + zeta*grad(stress-dot)
# = V/L * elasticity * (du/dx + zeta * dv/dx)
# where V is the elemental volume, and L is the length-scale,
# and u is the displacement, and v is the velocity.
# The InertialForce forms the residual
# integral density * (accel + eta * velocity)
# = V * density * (a + eta * v)
# where a is the acceleration.
# So, a damped oscillator description with both these
# kernels looks like
# 0 = V * (density * a + density * eta * v + elasticity * zeta * v / L^2 + elasticity / L^2 * u)
# Critical damping is when the coefficient of v is
# 2 * sqrt(density * elasticity / L^2)
# In the case at hand, density=1E4, elasticity~1E10 (Young is 16GPa),
# L~1 to 10 (in the horizontal or vertical direction), so this coefficient ~ 1E7 to 1E6.
# Choosing eta = 1E3 and zeta = 1E-2 gives approximate critical damping.
# If zeta is high then steady-state is achieved very quickly.
#
# In the case of plasticity, the effective stiffness of the elements
# is significantly less. Therefore, the above parameters give
# overdamping.
#
# This simulation is a nice example of the irreversable and non-uniqueness
# of simulations involving plasticity. The result depends on the damping
# parameters and the time stepping.
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 1
nz = 5
bias_z = 1.5
xmin = -10
xmax = 10
ymin = -10
ymax = 10
zmin = -100
zmax = 0
[]
[bottomz_middle]
type = BoundingBoxNodeSetGenerator
new_boundary = bottomz_middle
bottom_left = '-1 -1500 -105'
top_right = '1 1500 -95'
input = generated_mesh
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
beta = 0.25 # Newmark time integration
gamma = 0.5 # Newmark time integration
eta = 1E3 #0.3E4 # higher values mean more damping via density
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[DynamicSolidMechanics] # zeta*K*vel + K * disp
stiffness_damping_coefficient = 1E-2 # higher values mean more damping via stiffness
hht_alpha = 0 # better nonlinear convergence than for alpha>0
[]
[inertia_x] # M*accel + eta*M*vel
type = InertialForce
use_displaced_mesh = false
variable = disp_x
velocity = vel_x
acceleration = accel_x
[]
[inertia_y]
type = InertialForce
use_displaced_mesh = false
variable = disp_y
velocity = vel_y
acceleration = accel_y
[]
[inertia_z]
type = InertialForce
use_displaced_mesh = false
variable = disp_z
velocity = vel_z
acceleration = accel_z
[]
[]
[BCs]
[no_x2]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.0
[]
[no_x1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_y1]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_y2]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[z_fixed_sides_xmin]
type = DirichletBC
variable = disp_z
boundary = left
value = 0
[]
[z_fixed_sides_xmax]
type = DirichletBC
variable = disp_z
boundary = right
value = 0
[]
[bottomz]
type = FunctionDirichletBC
variable = disp_z
boundary = bottomz_middle
function = max(-10*t,-10)
[]
[]
[AuxVariables]
[accel_x]
[]
[vel_x]
[]
[accel_y]
[]
[vel_y]
[]
[accel_z]
[]
[vel_z]
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[strainp_xx]
order = CONSTANT
family = MONOMIAL
[]
[strainp_xy]
order = CONSTANT
family = MONOMIAL
[]
[strainp_xz]
order = CONSTANT
family = MONOMIAL
[]
[strainp_yy]
order = CONSTANT
family = MONOMIAL
[]
[strainp_yz]
order = CONSTANT
family = MONOMIAL
[]
[strainp_zz]
order = CONSTANT
family = MONOMIAL
[]
[straint_xx]
order = CONSTANT
family = MONOMIAL
[]
[straint_xy]
order = CONSTANT
family = MONOMIAL
[]
[straint_xz]
order = CONSTANT
family = MONOMIAL
[]
[straint_yy]
order = CONSTANT
family = MONOMIAL
[]
[straint_yz]
order = CONSTANT
family = MONOMIAL
[]
[straint_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_shear]
order = CONSTANT
family = MONOMIAL
[]
[f_tensile]
order = CONSTANT
family = MONOMIAL
[]
[f_compressive]
order = CONSTANT
family = MONOMIAL
[]
[intnl_shear]
order = CONSTANT
family = MONOMIAL
[]
[intnl_tensile]
order = CONSTANT
family = MONOMIAL
[]
[iter]
order = CONSTANT
family = MONOMIAL
[]
[ls]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[accel_x] # Calculates and stores acceleration at the end of time step
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
execute_on = timestep_end
[]
[vel_x] # Calculates and stores velocity at the end of the time step
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
execute_on = timestep_end
[]
[accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
execute_on = timestep_end
[]
[vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
execute_on = timestep_end
[]
[accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
execute_on = timestep_end
[]
[vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
execute_on = timestep_end
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[]
[strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[]
[strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[]
[strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[]
[strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[]
[strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[]
[straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[]
[straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[]
[straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[]
[straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[]
[straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[]
[straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[]
[f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[]
[f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[]
[f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[]
[intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[]
[intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[]
[iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[]
[ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[]
[]
[UserObjects]
[coh]
type = SolidMechanicsHardeningConstant
value = 1E6
[]
[tanphi]
type = SolidMechanicsHardeningConstant
value = 0.5
[]
[tanpsi]
type = SolidMechanicsHardeningConstant
value = 0.166666666667
[]
[t_strength]
type = SolidMechanicsHardeningConstant
value = 0
[]
[c_strength]
type = SolidMechanicsHardeningConstant
value = 1E80
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '6.4E9 6.4E9' # young 16MPa, Poisson 0.25
[]
[strain]
type = ComputeIncrementalStrain
[]
[admissible]
type = ComputeMultipleInelasticStress
inelastic_models = stress
perform_finite_strain_rotations = false
[]
[stress]
type = CappedWeakPlaneStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 1E6
smoothing_tol = 0.5E6
yield_function_tol = 1E-2
[]
[density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 1E4
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[]
[]
[Executioner]
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
line_search = bt
nl_abs_tol = 1E1
nl_rel_tol = 1e-5
l_tol = 1E-10
l_max_its = 100
nl_max_its = 100
num_steps = 8
dt = 0.1
type = Transient
[]
[Outputs]
file_base = pull_and_shear
exodus = true
csv = true
[]
(modules/contact/test/tests/hertz_spherical/hertz_contact_hex27.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'
[]
[Mesh]#Comment
file = hertz_contact_hex27.e
allow_renumbering = false
[] # Mesh
[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
[../]
[] # AuxVariables
[Physics/SolidMechanics/QuasiStatic]
[./all]
add_variables = true
strain = SMALL
# extra_vector_tags = 'ref'
[../]
[]
[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
[../]
[] # 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
[../]
[]
[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.5
end_time = 0.5 # was 2.0
[./Quadrature]
order = FIFTH
[../]
[] # Executioner
[Postprocessors]
[./maxdisp]
type = NodalVariableValue
nodeid = 386 # 387-1 where 387 is the exodus node number of the top-center node
variable = disp_y
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[] # Outputs
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/patch/large_patch.i)
[Mesh]
[base]
type = FileMeshGenerator
file = 'patch.xda'
[]
[sets]
input = base
type = SideSetsFromPointsGenerator
new_boundary = 'left right bottom top back front'
points = ' 0 0.5 0.5
1 0.5 0.5
0.5 0.0 0.5
'
' 0.5 1.0 0.5
0.5 0.5 0.0
0.5 0.5 1.0'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
large_kinematics = true
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
large_kinematics = true
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
large_kinematics = true
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[BCs]
[left]
type = DirichletBC
preset = true
variable = disp_x
boundary = left
value = 0.0
[]
[bottom]
type = DirichletBC
preset = true
variable = disp_y
boundary = bottom
value = 0.0
[]
[back]
type = DirichletBC
preset = true
variable = disp_z
boundary = back
value = 0.0
[]
[front]
type = DirichletBC
preset = true
variable = disp_z
boundary = front
value = 0.1
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
large_kinematics = true
[]
[compute_strain]
type = ComputeLagrangianStrain
large_kinematics = true
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 1
solve_type = 'newton'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
end_time = 1
dtmin = 1.0
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/umat/predef/dpredef.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t*10
[]
[]
[AuxVariables]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[Pressure]
[bc_presssure]
boundary = top
function = top_pull
[]
[]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.0
[]
[]
[Materials]
# 1. Active for UMAT run
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_dpredef'
num_state_vars = 0
external_fields = 'strain_yy'
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
base_name = 'base'
youngs_modulus = 1e3
poissons_ratio = 0.3
[]
[strain_dependent_elasticity_tensor]
type = CompositeElasticityTensor
args = strain_yy
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
property_name = prefactor_material
# 0.11112 is the strain_yy increment
expression = '1.0/(1.0 + 0.11112)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 10
dt = 10.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/save_euler.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD4
displacements = 'disp_x disp_y'
nx = 2
ny = 2
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[GlobalParams]
volumetric_locking_correction = true
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./e_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./euler1]
order = CONSTANT
family = MONOMIAL
[../]
[./euler2]
order = CONSTANT
family = MONOMIAL
[../]
[./euler3]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[UserObjects]
[./prop_read]
type = PropertyReadFile
prop_file_name = 'euler_ang_file.txt'
# Enter file data as prop#1, prop#2, .., prop#nprop
nprop = 3
read_type = element
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = lage
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = fp
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[../]
[./euler1]
type = MaterialRealVectorValueAux
variable = euler1
property = Euler_angles
component = 0
execute_on = timestep_end
[../]
[./euler2]
type = MaterialRealVectorValueAux
variable = euler2
property = Euler_angles
component = 1
execute_on = timestep_end
[../]
[./euler3]
type = MaterialRealVectorValueAux
variable = euler3
property = Euler_angles
component = 2
execute_on = timestep_end
[../]
[]
[BCs]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[UserObjects]
[./slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
groups = '0 4 8 12'
group_values = '60.8 60.8 60.8'
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
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'
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
read_prop_user_object = prop_read
[../]
[]
[Postprocessors]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./e_yy]
type = ElementAverageValue
variable = e_yy
[../]
[./fp_yy]
type = ElementAverageValue
variable = fp_yy
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.01
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.01
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y'
use_displaced_mesh = true
[../]
[]
(modules/solid_mechanics/test/tests/shell/static/finite_straintest.i)
# Test for the axial stress and strain output for single shell element
# for 2D planar shell with uniform mesh.
# A single shell 1 mm x 1 mm element having Young's Modulus of 5 N/mm^2
# and poissons ratio of 0 is fixed at the left end and
# an axial displacement of 0.2 mm is applied at the right.
# Theoretical value of axial stress and strain are 1 N/mm^2 and 0.2.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[rot_x]
order = FIRST
family = LAGRANGE
[]
[rot_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = global_stress_t_points_1
index_i = 0
index_j = 0
[]
[strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_global_strain_t_points_1
index_i = 0
index_j = 0
[]
[]
[BCs]
[fixx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[fixy]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[]
[fixz]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[]
[fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[]
[fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[]
[disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = displacement
[]
[]
[Functions]
[displacement]
type = PiecewiseLinear
x = '0.0 1.0'
y = '0.0 0.2'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
line_search = 'none'
nl_rel_tol = 1e-12
nl_abs_tol = 1e-14
dt = 1
dtmin = 1
end_time = 1
[]
[Kernels]
[solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[]
[solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[]
[solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[]
[solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[]
[solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[]
[]
[Materials]
[elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 5.0
poissons_ratio = 0.0
block = 0
through_thickness_order = SECOND
[]
[strain]
type = ADComputeFiniteShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[]
[stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[]
[]
[Postprocessors]
[disp_x]
type = PointValue
point = '0.5 0.0 0.0'
variable = disp_z
[]
[stress_xx_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_xx
[]
[strain_xx_el_0]
type = ElementalVariableValue
elementid = 0
variable = strain_xx
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/shell/static/pressure_error.i)
# Test for the stress and strain output for tapered shell elements.
# A tapered beam is represented with shell elements in XY plane
# having Young's Modulus of 210000 and poissons ratio of 0.3.
# The displacement in X direction is constrained in the left end and the
# displacement of center node of the left end is constrained in Y direction.
# A uniform pressure of 50 units is applied at the right end.
# The shell element strain calculation assumes four quadrature points.
# So, when a pressure is applied at the edge, two quadrature points
# are used in the strain calulator and an error is generated.
[Mesh]
[input]
type = FileMeshGenerator
file = taperedmesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[rot_x]
[]
[rot_y]
[]
[]
[AuxVariables]
[stress_00]
order = CONSTANT
family = MONOMIAL
[]
[stress_11]
order = CONSTANT
family = MONOMIAL
[]
[stress_22]
order = CONSTANT
family = MONOMIAL
[]
[stress_01]
order = CONSTANT
family = MONOMIAL
[]
[stress_10]
order = CONSTANT
family = MONOMIAL
[]
[stress_02]
order = CONSTANT
family = MONOMIAL
[]
[stress_20]
order = CONSTANT
family = MONOMIAL
[]
[stress_12]
order = CONSTANT
family = MONOMIAL
[]
[stress_21]
order = CONSTANT
family = MONOMIAL
[]
[strain_00]
order = CONSTANT
family = MONOMIAL
[]
[strain_11]
order = CONSTANT
family = MONOMIAL
[]
[strain_22]
order = CONSTANT
family = MONOMIAL
[]
[strain_01]
order = CONSTANT
family = MONOMIAL
[]
[strain_10]
order = CONSTANT
family = MONOMIAL
[]
[strain_02]
order = CONSTANT
family = MONOMIAL
[]
[strain_20]
order = CONSTANT
family = MONOMIAL
[]
[strain_12]
order = CONSTANT
family = MONOMIAL
[]
[strain_21]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[solid_disp_x]
type = ADStressDivergenceShell
block = 1
component = 0
variable = disp_x
through_thickness_order = SECOND
[]
[solid_disp_y]
type = ADStressDivergenceShell
block = 1
component = 1
variable = disp_y
through_thickness_order = SECOND
[]
[solid_disp_z]
type = ADStressDivergenceShell
block = 1
component = 2
variable = disp_z
through_thickness_order = SECOND
[]
[solid_rot_x]
type = ADStressDivergenceShell
block = 1
component = 3
variable = rot_x
through_thickness_order = SECOND
[]
[solid_rot_y]
type = ADStressDivergenceShell
block = 1
component = 4
variable = rot_y
through_thickness_order = SECOND
[]
[]
[AuxKernels]
[stress_00]
type = RankTwoAux
variable = stress_00
rank_two_tensor = global_stress_t_points_0
index_i = 0
index_j = 0
execute_on = TIMESTEP_END
[]
[strain_00]
type = RankTwoAux
variable = strain_00
rank_two_tensor = total_global_strain_t_points_0
index_i = 0
index_j = 0
execute_on = TIMESTEP_END
[]
[stress_11]
type = RankTwoAux
variable = stress_11
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[]
[strain_11]
type = RankTwoAux
variable = strain_11
rank_two_tensor = total_global_strain_t_points_0
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[]
[stress_22]
type = RankTwoAux
variable = stress_22
rank_two_tensor = global_stress_t_points_0
index_i = 2
index_j = 2
execute_on = TIMESTEP_END
[]
[strain_22]
type = RankTwoAux
variable = strain_22
rank_two_tensor = total_global_strain_t_points_0
index_i = 2
index_j = 2
execute_on = TIMESTEP_END
[]
[stress_01]
type = RankTwoAux
variable = stress_01
rank_two_tensor = global_stress_t_points_0
index_i = 0
index_j = 1
execute_on = TIMESTEP_END
[]
[strain_01]
type = RankTwoAux
variable = strain_01
rank_two_tensor = total_global_strain_t_points_0
index_i = 0
index_j = 1
execute_on = TIMESTEP_END
[]
[stress_10]
type = RankTwoAux
variable = stress_10
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 0
execute_on = TIMESTEP_END
[]
[strain_10]
type = RankTwoAux
variable = strain_10
rank_two_tensor = total_global_strain_t_points_0
index_i = 1
index_j = 0
execute_on = TIMESTEP_END
[]
[stress_02]
type = RankTwoAux
variable = stress_02
rank_two_tensor = global_stress_t_points_0
index_i = 0
index_j = 2
execute_on = TIMESTEP_END
[]
[strain_02]
type = RankTwoAux
variable = strain_02
rank_two_tensor = total_global_strain_t_points_0
index_i = 0
index_j = 2
execute_on = TIMESTEP_END
[]
[stress_20]
type = RankTwoAux
variable = stress_20
rank_two_tensor = global_stress_t_points_0
index_i = 2
index_j = 0
execute_on = TIMESTEP_END
[]
[strain_20]
type = RankTwoAux
variable = strain_20
rank_two_tensor = total_global_strain_t_points_0
index_i = 2
index_j = 0
execute_on = TIMESTEP_END
[]
[stress_12]
type = RankTwoAux
variable = stress_12
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
execute_on = TIMESTEP_END
[]
[strain_12]
type = RankTwoAux
variable = strain_12
rank_two_tensor = total_global_strain_t_points_0
index_i = 1
index_j = 2
execute_on = TIMESTEP_END
[]
[stress_21]
type = RankTwoAux
variable = stress_21
rank_two_tensor = global_stress_t_points_0
index_i = 2
index_j = 1
execute_on = TIMESTEP_END
[]
[strain_21]
type = RankTwoAux
variable = strain_21
rank_two_tensor = total_global_strain_t_points_0
index_i = 2
index_j = 1
execute_on = TIMESTEP_END
[]
[]
[BCs]
[BC_0]
type = ADDirichletBC
variable = disp_x
value = 0.0
boundary = '2' #left
[]
[BC_1]
type = ADDirichletBC
variable = disp_y
value = 0.0
boundary = 10 #left_side_mid
[]
[BC_2]
type = ADPressure
variable = disp_x
displacements = 'disp_x disp_y disp_z'
factor = -50
boundary = '3'
use_displaced_mesh = false
[]
[]
[Materials]
[stress]
type = ADComputeShellStress
block = 1
through_thickness_order = SECOND
[]
[elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 210000
poissons_ratio = 0.3
block = 1
through_thickness_order = SECOND
[]
[strain]
type = ADComputeIncrementalShellStrain
block = 1
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-8
l_abs_tol = 1e-8
nl_max_its = 100
l_max_its = 100
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/multi/paper3.i)
# This runs the third example models described in the 'MultiSurface' plasticity paper
# Just change the deactivation_scheme
#
# Plasticity models:
# Mohr-Coulomb with cohesion = 40MPa, friction angle = 35deg, dilation angle = 5deg
# Tensile with strength = 1MPa
# WeakPlaneTensile with strength = 1000Pa
# WeakPlaneShear with cohesion = 0.1MPa and friction angle = 25, dilation angle = 5deg
#
# Lame lambda = 1.2GPa. Lame mu = 1.2GPa (Young = 3GPa, poisson = 0.5)
#
# A line of elements is perturbed randomly, and return to the yield surface at each quadpoint is checked
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 125
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 125
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[ICs]
[./x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console csv'
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console csv'
[../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console csv'
[../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console csv'
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 4E7
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
yield_function_tolerance = 1.0
shift = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./mc_smooth]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4E6
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./ts]
type = SolidMechanicsHardeningConstant
value = 1E6
[../]
[./tensile]
type = SolidMechanicsPlasticTensileMulti
tensile_strength = ts
yield_function_tolerance = 1.0
shift = 1.0
internal_constraint_tolerance = 1.0E-7
use_custom_returnMap = false
use_custom_cto = false
[../]
[./tensile_smooth]
type = SolidMechanicsPlasticTensile
tensile_strength = ts
tensile_tip_smoother = 1E5
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./wpt_str]
type = SolidMechanicsHardeningConstant
value = 1.0E3
[../]
[./wpt]
type = SolidMechanicsPlasticWeakPlaneTensile
tensile_strength = wpt_str
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./wps_c]
type = SolidMechanicsHardeningConstant
value = 1.0E5
[../]
[./wps_tan_phi]
type = SolidMechanicsHardeningConstant
value = 0.466
[../]
[./wps_tan_psi]
type = SolidMechanicsHardeningConstant
value = 0.087
[../]
[./wps]
type = SolidMechanicsPlasticWeakPlaneShear
cohesion = wps_c
tan_friction_angle = wps_tan_phi
tan_dilation_angle = wps_tan_psi
smoother = 1.0E4
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1.2E9 1.2E9'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-7
plastic_models = 'tensile_smooth mc_smooth wpt wps'
max_NR_iterations = 30
specialIC = 'none'
deactivation_scheme = 'optimized'
min_stepsize = 1E-6
max_stepsize_for_dumb = 1E-2
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1 1'
debug_jac_at_intnl = '1 1 1 1'
debug_stress_change = 1E1
debug_pm_change = '1E-6 1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = paper3
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_z_3d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 10
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 1.0
ymax = 1.0
zmax = 10.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '9 3'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '12 1'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_zz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
[]
[sigma_zz]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0'
y = '-4e1 -4e1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_zz stress_zz stress_xx stress_yy stress_xy stress_xz stress_yz'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_creep_two"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.25 0.3866 1.6413 1.6413 1.2731"
[]
[trial_creep_two]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
# F G H L M N
max_inelastic_increment = 0.00003
absolute_tolerance = 1e-20
relative_tolerance = 1e-20
# Force it to not use integration error
max_integration_error = 100.0
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_x
boundary = 101
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[pressure]
type = ADPressure
boundary = front
function = pull
variable = disp_z
component = 2
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1.0e-13
nl_abs_tol = 1.0e-13
l_max_its = 90
num_steps = 10
dt = 1.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_zz]
type = ElementalVariableValue
variable = creep_strain_zz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_zz]
type = ElementalVariableValue
variable = elastic_strain_zz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_zz]
type = ElementalVariableValue
variable = stress_zz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_2/plane2_template2.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane2_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 200
[]
[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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/combined/test/tests/phase_field_fracture_viscoplastic/crack2d.i)
[Mesh]
type = FileMesh
file = crack_mesh.e
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./All]
add_variables = true
strain = Finite
additional_generate_output = stress_yy
save_in = 'resid_x resid_y'
[../]
[../]
[../]
[]
[Modules]
[./PhaseField]
[./Nonconserved]
[./c]
free_energy = E_el
mobility = L
kappa = kappa_op
[../]
[../]
[../]
[]
[AuxVariables]
[./resid_x]
[../]
[./resid_y]
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./peeq]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./solid_x]
type = PhaseFieldFractureMechanicsOffDiag
variable = disp_x
component = 0
c = c
use_displaced_mesh = true
[../]
[./solid_y]
type = PhaseFieldFractureMechanicsOffDiag
variable = disp_y
component = 1
c = c
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./peeq]
type = MaterialRealAux
variable = peeq
property = ep_eqv
execute_on = timestep_end
[../]
[]
[BCs]
[./ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = '0.0001*t'
[../]
[./yfix]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0
[../]
[./xfix]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0
[../]
[]
[UserObjects]
[./flowstress]
type = HEVPLinearHardening
yield_stress = 300
slope = 1000
intvar_prop_name = ep_eqv
[../]
[./flowrate]
type = HEVPFlowRatePowerLawJ2
reference_flow_rate = 0.0001
flow_rate_exponent = 10.0
flow_rate_tol = 1
strength_prop_name = flowstress
[../]
[./ep_eqv]
type = HEVPEqvPlasticStrain
intvar_rate_prop_name = ep_eqv_rate
[../]
[./ep_eqv_rate]
type = HEVPEqvPlasticStrainRate
flow_rate_prop_name = flowrate
[../]
[]
[Materials]
[./pfbulkmat]
type = GenericConstantMaterial
prop_names = 'l visco'
prop_values = '0.08 1'
[../]
[./pfgc]
type = GenericFunctionMaterial
prop_names = 'gc_prop'
prop_values = '1.0e-3'
[../]
[./define_mobility]
type = ParsedMaterial
material_property_names = 'gc_prop visco'
property_name = L
expression = '1/(gc_prop * visco)'
[../]
[./define_kappa]
type = ParsedMaterial
material_property_names = 'gc_prop l'
property_name = kappa_op
expression = 'gc_prop * l'
[../]
[./viscop_damage]
type = HyperElasticPhaseFieldIsoDamage
resid_abs_tol = 1e-18
resid_rel_tol = 1e-8
maxiters = 50
max_substep_iteration = 5
flow_rate_user_objects = 'flowrate'
strength_user_objects = 'flowstress'
internal_var_user_objects = 'ep_eqv'
internal_var_rate_user_objects = 'ep_eqv_rate'
numerical_stiffness = false
damage_stiffness = 1e-8
c = c
F_name = E_el
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[Postprocessors]
[./resid_x]
type = NodalSum
variable = resid_x
boundary = 2
[../]
[./resid_y]
type = NodalSum
variable = resid_y
boundary = 2
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-8
l_max_its = 10
nl_max_its = 10
dt = 1
dtmin = 1e-4
num_steps = 2
[]
[Outputs]
exodus = true
[]
(modules/porous_flow/test/tests/energy_conservation/heat03.i)
# The sample is a single unit element, with roller BCs on the sides
# and bottom. A constant displacement is applied to the top: disp_z = -0.01*t.
# There is no fluid flow or heat flow.
# Heat energy conservation is checked.
#
# Under these conditions (here L is the height of the sample: L=1 in this case):
# porepressure = porepressure(t=0) - (Fluid bulk modulus)*log(1 - 0.01*t)
# stress_xx = (bulk - 2*shear/3)*disp_z/L (remember this is effective stress)
# stress_zz = (bulk + 4*shear/3)*disp_z/L (remember this is effective stress)
# Also, the total heat energy must be conserved: this is
# fluid_mass * fluid_heat_cap * temperature + (1 - porosity) * rock_density * rock_heat_cap * temperature * volume
# Since fluid_mass is conserved, and volume = (1 - 0.01*t), this can be solved for temperature:
# temperature = initial_heat_energy / (fluid_mass * fluid_heat_cap + (1 - porosity) * rock_density * rock_heat_cap * (1 - 0.01*t))
#
# Parameters:
# Bulk modulus = 2
# Shear modulus = 1.5
# fluid bulk modulus = 0.5
# initial porepressure = 0.1
# initial temperature = 10
#
# Desired output:
# zdisp = -0.01*t
# p0 = 0.1 - 0.5*log(1-0.01*t)
# stress_xx = stress_yy = -0.01*t
# stress_zz = -0.04*t
# t0 = 11.5 / (0.159 + 0.99 * (1 - 0.01*t))
#
# Regarding the "log" - it comes from preserving fluid mass
#
# Note that the PorousFlowMassVolumetricExpansion and PorousFlowHeatVolumetricExpansion Kernels are used
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pp]
initial_condition = 0.1
[]
[temp]
initial_condition = 10
[]
[]
[BCs]
[confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[]
[basefixed]
type = DirichletBC
variable = disp_z
value = 0
boundary = back
[]
[top_velocity]
type = FunctionDirichletBC
variable = disp_z
function = -0.01*t
boundary = front
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
component = 2
variable = disp_z
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = pp
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[]
[temp]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[poro_vol_exp_temp]
type = PorousFlowHeatVolumetricExpansion
variable = temp
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp pp disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 1
viscosity = 1
thermal_expansion = 0
cv = 1.3
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 2.2
density = 0.5
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pp
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0.5 0 0 0 0.5 0 0 0 0.5'
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '0 0 0'
variable = pp
[]
[t0]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '0 0 0'
variable = temp
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
use_displaced_mesh = false
variable = disp_z
[]
[stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[]
[stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[]
[stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[]
[fluid_mass]
type = PorousFlowFluidMass
fluid_component = 0
execute_on = 'initial timestep_end'
outputs = 'console csv'
[]
[total_heat]
type = PorousFlowHeatEnergy
phase = 0
execute_on = 'initial timestep_end'
outputs = 'console csv'
[]
[rock_heat]
type = PorousFlowHeatEnergy
execute_on = 'initial timestep_end'
outputs = 'console csv'
[]
[fluid_heat]
type = PorousFlowHeatEnergy
include_porous_skeleton = false
phase = 0
execute_on = 'initial timestep_end'
outputs = 'console csv'
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-8 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 2
end_time = 10
[]
[Outputs]
execute_on = 'initial timestep_end'
file_base = heat03
[csv]
type = CSV
[]
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/pull_and_shear_1step.i)
# Part of the bottom (minimum z) is pulled down by a Preset displacement
# This causes tensile failure in the elements immediately above.
# Because only the bottom row of elements ever fail, and because these
# fail in the first nonlinear step, Moose correctly converges in
# 1 nonlinear step, despite this problem being inelastic.
# (If the problem had lower cohesion, then the top row would also
# fail, but in the second nonlinear step, and so the simulation
# would require at least two nonlinear steps.)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 1
nz = 2
xmin = -10
xmax = 10
ymin = -10
ymax = 10
zmin = -100
zmax = 0
[]
[bottomz_middle]
type = BoundingBoxNodeSetGenerator
new_boundary = bottomz_middle
bottom_left = '-1 -15 -105'
top_right = '1 15 -95'
input = generated_mesh
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[]
[BCs]
[./no_x2]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.0
[../]
[./no_x1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_y1]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./no_y2]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[../]
[./z_fixed_sides_xmin]
type = DirichletBC
variable = disp_z
boundary = left
value = 0
[../]
[./z_fixed_sides_xmax]
type = DirichletBC
variable = disp_z
boundary = right
value = 0
[../]
[./bottomz]
type = FunctionDirichletBC
variable = disp_z
boundary = bottomz_middle
function = -1
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[UserObjects]
[./coh_irrelevant]
type = SolidMechanicsHardeningCubic
value_0 = 1E60
value_residual = 1E60
internal_limit = 0.01E8
[../]
[./tanphi]
type = SolidMechanicsHardeningCubic
value_0 = 0.5
value_residual = 0.2
internal_limit = 0.01E8
[../]
[./tanpsi]
type = SolidMechanicsHardeningConstant
value = 0.166666666667
[../]
[./t_strength]
type = SolidMechanicsHardeningConstant
value = 0
[../]
[./c_strength]
type = SolidMechanicsHardeningCubic
value_0 = 1E80
value_residual = 1E80
internal_limit = 0.01
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '6.4E9 6.4E9' # young 16MPa, Poisson 0.25
[../]
[./strain]
type = ComputeIncrementalStrain
[../]
[./admissible]
type = ComputeMultipleInelasticStress
inelastic_models = stress
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakPlaneStressUpdate
cohesion = coh_irrelevant
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
max_NR_iterations = 1
tip_smoother = 0
smoothing_tol = 0
yield_function_tol = 1E-2
perfect_guess = true
min_step_size = 1
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[../]
[]
[Executioner]
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
line_search = bt
nl_abs_tol = 1E1
nl_rel_tol = 1e-5
l_tol = 1E-10
l_max_its = 100
nl_max_its = 100
end_time = 1.0
dt = 1.0
type = Transient
[]
[Outputs]
file_base = pull_and_shear_1step
exodus = true
[]
(modules/solid_mechanics/test/tests/2D_geometries/3D-RZ_finiteStrain_test.i)
# Considers the mechanics solution for a thick spherical shell that is uniformly
# pressurized on the inner and outer surfaces, using 3D geometry.
#
# From Roark (Formulas for Stress and Strain, McGraw-Hill, 1975), the radially-dependent
# circumferential stress in a uniformly pressurized thick spherical shell is given by:
#
# S(r) = [ Pi[ri^3(2r^3+ro^3)] - Po[ro^3(2r^3+ri^3)] ] / [2r^3(ro^3-ri^3)]
#
# where:
# Pi = inner pressure
# Po = outer pressure
# ri = inner radius
# ro = outer radius
#
# The tests assume an inner and outer radii of 5 and 10, with internal and external
# pressures of 100000 and 200000 at t = 1.0, respectively. The resulting compressive
# tangential stress is largest at the inner wall and, from the above equation, has a
# value of -271429.
#
# RESULTS are below. Since stresses are average element values, values for the
# edge element and one-element-in are used to extrapolate the stress to the
# inner surface. The vesrion of the tests that are checked use the coarsest meshes.
#
# Mesh Radial elem S(edge elem) S(one elem in) S(extrap to surf)
# 1D-SPH
# 2D-RZ 12 (x10) -265004 -254665 -270174
# 3D 12 (6x6) -261880 -252811 -266415
#
# 1D-SPH
# 2D-RZ 48 (x10) -269853 -266710 -271425
# 3D 48 (10x10) -268522 -265653 -269957
#
# The numerical solution converges to the analytical solution as the mesh is
# refined.
[Mesh]
file = 3D_mesh.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
block = 1
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
block = 1
[../]
[./elastic_strain]
type = ComputeFiniteStrainElasticStress
block = 1
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[../]
[./no_disp_y]
type = DirichletBC
variable = disp_y
boundary = yzero
value = 0.0
[../]
[./no_disp_z]
type = DirichletBC
variable = disp_z
boundary = zzero
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = outer
function = '200000*t'
[../]
[./exterior_pressure_y]
type = Pressure
variable = disp_y
boundary = outer
function = '200000*t'
[../]
[./exterior_pressure_z]
type = Pressure
variable = disp_z
boundary = outer
function = '200000*t'
[../]
[./interior_pressure_x]
type = Pressure
variable = disp_x
boundary = inner
function = '100000*t'
[../]
[./interior_pressure_y]
type = Pressure
variable = disp_y
boundary = inner
function = '100000*t'
[../]
[./interior_pressure_z]
type = Pressure
variable = disp_z
boundary = inner
function = '100000*t'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 0.2
dt = 0.1
[]
[Postprocessors]
[./strainTheta]
type = ElementAverageValue
variable = strain_theta
[../]
[./stressTheta]
type = ElementAverageValue
variable = stress_theta
[../]
[./stressTheta_pt]
type = PointValue
point = '5.0 0.0 0.0'
#bottom inside edge for comparison to theory; use csv = true
variable = stress_theta
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/gravity/gravity_qp_select.i)
# Gravity Test
#
# This test is similar to the other gravity tests, but it also tests the
# capability in MaterialTensorAux to return the stress of a single,
# specified integration point, rather than the element average.
# To get the stress at a single integration point, set the parameter
# qp_select to the integration point number (i.e. 0-9 for a quad 8)
# in the AuxKernel
#
# The mesh for this problem is a unit square.
#
# The boundary conditions for this problem are as follows. The
# displacement is zero on each of side that faces a negative
# coordinate direction. The acceleration of gravity is 20.
#
# The material has a Young's modulus of 1e6 and a density of 2.
#
# The analytic solution for the displacement along the bar is:
#
# u(x) = -b*x^2/(2*E)+b*L*x/E
#
# The displacement at x=L is b*L^2/(2*E) = 2*20*1*1/(2*1e6) = 0.00002.
#
# The analytic solution for the stress along the bar assuming linear
# elasticity is:
#
# S(x) = b*(L-x)
#
# The stress at x=0 is b*L = 2*20*1 = 40.
#
# Note: The isoparametric coordinate for a quad8 (fourth order) element
# is: +/- 0.77459667 and 0. For a 1 unit square with the edge of
# the element in the x = 0 plane, there would be an integration point
# at x_coordinate 0.5 - 0.5*0.77459667 (0.11270167), 0.5, and
# 0.50 + 0.5*0.77459667 (0.88729834).
#
# The corresponding stresses are:
#
# S(0.11270167) = 40(1-0.11270167) = 35.491933
# S(0.5) = 40(1-0.5) = 20
# S(0.88729834) = 40(1-0.88729834) = 4.5080664
#
# These stresses are a precise match to the simulation result.
#
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
file = gravity_2D.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx_qp_0]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx_qp_1]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx_qp_2]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx_qp_3]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx_qp_4]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx_qp_5]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx_qp_6]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx_qp_7]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx_qp_8]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic/All]
strain = FINITE
#incremental = true
add_variables = true
generate_output = 'stress_xx'
[]
[Kernels]
[./gravity]
type = Gravity
variable = disp_x
value = 20
[../]
[]
[AuxKernels]
[./stress_xx_qp_0]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx_qp_0
index_i = 0
index_j = 0
selected_qp = 0
[../]
[./stress_xx_qp_1]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx_qp_1
index_i = 0
index_j = 0
selected_qp = 1
[../]
[./stress_xx_qp_2]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx_qp_2
index_i = 0
index_j = 0
selected_qp = 2
[../]
[./stress_xx_qp_3]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx_qp_3
index_i = 0
index_j = 0
selected_qp = 3
[../]
[./stress_xx_qp_4]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx_qp_4
index_i = 0
index_j = 0
selected_qp = 4
[../]
[./stress_xx_qp_5]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx_qp_5
index_i = 0
index_j = 0
selected_qp = 5
[../]
[./stress_xx_qp_6]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx_qp_6
index_i = 0
index_j = 0
selected_qp = 6
[../]
[./stress_xx_qp_7]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx_qp_7
index_i = 0
index_j = 0
selected_qp = 7
[../]
[./stress_xx_qp_8]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx_qp_8
index_i = 0
index_j = 0
selected_qp = 8
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_y
boundary = 5
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
bulk_modulus = 0.333333333333333e6
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[./density]
type = Density
density = 2
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
end_time = 1.0
[]
[Outputs]
file_base = gravity_qp_select_out
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[]
(modules/porous_flow/examples/thm_example/2D.i)
# Two phase, temperature-dependent, with mechanics, radial with fine mesh, constant injection of cold co2 into a overburden-reservoir-underburden containing mostly water
# species=0 is water
# species=1 is co2
# phase=0 is liquid, and since massfrac_ph0_sp0 = 1, this is all water
# phase=1 is gas, and since massfrac_ph1_sp0 = 0, this is all co2
#
# The mesh used below has very high resolution, so the simulation takes a long time to complete.
# Some suggested meshes of different resolution:
# nx=50, bias_x=1.2
# nx=100, bias_x=1.1
# nx=200, bias_x=1.05
# nx=400, bias_x=1.02
# nx=1000, bias_x=1.01
# nx=2000, bias_x=1.003
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2000
bias_x = 1.003
xmin = 0.1
xmax = 5000
ny = 1
ymin = 0
ymax = 11
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
PorousFlowDictator = dictator
gravity = '0 0 0'
biot_coefficient = 1.0
[]
[Variables]
[pwater]
initial_condition = 18.3e6
[]
[sgas]
initial_condition = 0.0
[]
[temp]
initial_condition = 358
[]
[disp_r]
[]
[]
[AuxVariables]
[rate]
[]
[disp_z]
[]
[massfrac_ph0_sp0]
initial_condition = 1 # all H20 in phase=0
[]
[massfrac_ph1_sp0]
initial_condition = 0 # no H2O in phase=1
[]
[pgas]
family = MONOMIAL
order = FIRST
[]
[swater]
family = MONOMIAL
order = FIRST
[]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_tt]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[mass_water_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pwater
[]
[flux_water]
type = PorousFlowAdvectiveFlux
fluid_component = 0
use_displaced_mesh = false
variable = pwater
[]
[mass_co2_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = sgas
[]
[flux_co2]
type = PorousFlowAdvectiveFlux
fluid_component = 1
use_displaced_mesh = false
variable = sgas
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[advection]
type = PorousFlowHeatAdvection
use_displaced_mesh = false
variable = temp
[]
[conduction]
type = PorousFlowExponentialDecay
use_displaced_mesh = false
variable = temp
reference = 358
rate = rate
[]
[grad_stress_r]
type = StressDivergenceRZTensors
temperature = temp
eigenstrain_names = thermal_contribution
variable = disp_r
use_displaced_mesh = false
component = 0
[]
[poro_r]
type = PorousFlowEffectiveStressCoupling
variable = disp_r
use_displaced_mesh = false
component = 0
[]
[]
[AuxKernels]
[rate]
type = FunctionAux
variable = rate
execute_on = timestep_begin
function = decay_rate
[]
[pgas]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = pgas
[]
[swater]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = swater
[]
[stress_rr]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rr
index_i = 0
index_j = 0
[]
[stress_tt]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_tt
index_i = 2
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 1
index_j = 1
[]
[]
[Functions]
[decay_rate]
# Eqn(26) of the first paper of LaForce et al.
# Ka * (rho C)_a = 10056886.914
# h = 11
type = ParsedFunction
expression = 'sqrt(10056886.914/t)/11.0'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp pwater sgas disp_r'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[FluidProperties]
[water]
type = SimpleFluidProperties
bulk_modulus = 2.27e14
density0 = 970.0
viscosity = 0.3394e-3
cv = 4149.0
cp = 4149.0
porepressure_coefficient = 0.0
thermal_expansion = 0
[]
[co2]
type = SimpleFluidProperties
bulk_modulus = 2.27e14
density0 = 516.48
viscosity = 0.0393e-3
cv = 2920.5
cp = 2920.5
porepressure_coefficient = 0.0
thermal_expansion = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = pwater
phase1_saturation = sgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'massfrac_ph0_sp0 massfrac_ph1_sp0'
[]
[water]
type = PorousFlowSingleComponentFluid
fp = water
phase = 0
[]
[gas]
type = PorousFlowSingleComponentFluid
fp = co2
phase = 1
[]
[porosity_reservoir]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[permeability_reservoir]
type = PorousFlowPermeabilityConst
permeability = '2e-12 0 0 0 0 0 0 0 0'
[]
[relperm_liquid]
type = PorousFlowRelativePermeabilityCorey
n = 4
phase = 0
s_res = 0.200
sum_s_res = 0.405
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityBC
phase = 1
s_res = 0.205
sum_s_res = 0.405
nw_phase = true
lambda = 2
[]
[thermal_conductivity_reservoir]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '0 0 0 0 1.320 0 0 0 0'
wet_thermal_conductivity = '0 0 0 0 3.083 0 0 0 0'
[]
[internal_energy_reservoir]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1100
density = 2350.0
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
shear_modulus = 6.0E9
poissons_ratio = 0.2
[]
[strain]
type = ComputeAxisymmetricRZSmallStrain
eigenstrain_names = 'thermal_contribution ini_stress'
[]
[ini_strain]
type = ComputeEigenstrainFromInitialStress
initial_stress = '-12.8E6 0 0 0 -51.3E6 0 0 0 -12.8E6'
eigenstrain_name = ini_stress
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = temp
stress_free_temperature = 358
thermal_expansion_coeff = 5E-6
eigenstrain_name = thermal_contribution
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[]
[BCs]
[outer_pressure_fixed]
type = DirichletBC
boundary = right
value = 18.3e6
variable = pwater
[]
[outer_saturation_fixed]
type = DirichletBC
boundary = right
value = 0.0
variable = sgas
[]
[outer_temp_fixed]
type = DirichletBC
boundary = right
value = 358
variable = temp
[]
[fixed_outer_r]
type = DirichletBC
variable = disp_r
value = 0
boundary = right
[]
[co2_injection]
type = PorousFlowSink
boundary = left
variable = sgas
use_mobility = false
use_relperm = false
fluid_phase = 1
flux_function = 'min(t/100.0,1)*(-2.294001475)' # 5.0E5 T/year = 15.855 kg/s, over area of 2Pi*0.1*11
[]
[cold_co2]
type = DirichletBC
boundary = left
variable = temp
value = 294
[]
[cavity_pressure_x]
type = Pressure
boundary = left
variable = disp_r
component = 0
postprocessor = p_bh # note, this lags
use_displaced_mesh = false
[]
[]
[Postprocessors]
[p_bh]
type = PointValue
variable = pwater
point = '0.1 0 0'
execute_on = timestep_begin
use_displaced_mesh = false
[]
[]
[VectorPostprocessors]
[ptsuss]
type = LineValueSampler
use_displaced_mesh = false
start_point = '0.1 0 0'
end_point = '5000 0 0'
sort_by = x
num_points = 50000
outputs = csv
variable = 'pwater temp sgas disp_r stress_rr stress_tt'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
#petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E2 1E-5 500'
[]
[mumps]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -pc_factor_mat_solver_package -pc_factor_shift_type -snes_rtol -snes_atol -snes_max_it'
petsc_options_value = 'gmres lu mumps NONZERO 1E-5 1E2 50'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1.5768e8
#dtmax = 1e6
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
growth_factor = 1.1
[]
[]
[Outputs]
print_linear_residuals = false
sync_times = '3600 86400 2.592E6 1.5768E8'
perf_graph = true
exodus = true
[csv]
type = CSV
sync_only = true
[]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/patch/small_patch.i)
[Mesh]
[base]
type = FileMeshGenerator
file = 'patch.xda'
[]
[sets]
input = base
type = SideSetsFromPointsGenerator
new_boundary = 'left right bottom top back front'
points = ' 0 0.5 0.5
1 0.5 0.5
0.5 0.0 0.5
'
' 0.5 1.0 0.5
0.5 0.5 0.0
0.5 0.5 1.0'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[sdx]
type = UpdatedLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = UpdatedLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = UpdatedLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[BCs]
[left]
type = DirichletBC
preset = true
variable = disp_x
boundary = left
value = 0.0
[]
[bottom]
type = DirichletBC
preset = true
variable = disp_y
boundary = bottom
value = 0.0
[]
[back]
type = DirichletBC
preset = true
variable = disp_z
boundary = back
value = 0.0
[]
[front]
type = DirichletBC
preset = true
variable = disp_z
boundary = front
value = 0.1
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 1
solve_type = 'newton'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
end_time = 1
dtmin = 1.0
[]
[Outputs]
exodus = 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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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/solid_mechanics/test/tests/ad_2D_geometries/2D-RZ_finiteStrain_resid.i)
# This tests the save_in_disp residual aux-variables for
# ComputeAxisymmetricRZFiniteStrain, which is generated through the use of the
# SolidMechanics QuasiStatic Physics. The GeneratedMesh is 1x1, rotated via axisym to
# create a cylinder of height 1, radius 1.
#
# PostProcessor force_z plots the force on the top surface of the cylinder.
#
# Displacement of 0.1 is applied to top of cylinder while other surfaces are
# constrained. Plotting force_z vs stress_z will show a slope of 3.14159 (pi),
# consistent with formula for normal stress:
#
# Stress = force / area
#
# where area is A = pi * r^2 for a circle.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
save_in = 'force_r force_z'
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_r]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_r]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_z]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_z]
order = CONSTANT
family = MONOMIAL
[../]
[./force_r]
order = FIRST
family = LAGRANGE
[../]
[./force_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./stress_r]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_r
execute_on = timestep_end
[../]
[./strain_r]
type = ADRankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 0
variable = strain_r
execute_on = timestep_end
[../]
[./stress_z]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_z
execute_on = timestep_end
[../]
[./strain_z]
type = ADRankTwoAux
rank_two_tensor = total_strain
index_i = 1
index_j = 1
variable = strain_z
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./_elastic_strain]
type = ADComputeFiniteStrainElasticStress
[../]
[]
[BCs]
[./no_disp_r_left]
type = ADDirichletBC
variable = disp_r
boundary = left
value = 0.0
[../]
[./no_disp_r_right]
type = ADDirichletBC
variable = disp_r
boundary = right
value = 0.0
[../]
[./no_disp_z_bottom]
type = ADDirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./top]
type = ADFunctionDirichletBC
variable = disp_z
boundary = top
function = 't'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 0.1
dt = 0.01
[]
[Postprocessors]
[./strainR]
type = ElementAverageValue
variable = strain_r
[../]
[./stressR]
type = ElementAverageValue
variable = stress_r
[../]
[./strainZ]
type = ElementAverageValue
variable = strain_z
[../]
[./stressZ]
type = ElementAverageValue
variable = stress_z
[../]
[./force_r]
type = NodalSum
variable = force_r
boundary = top
[../]
[./force_z]
type = NodalSum
variable = force_z
boundary = top
[../]
[]
[Outputs]
exodus = true
print_linear_residuals = false
perf_graph = true
[]
(modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined.i)
# A sample is constrained on all sides, except its top
# and its boundaries are
# also impermeable. Fluid is pumped into the sample via a
# volumetric source (ie kg/second per cubic meter), and the
# rise in the top surface, porepressure, and stress are observed.
#
# In the standard poromechanics scenario, the Biot Modulus is held
# fixed and the source has units 1/time. Then the expected result
# is
# strain_zz = disp_z = BiotCoefficient*BiotModulus*s*t/((bulk + 4*shear/3) + BiotCoefficient^2*BiotModulus)
# porepressure = BiotModulus*(s*t - BiotCoefficient*strain_zz)
# stress_xx = (bulk - 2*shear/3)*strain_zz (remember this is effective stress)
# stress_zz = (bulk + 4*shear/3)*strain_zz (remember this is effective stress)
#
# In porous_flow, however, the source has units kg/s/m^3 and the
# Biot Modulus is not held fixed. This means that disp_z, porepressure,
# etc are not linear functions of t. Nevertheless, the ratios remain
# fixed:
# stress_xx/strain_zz = (bulk - 2*shear/3) = 1 (for the parameters used here)
# stress_zz/strain_zz = (bulk + 4*shear/3) = 4 (for the parameters used here)
# porepressure/strain_zz = 13.3333333 (for the parameters used here)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1e-5
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[]
[confinez]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
component = 2
variable = disp_z
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[flux]
type = PorousFlowAdvectiveFlux
variable = porepressure
gravity = '0 0 0'
fluid_component = 0
[]
[source]
type = BodyForce
function = 0.1
variable = porepressure
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 3.3333333333
density0 = 1
thermal_expansion = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
porosity_zero = 0.1
biot_coefficient = 0.3
solid_bulk = 2
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1 0 0 0 1 0 0 0 1' # unimportant
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 0 # unimportant in this fully-saturated situation
phase = 0
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = none
point = '0 0 0'
variable = porepressure
[]
[zdisp]
type = PointValue
outputs = none
point = '0 0 0.5'
variable = disp_z
[]
[stress_xx]
type = PointValue
outputs = none
point = '0 0 0'
variable = stress_xx
[]
[stress_yy]
type = PointValue
outputs = none
point = '0 0 0'
variable = stress_yy
[]
[stress_zz]
type = PointValue
outputs = none
point = '0 0 0'
variable = stress_zz
[]
[stress_xx_over_strain]
type = FunctionValuePostprocessor
function = stress_xx_over_strain_fcn
outputs = csv
[]
[stress_zz_over_strain]
type = FunctionValuePostprocessor
function = stress_zz_over_strain_fcn
outputs = csv
[]
[p_over_strain]
type = FunctionValuePostprocessor
function = p_over_strain_fcn
outputs = csv
[]
[]
[Functions]
[stress_xx_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'stress_xx zdisp'
[]
[stress_zz_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'stress_zz zdisp'
[]
[p_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'p0 zdisp'
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = pp_generation_unconfined
[csv]
type = CSV
[]
[]
(modules/porous_flow/test/tests/mass_conservation/mass11.i)
# The sample is a single unit element, with roller BCs on the sides and bottom.
# The top is free to move and fluid is injected at a constant rate of 1kg/s
# There is no fluid flow.
# Fluid mass conservation is checked.
# Under these conditions the fluid mass should increase at 1kg/s
# The porepressure should increase: rho0 * exp(P/bulk) = rho * exp(P0/bulk) + 1*t
# The stress_zz should be exactly biot * P since total stress is zero
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
initial_condition = 0.1
[]
[]
[BCs]
[confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[]
[basefixed]
type = DirichletBC
variable = disp_z
value = 0
boundary = back
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
component = 2
variable = disp_z
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[]
[DiracKernels]
[inject]
type = PorousFlowPointSourceFromPostprocessor
point = '0 0 0'
mass_flux = 1.0
variable = porepressure
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0.5 0 0 0 0.5 0 0 0 0.5'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '0 0 0'
variable = porepressure
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
use_displaced_mesh = false
variable = disp_z
[]
[stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[]
[stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[]
[stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[]
[fluid_mass]
type = PorousFlowFluidMass
fluid_component = 0
execute_on = 'initial timestep_end'
outputs = 'console csv'
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-8 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 2
[]
[Outputs]
execute_on = 'initial timestep_end'
[csv]
type = CSV
[]
[]
(modules/combined/examples/periodic_strain/global_strain_pfm.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 50
ny = 50
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
[]
[./cnode]
input = gen
type = ExtraNodesetGenerator
coord = '0.0 0.0'
new_boundary = 100
[../]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./global_strain]
order = THIRD
family = SCALAR
[../]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'sin(2*x*pi)*sin(2*y*pi)*0.05+0.6'
[../]
[../]
[./w]
[../]
[]
[AuxVariables]
[./local_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[./s00]
order = CONSTANT
family = MONOMIAL
[../]
[./s01]
order = CONSTANT
family = MONOMIAL
[../]
[./s10]
order = CONSTANT
family = MONOMIAL
[../]
[./s11]
order = CONSTANT
family = MONOMIAL
[../]
[./e00]
order = CONSTANT
family = MONOMIAL
[../]
[./e01]
order = CONSTANT
family = MONOMIAL
[../]
[./e10]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 0
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./local_free_energy]
type = TotalFreeEnergy
execute_on = 'initial LINEAR'
variable = local_energy
interfacial_vars = 'c'
kappa_names = 'kappa_c'
[../]
[./s00]
type = RankTwoAux
variable = s00
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./s01]
type = RankTwoAux
variable = s01
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./s10]
type = RankTwoAux
variable = s10
rank_two_tensor = stress
index_i = 1
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./e00]
type = RankTwoAux
variable = e00
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[../]
[./e01]
type = RankTwoAux
variable = e01
rank_two_tensor = total_strain
index_i = 0
index_j = 1
[../]
[./e10]
type = RankTwoAux
variable = e10
rank_two_tensor = total_strain
index_i = 1
index_j = 0
[../]
[./e11]
type = RankTwoAux
variable = e11
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[../]
[]
[GlobalParams]
derivative_order = 2
enable_jit = true
displacements = 'u_x u_y'
block = 0
[]
[Kernels]
[./TensorMechanics]
[../]
# Cahn-Hilliard kernels
[./c_dot]
type = CoupledTimeDerivative
variable = w
v = c
block = 0
[../]
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
kappa_name = kappa_c
w = w
block = 0
[../]
[./w_res]
type = SplitCHWRes
variable = w
mob_name = M
block = 0
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[BCs]
[./Periodic]
[./all]
auto_direction = 'x y'
variable = 'c w u_x u_y'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = u_y
value = 0
[../]
[]
[Materials]
[./consts]
type = GenericConstantMaterial
prop_names = 'M kappa_c'
prop_values = '0.2 0.01 '
[../]
[./shear1]
type = GenericConstantRankTwoTensor
tensor_values = '0 0 0 0 0 0.5'
tensor_name = shear1
[../]
[./shear2]
type = GenericConstantRankTwoTensor
tensor_values = '0 0 0 0 0 -0.5'
tensor_name = shear2
[../]
[./expand3]
type = GenericConstantRankTwoTensor
tensor_values = '1 1 0 0 0 0'
tensor_name = expand3
[../]
[./weight1]
type = DerivativeParsedMaterial
expression = '0.3*c^2'
property_name = weight1
coupled_variables = c
[../]
[./weight2]
type = DerivativeParsedMaterial
expression = '0.3*(1-c)^2'
property_name = weight2
coupled_variables = c
[../]
[./weight3]
type = DerivativeParsedMaterial
expression = '4*(0.5-c)^2'
property_name = weight3
coupled_variables = c
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
eigenstrain_names = eigenstrain
[../]
[./eigenstrain]
type = CompositeEigenstrain
tensors = 'shear1 shear2 expand3'
weights = 'weight1 weight2 weight3'
args = c
eigenstrain_name = eigenstrain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
# chemical free energies
[./chemical_free_energy]
type = DerivativeParsedMaterial
property_name = Fc
expression = '4*c^2*(1-c)^2'
coupled_variables = 'c'
outputs = exodus
output_properties = Fc
[../]
# elastic free energies
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
args = 'c'
outputs = exodus
output_properties = Fe
[../]
# free energy (chemical + elastic)
[./free_energy]
type = DerivativeSumMaterial
block = 0
property_name = F
sum_materials = 'Fc Fe'
coupled_variables = 'c'
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalStrainUserObject
execute_on = 'Initial Linear Nonlinear'
[../]
[]
[Postprocessors]
[./total_free_energy]
type = ElementIntegralVariablePostprocessor
execute_on = 'initial TIMESTEP_END'
variable = local_energy
[../]
[./total_solute]
type = ElementIntegralVariablePostprocessor
execute_on = 'initial TIMESTEP_END'
variable = c
[../]
[./min]
type = ElementExtremeValue
execute_on = 'initial TIMESTEP_END'
value_type = min
variable = c
[../]
[./max]
type = ElementExtremeValue
execute_on = 'initial TIMESTEP_END'
value_type = max
variable = c
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
line_search = basic
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
l_max_its = 30
nl_max_its = 12
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 1.0e-10
start_time = 0.0
end_time = 2.0
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.01
growth_factor = 1.5
cutback_factor = 0.8
optimal_iterations = 9
iteration_window = 2
[../]
[]
[Outputs]
execute_on = 'timestep_end'
print_linear_residuals = false
exodus = true
[./table]
type = CSV
delimiter = ' '
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_user_object.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD4
displacements = 'disp_x disp_y'
nx = 2
ny = 2
[]
[Variables]
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[UserObjects]
[./prop_read]
type = PropertyReadFile
prop_file_name = 'euler_ang_file.txt'
# Enter file data as prop#1, prop#2, .., prop#nprop
nprop = 3
read_type = element
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[./e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = lage
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[./fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = fp
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCrystalPlasticity
block = 0
gtol = 1e-2
slip_sys_file_name = input_slip_sys.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
hprops = '1.0 541.5 60.8 109.8 2.5'
gprops = '1 4 60.8 5 8 60.8 9 12 60.8'
tan_mod_type = exact
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
read_prop_user_object = prop_read
[../]
[]
[Postprocessors]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
block = 'ANY_BLOCK_ID 0'
[../]
[./e_yy]
type = ElementAverageValue
variable = e_yy
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_yy]
type = ElementAverageValue
variable = fp_yy
block = 'ANY_BLOCK_ID 0'
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.01
dtmax = 10.0
dtmin = 0.01
num_steps = 10
[]
[Outputs]
file_base = crysp_user_object_out
exodus = true
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y'
use_displaced_mesh = true
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/materials/correctness/neohookean.i)
# Simple 3D test
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[Functions]
[strain]
type = ParsedFunction
expression = 't'
[]
[]
[BCs]
[leftx]
type = DirichletBC
preset = true
boundary = left
variable = disp_x
value = 0.0
[]
[boty]
type = DirichletBC
preset = true
boundary = bottom
variable = disp_y
value = 0.0
[]
[backz]
type = DirichletBC
preset = true
boundary = back
variable = disp_z
value = 0.0
[]
[pull_x]
type = FunctionDirichletBC
boundary = right
variable = disp_x
function = strain
[]
[]
[Materials]
[compute_stress]
type = ComputeNeoHookeanStress
lambda = 4000.0
mu = 6700.0
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[AuxVariables]
[s11]
family = MONOMIAL
order = CONSTANT
[]
[s21]
family = MONOMIAL
order = CONSTANT
[]
[s31]
family = MONOMIAL
order = CONSTANT
[]
[s12]
family = MONOMIAL
order = CONSTANT
[]
[s22]
family = MONOMIAL
order = CONSTANT
[]
[s32]
family = MONOMIAL
order = CONSTANT
[]
[s13]
family = MONOMIAL
order = CONSTANT
[]
[s23]
family = MONOMIAL
order = CONSTANT
[]
[s33]
family = MONOMIAL
order = CONSTANT
[]
[F11]
family = MONOMIAL
order = CONSTANT
[]
[F21]
family = MONOMIAL
order = CONSTANT
[]
[F31]
family = MONOMIAL
order = CONSTANT
[]
[F12]
family = MONOMIAL
order = CONSTANT
[]
[F22]
family = MONOMIAL
order = CONSTANT
[]
[F32]
family = MONOMIAL
order = CONSTANT
[]
[F13]
family = MONOMIAL
order = CONSTANT
[]
[F23]
family = MONOMIAL
order = CONSTANT
[]
[F33]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s11]
type = RankTwoAux
variable = s11
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[s21]
type = RankTwoAux
variable = s21
rank_two_tensor = pk1_stress
index_i = 1
index_j = 0
[]
[s31]
type = RankTwoAux
variable = s31
rank_two_tensor = pk1_stress
index_i = 2
index_j = 0
[]
[s12]
type = RankTwoAux
variable = s12
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[s22]
type = RankTwoAux
variable = s22
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[s32]
type = RankTwoAux
variable = s32
rank_two_tensor = pk1_stress
index_i = 2
index_j = 1
[]
[s13]
type = RankTwoAux
variable = s13
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[s23]
type = RankTwoAux
variable = s23
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[s33]
type = RankTwoAux
variable = s33
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[F11]
type = RankTwoAux
variable = F11
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 0
[]
[F21]
type = RankTwoAux
variable = F21
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 0
[]
[F31]
type = RankTwoAux
variable = F31
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 0
[]
[F12]
type = RankTwoAux
variable = F12
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 1
[]
[F22]
type = RankTwoAux
variable = F22
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[F32]
type = RankTwoAux
variable = F32
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 1
[]
[F13]
type = RankTwoAux
variable = F13
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 2
[]
[F23]
type = RankTwoAux
variable = F23
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 2
[]
[F33]
type = RankTwoAux
variable = F33
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 2
[]
[]
[Postprocessors]
[s11]
type = ElementAverageValue
variable = s11
execute_on = 'initial timestep_end'
[]
[s21]
type = ElementAverageValue
variable = s21
execute_on = 'initial timestep_end'
[]
[s31]
type = ElementAverageValue
variable = s31
execute_on = 'initial timestep_end'
[]
[s12]
type = ElementAverageValue
variable = s12
execute_on = 'initial timestep_end'
[]
[s22]
type = ElementAverageValue
variable = s22
execute_on = 'initial timestep_end'
[]
[s32]
type = ElementAverageValue
variable = s32
execute_on = 'initial timestep_end'
[]
[s13]
type = ElementAverageValue
variable = s13
execute_on = 'initial timestep_end'
[]
[s23]
type = ElementAverageValue
variable = s23
execute_on = 'initial timestep_end'
[]
[s33]
type = ElementAverageValue
variable = s33
execute_on = 'initial timestep_end'
[]
[F11]
type = ElementAverageValue
variable = F11
execute_on = 'initial timestep_end'
[]
[F21]
type = ElementAverageValue
variable = F21
execute_on = 'initial timestep_end'
[]
[F31]
type = ElementAverageValue
variable = F31
execute_on = 'initial timestep_end'
[]
[F12]
type = ElementAverageValue
variable = F12
execute_on = 'initial timestep_end'
[]
[F22]
type = ElementAverageValue
variable = F22
execute_on = 'initial timestep_end'
[]
[F32]
type = ElementAverageValue
variable = F32
execute_on = 'initial timestep_end'
[]
[F13]
type = ElementAverageValue
variable = F13
execute_on = 'initial timestep_end'
[]
[F23]
type = ElementAverageValue
variable = F23
execute_on = 'initial timestep_end'
[]
[F33]
type = ElementAverageValue
variable = F33
execute_on = 'initial timestep_end'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 10
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 1.0
[]
[Outputs]
exodus = false
csv = true
[]
(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/solid_mechanics/test/tests/isotropic_elasticity_tensor/lambda_shear_modulus_test.i)
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./stress_11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
add_variables = true
[../]
[]
[AuxKernels]
[./stress_11]
type = RankTwoAux
variable = stress_11
rank_two_tensor = stress
index_j = 1
index_i = 1
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.001
[../]
[]
[Materials]
[./stress]
type = ComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
lambda = 113636
shear_modulus = 454545
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
l_max_its = 20
nl_max_its = 10
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/dynamics/wave_1D/wave_newmark.i)
# Wave propogation in 1D using Newmark time integration
#
# The test is for an 1D bar element of length 4m fixed on one end
# with a sinusoidal pulse dirichlet boundary condition applied to the other end.
# beta and gamma are Newmark time integration parameters
# The equation of motion in terms of matrices is:
#
# M*accel + K*disp = 0
#
# Here M is the mass matrix, K is the stiffness matrix
#
# This equation is equivalent to:
#
# density*accel + Div Stress= 0
#
# The first term on the left is evaluated using the Inertial force kernel
# The last term on the left is evaluated using StressDivergenceTensors
#
# The displacement at the second, third and fourth node at t = 0.1 are
# -8.021501116638234119e-02, 2.073994362053969628e-02 and -5.045094181261772920e-03, respectively
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 4
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 4.0
zmin = 0.0
zmax = 0.1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.3025
gamma = 0.6
eta=0.0
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.3025
gamma = 0.6
eta=0.0
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.3025
gamma = 0.6
eta = 0.0
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.3025
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.6
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.3025
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.6
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.3025
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.6
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 0
index_j = 1
[../]
[]
[BCs]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = top
value=0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = top
value=0.0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value=0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = right
value=0.0
[../]
[./right_z]
type = DirichletBC
variable = disp_z
boundary = right
value=0.0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value=0.0
[../]
[./left_z]
type = DirichletBC
variable = disp_z
boundary = left
value=0.0
[../]
[./front_x]
type = DirichletBC
variable = disp_x
boundary = front
value=0.0
[../]
[./front_z]
type = DirichletBC
variable = disp_z
boundary = front
value=0.0
[../]
[./back_x]
type = DirichletBC
variable = disp_x
boundary = back
value=0.0
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = back
value=0.0
[../]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value=0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value=0.0
[../]
[./bottom_y]
type = FunctionDirichletBC
variable = disp_y
boundary = bottom
function = displacement_bc
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1 0'
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 6.0
l_tol = 1e-12
nl_rel_tol = 1e-12
dt = 0.1
[]
[Functions]
[./displacement_bc]
type = PiecewiseLinear
data_file = 'sine_wave.csv'
format = columns
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp_1]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_2]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./disp_3]
type = NodalVariableValue
nodeid = 10
variable = disp_y
[../]
[./disp_4]
type = NodalVariableValue
nodeid = 14
variable = disp_y
[../]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/porous_flow/test/tests/thm_rehbinder/fixed_outer_rz.i)
# A version of fixed_outer.i that uses the RZ cylindrical coordinate system
[Mesh]
type = GeneratedMesh
dim = 2
nx = 40 # this is the r direction
ny = 1 # this is the height direction
xmin = 0.1
xmax = 1
bias_x = 1.1
ymin = 0.0
ymax = 1.0
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
PorousFlowDictator = dictator
biot_coefficient = 1.0
[]
[Variables]
[disp_r]
[]
[disp_z]
[]
[porepressure]
[]
[temperature]
[]
[]
[BCs]
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'top bottom'
[]
[cavity_temperature]
type = DirichletBC
variable = temperature
value = 1000
boundary = left
[]
[cavity_porepressure]
type = DirichletBC
variable = porepressure
value = 1E6
boundary = left
[]
[cavity_zero_effective_stress_x]
type = Pressure
variable = disp_r
function = 1E6
boundary = left
use_displaced_mesh = false
[]
[outer_temperature]
type = DirichletBC
variable = temperature
value = 0
boundary = right
[]
[outer_pressure]
type = DirichletBC
variable = porepressure
value = 0
boundary = right
[]
[fixed_outer_disp]
type = DirichletBC
variable = disp_r
value = 0
boundary = right
[]
[]
[AuxVariables]
[stress_rr]
family = MONOMIAL
order = CONSTANT
[]
[stress_pp]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[stress_rr]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rr
index_i = 0
index_j = 0
[]
[stress_pp] # hoop stress
type = RankTwoAux
rank_two_tensor = stress
variable = stress_pp
index_i = 2
index_j = 2
[]
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 1E12
viscosity = 1.0E-3
density0 = 1000.0
cv = 1000.0
cp = 1000.0
porepressure_coefficient = 0.0
[]
[]
[PorousFlowBasicTHM]
coupling_type = ThermoHydroMechanical
multiply_by_density = false
add_stress_aux = true
porepressure = porepressure
temperature = temperature
eigenstrain_names = thermal_contribution
gravity = '0 0 0'
fp = the_simple_fluid
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1E10
poissons_ratio = 0.2
[]
[strain]
type = ComputeAxisymmetricRZSmallStrain
eigenstrain_names = thermal_contribution
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = temperature
thermal_expansion_coeff = 1E-6
eigenstrain_name = thermal_contribution
stress_free_temperature = 0.0
[]
[stress]
type = ComputeLinearElasticStress
[]
[porosity]
type = PorousFlowPorosityConst # only the initial value of this is ever used
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
solid_bulk_compliance = 1E-10
fluid_bulk_modulus = 1E12
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-12 0 0 0 1E-12 0 0 0 1E-12' # note this is ordered: rr, zz, angle-angle
[]
[thermal_expansion]
type = PorousFlowConstantThermalExpansionCoefficient
fluid_coefficient = 1E-6
drained_coefficient = 1E-6
[]
[thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '1E6 0 0 0 1E6 0 0 0 1E6' # note this is ordered: rr, zz, angle-angle
[]
[]
[VectorPostprocessors]
[P]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = porepressure
[]
[T]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = temperature
[]
[U]
type = LineValueSampler
start_point = '0.1 0 0'
end_point = '1.0 0 0'
num_points = 10
sort_by = x
variable = disp_r
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_rtol'
petsc_options_value = 'gmres asm lu 1E-8'
[]
[]
[Executioner]
type = Steady
solve_type = Newton
[]
[Outputs]
file_base = fixed_outer_rz
execute_on = timestep_end
csv = true
[]
(modules/solid_mechanics/test/tests/multi/three_surface00.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 1E-6m in y direction and 1E-6 in z direction.
# trial stress_yy = 1 and stress_zz = 1
#
# Then SimpleTester2 should activate and the algorithm will return to
# stress_yy = 0.75, stress_zz = 0.75
# internal2 should be 0.25
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1'
debug_jac_at_intnl = '1 1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface00
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/hyperelastic_viscoplastic/one_elem_multi.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
block = 0
[../]
[./uy]
block = 0
[../]
[./uz]
block = 0
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./peeq_soft]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./peeq_hard]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./peeq_soft]
type = MaterialRealAux
variable = peeq_soft
property = ep_eqv1
execute_on = timestep_end
block = 0
[../]
[./peeq_hard]
type = MaterialRealAux
variable = peeq_hard
property = ep_eqv2
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = '0.01*t'
[../]
[]
[UserObjects]
[./flowstress1]
type = HEVPRambergOsgoodHardening
yield_stress = 100
hardening_exponent = 0.1
reference_plastic_strain = 0.002
intvar_prop_name = ep_eqv1
[../]
[./flowstress2]
type = HEVPRambergOsgoodHardening
yield_stress = 100
hardening_exponent = 0.3
reference_plastic_strain = 0.002
intvar_prop_name = ep_eqv2
[../]
[./flowrate1]
type = HEVPFlowRatePowerLawJ2
reference_flow_rate = 0.0001
flow_rate_exponent = 50.0
flow_rate_tol = 1
strength_prop_name = flowstress1
[../]
[./flowrate2]
type = HEVPFlowRatePowerLawJ2
reference_flow_rate = 0.0001
flow_rate_exponent = 50.0
flow_rate_tol = 1
strength_prop_name = flowstress2
[../]
[./ep_eqv1]
type = HEVPEqvPlasticStrain
intvar_rate_prop_name = ep_eqv_rate1
[../]
[./ep_eqv_rate1]
type = HEVPEqvPlasticStrainRate
flow_rate_prop_name = flowrate1
[../]
[./ep_eqv2]
type = HEVPEqvPlasticStrain
intvar_rate_prop_name = ep_eqv_rate2
[../]
[./ep_eqv_rate2]
type = HEVPEqvPlasticStrainRate
flow_rate_prop_name = flowrate2
[../]
[]
[Materials]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[../]
[./viscop]
type = FiniteStrainHyperElasticViscoPlastic
block = 0
resid_abs_tol = 1e-18
resid_rel_tol = 1e-8
maxiters = 50
max_substep_iteration = 5
flow_rate_user_objects = 'flowrate1 flowrate2'
strength_user_objects = 'flowstress1 flowstress2'
internal_var_user_objects = 'ep_eqv1 ep_eqv2'
internal_var_rate_user_objects = 'ep_eqv_rate1 ep_eqv_rate2'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '2.8e5 1.2e5 1.2e5 2.8e5 1.2e5 2.8e5 0.8e5 0.8e5 0.8e5'
fill_method = symmetric9
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./peeq_soft]
type = ElementAverageValue
variable = peeq_soft
block = 'ANY_BLOCK_ID 0'
[../]
[./peeq_hard]
type = ElementAverageValue
variable = peeq_hard
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.02
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
dtmax = 10.0
nl_rel_tol = 1e-10
dtmin = 0.02
num_steps = 10
[]
[Outputs]
file_base = one_elem_multi
exodus = true
csv = false
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_x_3d_anisoElasticity.i)
# This test simulates uniaxial tensile test with the material being anisotropic
# in terms of elasticity and creep.
#
# -------------------
# ANALYTICAL SOLUTION
# -------------------
# https://mooseframework.inl.gov/source/materials/HillCreepStressUpdate.html
# q = [F(S22-S33)^2 + G(S33-S11)^2 + H(S11-S22)^2 + 2L(S23)^2 + 2M(S13)^2 + 2N(S12)^2]^0.5
# S11 = 40 Pa; other compoenents of stress are zero since it is a uniaxial test
# F=0.5 G=0.25 H=0.3866 L=1.6413 M=1.6413 N=1.2731 (as used in this test)
# Substituting the values of stress components and F, G, H, L, M and N we obtain
# q = 31.9148868 Pa
#
# Equivalent_creep_strain_rate = A(q)^n (power law creep rate used in this test)
# Substituting A=1e-16 and n=9, and q as calculated above, we obtain
# Equivalent_creep_strain_rate = 3.4351030990356175e-07
#
# The 11 (xx) component of creep_strain_tensor is calculated as below
# creep_strain_tensor_11 = (Equivalent_creep_strain_rate / q) *
# (H * (S11 - S22) - G * (S33 - S11)) * time_increment
# Substituting the values and time_increment as 0.001 we obtain the analytical solution.
#
# MOOSE Analytical
# creep_strain_tensor_11 2.740674587165e-06 2.7407731645305e-06
#
# -----------------------------------------
# PYTHON SCRIPT FOR THE ANALYTICAL SOLUTION
# -----------------------------------------
# import math
# F=0.5; G=0.25; H=0.3866; L=1.6413; M=1.6413; N=1.2731
# S11=40; S22=0; S33=0; S23=0; S13=0; S12=0
# q = math.sqrt(F*(S22-S33)**2 + G*(S33-S11)**2 + H*(S11-S22)**2 + 2*L*(S23)**2 + 2*M*(S13)**2 + 2*N*(S12)**2)
# A=1e-16; n=9; time=0.001
# equivalent_creep_strain_rate = A*(q**n)
# equivalent_creep_strain_rate_11=(equivalent_creep_strain_rate / q) * (H * (S11 - S22) - G * (S33 - S11)) * time
# print(equivalent_creep_strain_rate_11)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0e-9 1.0'
y = '0 -4e1 -4e1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeElasticityTensor
C_ijkl = '2925.433 391.979 391.979 2127.590 322.280 2127.590 1805.310 3.96 3.96'
fill_method = symmetric9
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_creep_two"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.25 0.3866 1.6413 1.6413 1.2731"
[]
[trial_creep_two]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
absolute_tolerance = 1e-20
relative_tolerance = 1e-20
# Force it to not use integration error
max_integration_error = 100.0
anisotropic_elasticity = true
creep_prefactor = 1.0
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err'
petsc_options_value = 'lu superlu_dist 1e-5'
nl_rel_tol = 1.0e-14
nl_abs_tol = 1.0e-14
l_max_its = 10
num_steps = 5
dt = 1.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = false
perf_graph = true
# unnecessary output variables
hide = 'matl_ts_min max_disp_x max_disp_y max_hydro dt num_lin num_nonlin'
[]
(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
[../]
[]
[Physics]
[./SolidMechanics]
[./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/solid_mechanics/test/tests/drucker_prager/small_deform2_inner_tip.i)
# apply repeated stretches in x, y and z directions, so that mean_stress = 0
# This maps out the yield surface in the octahedral plane for zero mean stress
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1.5E-6*x+2E-6*x*sin(t)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2E-6*y*sin(2*t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-2E-6*z*(sin(t)+sin(2*t))'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 20
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 0
[../]
[./mc]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
smoother = 4
mc_interpolation_scheme = inner_tip
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-12
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 100
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2_inner_tip
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/scalar_kernel/2drow.i)
# 2D with mixed conditions on stress/strain
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = false
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '2d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0'
fixed_normal = true
new_boundary = 'left right bottom top'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[hvar]
family = SCALAR
order = FIRST
[]
[hvarA]
family = SCALAR
order = SECOND
[]
[]
[AuxVariables]
[sxx]
family = MONOMIAL
order = CONSTANT
[]
[syy]
family = MONOMIAL
order = CONSTANT
[]
[sxy]
family = MONOMIAL
order = CONSTANT
[]
[exx]
family = MONOMIAL
order = CONSTANT
[]
[eyy]
family = MONOMIAL
order = CONSTANT
[]
[exy]
family = MONOMIAL
order = CONSTANT
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergenceR
variable = disp_x
component = 0
macro_var = hvar
macro_other = hvarA
prime_scalar = 0
compute_field_residuals = true
compute_scalar_residuals = false
constraint_types = ${constraint_types}
targets = ${targets}
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergenceR
variable = disp_y
component = 1
macro_var = hvar
macro_other = hvarA
prime_scalar = 0
compute_field_residuals = true
compute_scalar_residuals = false
constraint_types = ${constraint_types}
targets = ${targets}
[]
[sd0]
type = HomogenizedTotalLagrangianStressDivergenceR
variable = disp_x
component = 0
macro_var = hvar
macro_other = hvarA
prime_scalar = 0
compute_field_residuals = false
compute_scalar_residuals = true
constraint_types = ${constraint_types}
targets = ${targets}
[]
[sd1]
type = HomogenizedTotalLagrangianStressDivergenceR
variable = disp_y
component = 1
macro_var = hvarA
macro_other = hvar
prime_scalar = 1
compute_field_residuals = false
compute_scalar_residuals = true
constraint_types = ${constraint_types}
targets = ${targets}
[]
[]
[Problem]
kernel_coverage_check = false
error_on_jacobian_nonzero_reallocation = true
[]
[AuxKernels]
[sxx]
type = RankTwoAux
variable = sxx
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[syy]
type = RankTwoAux
variable = syy
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[sxy]
type = RankTwoAux
variable = sxy
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[exx]
type = RankTwoAux
variable = exx
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
[]
[eyy]
type = RankTwoAux
variable = eyy
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 1
[]
[exy]
type = RankTwoAux
variable = exy
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 1
[]
[]
[Functions]
[strain11]
type = ParsedFunction
value = '4.0e-2*t'
[]
[strain22]
type = ParsedFunction
value = '-2.0e-2*t'
[]
[strain12]
type = ParsedFunction
value = '1.0e-2*t'
[]
[stress11]
type = ParsedFunction
value = '400*t'
[]
[stress22]
type = ParsedFunction
value = '-200*t'
[]
[stress12]
type = ParsedFunction
value = '100*t'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y'
[]
[y]
variable = disp_y
auto_direction = 'x y'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix1"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix1"
variable = disp_y
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix2"
variable = disp_y
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrainA
macro_gradientA = hvar
macro_gradient = hvarA
constraint_types = ${constraint_types}
targets = ${targets}
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = sxx
execute_on = 'initial timestep_end'
[]
[syy]
type = ElementAverageValue
variable = syy
execute_on = 'initial timestep_end'
[]
[sxy]
type = ElementAverageValue
variable = sxy
execute_on = 'initial timestep_end'
[]
[exx]
type = ElementAverageValue
variable = exx
execute_on = 'initial timestep_end'
[]
[eyy]
type = ElementAverageValue
variable = eyy
execute_on = 'initial timestep_end'
[]
[exy]
type = ElementAverageValue
variable = exy
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
# solve_type = 'PJFNK'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 30
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/examples/coal_mining/fine.i)
# Strata deformation and fracturing around a coal mine - 3D model
#
# A "half model" is used. The mine is 400m deep and
# just the roof is studied (-400<=z<=0). The mining panel
# sits between 0<=x<=150, and 0<=y<=1000, so this simulates
# a coal panel that is 300m wide and 1000m long. The outer boundaries
# are 1km from the excavation boundaries.
#
# Time is meaningless in this example
# as quasi-static solutions are sought at each timestep, but
# the number of timesteps controls the resolution of the
# process.
#
# The boundary conditions for this simulation are:
# - disp_x = 0 at x=0 and x=1150
# - disp_y = 0 at y=-1000 and y=1000
# - disp_z = 0 at z=-400, but there is a time-dependent
# Young's modulus that simulates excavation
# - wc_x = 0 at y=-1000 and y=1000
# - wc_y = 0 at x=0 and x=1150
# That is, rollers on the sides, free at top,
# and prescribed at bottom in the unexcavated portion.
#
# The small strain formulation is used.
#
# All stresses are measured in MPa. The initial stress is consistent with
# the weight force from density 2500 kg/m^3, ie, stress_zz = 0.025*z MPa
# where gravity = 10 m.s^-2 = 1E-5 MPa m^2/kg. The maximum and minimum
# principal horizontal stresses are assumed to be equal to 0.8*stress_zz.
#
# Material properties:
# Young's modulus = 8 GPa
# Poisson's ratio = 0.25
# Cosserat layer thickness = 1 m
# Cosserat-joint normal stiffness = large
# Cosserat-joint shear stiffness = 1 GPa
# MC cohesion = 3 MPa
# MC friction angle = 37 deg
# MC dilation angle = 8 deg
# MC tensile strength = 1 MPa
# MC compressive strength = 100 MPa
# WeakPlane cohesion = 0.1 MPa
# WeakPlane friction angle = 30 deg
# WeakPlane dilation angle = 10 deg
# WeakPlane tensile strength = 0.1 MPa
# WeakPlane compressive strength = 100 MPa softening to 1 MPa at strain = 1
#
[Mesh]
[file]
type = FileMeshGenerator
file = mesh/fine.e
[]
[./xmin]
input = file
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
new_boundary = xmin
normal = '-1 0 0'
[../]
[./xmax]
input = xmin
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
new_boundary = xmax
normal = '1 0 0'
[../]
[./ymin]
input = xmax
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
new_boundary = ymin
normal = '0 -1 0'
[../]
[./ymax]
input = ymin
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
new_boundary = ymax
normal = '0 1 0'
[../]
[./zmax]
input = ymax
type = SideSetsAroundSubdomainGenerator
block = 30
new_boundary = zmax
normal = '0 0 1'
[../]
[./zmin]
input = zmax
type = SideSetsAroundSubdomainGenerator
block = 2
new_boundary = zmin
normal = '0 0 -1'
[../]
[./excav]
type = SubdomainBoundingBoxGenerator
input = zmin
block_id = 1
bottom_left = '0 0 -400'
top_right = '150 1000 -397'
[../]
[./roof]
type = SideSetsAroundSubdomainGenerator
block = 1
input = excav
new_boundary = roof
normal = '0 0 1'
[../]
[]
[GlobalParams]
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_y
component = 1
[../]
[./gravity]
type = Gravity
use_displaced_mesh = false
variable = disp_z
value = -10E-6 # remember this is in MPa
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_shear]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_internal_parameter
variable = mc_shear
[../]
[./mc_tensile]
type = MaterialStdVectorAux
index = 1
property = mc_plastic_internal_parameter
variable = mc_tensile
[../]
[./wp_shear]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_internal_parameter
variable = wp_shear
[../]
[./wp_tensile]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_internal_parameter
variable = wp_tensile
[../]
[./mc_shear_f]
type = MaterialStdVectorAux
index = 6
property = mc_plastic_yield_function
variable = mc_shear_f
[../]
[./mc_tensile_f]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_yield_function
variable = mc_tensile_f
[../]
[./wp_shear_f]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_yield_function
variable = wp_shear_f
[../]
[./wp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_yield_function
variable = wp_tensile_f
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 'xmin xmax'
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 'ymin ymax'
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = zmin
value = 0.0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = 'ymin ymax'
value = 0.0
[../]
[./no_wc_y]
type = DirichletBC
variable = wc_y
boundary = 'xmin xmax'
value = 0.0
[../]
[./roof]
type = StickyBC
variable = disp_z
min_value = -3.0
boundary = roof
[../]
[]
[Functions]
[./ini_xx]
type = ParsedFunction
expression = '0.8*2500*10E-6*z'
[../]
[./ini_zz]
type = ParsedFunction
expression = '2500*10E-6*z'
[../]
[./excav_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval slope'
symbol_values = '100.0 0 1000.0 1E-9 1 10'
# excavation face at ymin+(ymax-ymin)*min(t/end_t,1)
# slope is the distance over which the modulus reduces from maxval to minval
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,if(y<ymin+(ymax-ymin)*min(t/end_t,1)+slope,minval+(maxval-minval)*(y-(ymin+(ymax-ymin)*min(t/end_t,1)))/slope,maxval))'
[../]
[./density_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval'
symbol_values = '100.0 0 1000.0 0 2500'
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,maxval)'
[../]
[]
[UserObjects]
[./mc_coh_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 2.99 # MPa
value_residual = 3.01 # MPa
rate = 1.0
[../]
[./mc_fric]
type = SolidMechanicsHardeningConstant
value = 0.65 # 37deg
[../]
[./mc_dil]
type = SolidMechanicsHardeningConstant
value = 0.15 # 8deg
[../]
[./mc_tensile_str_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 1.0 # MPa
value_residual = 1.0 # MPa
rate = 1.0
[../]
[./mc_compressive_str]
type = SolidMechanicsHardeningCubic
value_0 = 100 # Large!
value_residual = 100
internal_limit = 0.1
[../]
[./wp_coh_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_tan_fric]
type = SolidMechanicsHardeningConstant
value = 0.36 # 20deg
[../]
[./wp_tan_dil]
type = SolidMechanicsHardeningConstant
value = 0.18 # 10deg
[../]
[./wp_tensile_str_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_compressive_str_soften]
type = SolidMechanicsHardeningCubic
value_0 = 100
value_residual = 1
internal_limit = 1.0
[../]
[]
[Materials]
[./elasticity_tensor_0]
type = ComputeLayeredCosseratElasticityTensor
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
[../]
[./elasticity_tensor_1]
type = ComputeLayeredCosseratElasticityTensor
block = 1
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
elasticity_tensor_prefactor = excav_sideways
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
eigenstrain_name = ini_stress
initial_stress = 'ini_xx 0 0 0 ini_xx 0 0 0 ini_zz'
[../]
[./stress_0]
type = ComputeMultipleInelasticCosseratStress
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
inelastic_models = 'mc wp'
cycle_models = true
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./stress_1]
type = ComputeMultipleInelasticCosseratStress
block = 1
inelastic_models = ''
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./mc]
type = CappedMohrCoulombCosseratStressUpdate
warn_about_precision_loss = false
host_youngs_modulus = 8E3
host_poissons_ratio = 0.25
base_name = mc
tensile_strength = mc_tensile_str_strong_harden
compressive_strength = mc_compressive_str
cohesion = mc_coh_strong_harden
friction_angle = mc_fric
dilation_angle = mc_dil
max_NR_iterations = 100000
smoothing_tol = 0.1 # MPa # Must be linked to cohesion
yield_function_tol = 1E-9 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[../]
[./wp]
type = CappedWeakPlaneCosseratStressUpdate
warn_about_precision_loss = false
base_name = wp
cohesion = wp_coh_harden
tan_friction_angle = wp_tan_fric
tan_dilation_angle = wp_tan_dil
tensile_strength = wp_tensile_str_harden
compressive_strength = wp_compressive_str_soften
max_NR_iterations = 10000
tip_smoother = 0.1
smoothing_tol = 0.1 # MPa # Note, this must be tied to cohesion, otherwise get no possible return at cone apex
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0E-3
[../]
[./density_0]
type = GenericConstantMaterial
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
prop_names = density
prop_values = 2500
[../]
[./density_1]
type = GenericFunctionMaterial
block = 1
prop_names = density
prop_values = density_sideways
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[./min_roof_disp]
type = NodalExtremeValue
boundary = roof
value_type = min
variable = disp_z
[../]
[./min_surface_disp]
type = NodalExtremeValue
boundary = zmax
value_type = min
variable = disp_z
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' bjacobi gmres 200'
line_search = bt
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_max_its = 30
nl_max_its = 1000
start_time = 0.0
dt = 0.5
end_time = 100.0
[]
[Outputs]
time_step_interval = 1
print_linear_residuals = false
exodus = true
csv = true
console = true
[]
(modules/solid_mechanics/test/tests/action/reduced_eigenstrain_action.i)
#
# This test checks whether the ComputeReducedOrderEigenstrain is functioning properly
# when using the automatic_eigenstrain_names within the SolidMechanics QuasiStatic Physics. These
# results should match the results found in the eigenstrain folder for reducedOrderRZLinear.i
#
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
coord_type = RZ
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 1
xmax = 3
xmin = 1
ymax = 1
ymin = 0
#second_order = true
[]
[Problem]
solve = false
[]
[Functions]
[./tempLinear]
type = ParsedFunction
expression = '715-5*x'
[../]
[./tempQuadratic]
type = ParsedFunction
expression = '2.5*x*x-15*x+722.5'
[../]
[./tempCubic]
type = ParsedFunction
expression = '-1.25*x*x*x+11.25*x*x-33.75*x+733.75'
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 700
[../]
[]
[AuxVariables]
[./hydro_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./hydro_first]
order = FIRST
family = MONOMIAL
[../]
[./hydro_second]
order = SECOND
family = MONOMIAL
[../]
[./sxx_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./sxx_first]
order = FIRST
family = MONOMIAL
[../]
[./sxx_second]
order = SECOND
family = MONOMIAL
[../]
[./szz_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./szz_first]
order = FIRST
family = MONOMIAL
[../]
[./szz_second]
order = SECOND
family = MONOMIAL
[../]
[./temp2]
order = FIRST
family = LAGRANGE
initial_condition = 700
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
add_variables = true
strain = SMALL
incremental = true
temperature = temp2
automatic_eigenstrain_names = true
[../]
[]
[Kernels]
[./heat]
type = Diffusion
variable = temp
[../]
[]
[AuxKernels]
[./hydro_constant_aux]
type = RankTwoScalarAux
variable = hydro_constant
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./hydro_first_aux]
type = RankTwoScalarAux
variable = hydro_first
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./hydro_second_aux]
type = RankTwoScalarAux
variable = hydro_second
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./sxx_constant_aux]
type = RankTwoAux
variable = sxx_constant
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./sxx_first_aux]
type = RankTwoAux
variable = sxx_first
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./sxx_second_aux]
type = RankTwoAux
variable = sxx_second
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./szz_constant_aux]
type = RankTwoAux
variable = szz_constant
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./szz_first_aux]
type = RankTwoAux
variable = szz_first
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./szz_second_aux]
type = RankTwoAux
variable = szz_second
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./temp2]
type = FunctionAux
variable = temp2
function = tempLinear
execute_on = timestep_begin
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[../]
[./temp_right]
type = DirichletBC
variable = temp
boundary = right
value = 700
[../]
[./temp_left]
type = DirichletBC
variable = temp
boundary = left
value = 710
[../]
[]
[Materials]
[./fuel_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0
[../]
[./fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1
temperature = temp2
stress_free_temperature = 700.0
eigenstrain_name = 'thermal_eigenstrain'
[../]
[./reduced_order_eigenstrain]
type = ComputeReducedOrderEigenstrain
input_eigenstrain_names = 'thermal_eigenstrain'
eigenstrain_name = 'reduced_eigenstrain'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
num_steps = 1
nl_rel_tol = 1e-8 #1e-12
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[]
[VectorPostprocessors]
[./hydro]
type = LineValueSampler
warn_discontinuous_face_values = false
num_points = 100
start_point = '1 0.07e-3 0'
end_point = '3 0.07e-3 0'
sort_by = x
variable = 'hydro_constant hydro_first hydro_second temp2 disp_x disp_y'
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/multi/three_surface03.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 0.5E-6m in y direction and 2.0E-6 in z direction.
# trial stress_yy = 0.5 and stress_zz = 2.0
#
# Then SimpleTester0 and SimpleTester2 should activate and the algorithm will return to
# the corner stress_yy=0.5, stress_zz=1
# internal0 should be 1.0, and others zero
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.5E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '2.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface03
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/multi/three_surface16.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 3
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 3.0E-6m in y direction and 2.1E-6 in z direction.
# trial stress_yy = 3.0 and stress_zz = 2.1
#
# A complicated return will follow, with various contraints being
# deactivated, kuhn-tucker failing, line-searching, etc, but
# the result should be
# stress_yy=1=stress_zz, and internal0=1.1 internal1=2
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3.0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '2.1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 4
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1'
debug_jac_at_intnl = '1 1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface16
exodus = false
[./csv]
type = CSV
[../]
[]
(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'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[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/verification/patch_tests/plane_1/plane1_template2.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane1_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 200
[]
[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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free.i)
# Test to verify the fundamental natural frequency of a one element ADComputeShellStress
# BCs: Clamped on one end, free on others.
# Initial perturbation applied to edge of the beam. After that, the shell vibrates freely.
#
# Results have been compared for various thicknesses with the following approximate Results
# (Moose results were obtained with 8 elements along the length)
# Thickness = 0.1. Reference freq: 10.785 Hz, Moose freq: 10.612 Hz
# Thickness = 0.05. Reference freq: 5.393 Hz, Moose freq: 5.335 Hz
# Thickness = 0.025. Reference freq: 2.696 Hz, Moose freq: 2.660 Hz
#
# Reference values have been obtained from Robert Blevins, "Formulas for Dynamics, Acoustics and Vibration",
# Table 5.3 case 11. Formula looks like: f = lambda^2/(2*pi*a^2) * sqrt(E*h^2/(12*(1-nu*nu))), where lambda
# changes as a function of shell dimensions.
# This test uses one single element for speed reasons.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1 # 1
ny = 1# 4
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.5
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./rot_x]
[../]
[./rot_y]
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
# aux variables for dynamics
[./vel_x]
[../]
[./vel_y]
[../]
[./vel_z]
[../]
[./accel_x]
[../]
[./accel_y]
[../]
[./accel_z]
[../]
[./rot_vel_x]
[../]
[./rot_vel_y]
[../]
[./rot_accel_x]
[../]
[./rot_accel_y]
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
[../]
# Kernels for dynamics
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 'bottom'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = 'bottom'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = 'bottom'
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 'bottom'
value = 0.0
[../]
[]
[Functions]
[./force_function]
type = PiecewiseLinear
x = '0.0 0.01 0.15 10.0'
y = '0.0 0.01 0.0 0.0'
[../]
[]
[NodalKernels]
[./force_z2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = 'top'
function = force_function
[../]
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[../]
[./inertial_force_x]
type = ADInertialForceShell
# use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 0
variable = disp_x
thickness = 0.1
[../]
[./inertial_force_y]
type = ADInertialForceShell
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 1
variable = disp_y
thickness = 0.1
[../]
[./inertial_force_z]
type = ADInertialForceShell
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 2
variable = disp_z
thickness = 0.1
[../]
[./inertial_force_rot_x]
type = ADInertialForceShell
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 3
variable = rot_x
thickness = 0.1
[../]
[./inertial_force_rot_y]
type = ADInertialForceShell
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 4
variable = rot_y
thickness = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 2100000
poissons_ratio = 0.3
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_z_tip]
type = PointValue
point = '1.0 1.0 0.0'
variable = disp_z
[../]
[./rot_x_tip]
type = PointValue
point = '0.0 1.0 0.0'
variable = rot_x
[../]
[./stress_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yy
[../]
[./stress_yy_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yy
[../]
[./stress_yy_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yy
[../]
[./stress_yy_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yy
[../]
[./stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[../]
[./stress_yz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yz
[../]
[./stress_yz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yz
[../]
[./stress_yz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yz
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-11
nl_max_its = 15
nl_rel_tol = 1e-11
nl_abs_tol = 1e-10
l_max_its = 20
dt = 0.005
dtmin = 0.005
timestep_tolerance = 2e-13
end_time = 0.5
[./TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[../]
[]
[Outputs]
perf_graph = true
csv = true
[]
(modules/solid_mechanics/test/tests/elastic_patch/elastic_patch_quadratic.i)
# Patch Test for second order hex elements (HEX20)
#
# From Abaqus, Verification Manual, 1.5.2
#
# This test is designed to compute constant xx, yy, zz, xy, yz, and zx
# stress on a set of irregular hexes. The mesh is composed of one
# block with seven elements. The elements form a unit cube with one
# internal element. There is a nodeset for each exterior node.
# The cube is displaced on all exterior nodes using the functions,
#
# ux = 1e-4 * (2x + y + z) / 2
# uy = 1e-4 * (x + 2y + z) / 2
# ux = 1e-4 * (x + y + 2z) / 2
#
# giving uniform strains of
#
# exx = eyy = ezz = 2*exy = 2*eyz = 2*exz = 1e-4
#
#
# Hooke's Law provides an analytical solution for the uniform stress state.
# For example,
#
# stress xx = lambda(exx + eyy + ezz) + 2 * G * exx
# stress xy = 2 * G * exy
#
# where:
#
# lambda = (2 * G * nu) / (1 - 2 * nu)
# G = 0.5 * E / (1 + nu)
#
# For the test below, E = 1e6 and nu = 0.25, giving lambda = G = 4e5
#
# Thus
#
# stress xx = 4e5 * (3e-4) + 2 * 4e5 * 1e-4 = 200
# stress xy = 2 * 4e5 * 1e-4 / 2 = 40
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = elastic_patch_quadratic.e
[] # Mesh
[Functions]
[./xDispFunc]
type = ParsedFunction
expression = 5e-5*(2*x+y+z)
[../]
[./yDispFunc]
type = ParsedFunction
expression = 5e-5*(x+2*y+z)
[../]
[./zDispFunc]
type = ParsedFunction
expression = 5e-5*(x+y+2*z)
[../]
[] # 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
[../]
[./elastic_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./hydrostatic]
order = CONSTANT
family = MONOMIAL
[../]
[./firstinv]
order = CONSTANT
family = MONOMIAL
[../]
[./secondinv]
order = CONSTANT
family = MONOMIAL
[../]
[./thirdinv]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Kernels]
[SolidMechanics]
use_displaced_mesh = true
[../]
[]
[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
[../]
[./elastic_energy]
type = ElasticEnergyAux
variable = elastic_energy
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
scalar_type = VonMisesStress
variable = vonmises
[../]
[./hydrostatic]
type = RankTwoScalarAux
rank_two_tensor = stress
scalar_type = Hydrostatic
variable = hydrostatic
[../]
[./fi]
type = RankTwoScalarAux
rank_two_tensor = stress
scalar_type = FirstInvariant
variable = firstinv
[../]
[./si]
type = RankTwoScalarAux
rank_two_tensor = stress
scalar_type = SecondInvariant
variable = secondinv
[../]
[./ti]
type = RankTwoScalarAux
rank_two_tensor = stress
scalar_type = ThirdInvariant
variable = thirdinv
[../]
[] # AuxKernels
[BCs]
[./all_nodes_x]
type = FunctionDirichletBC
variable = disp_x
boundary = '1 2 3 4 6 7 8 9 10 12 15 17 18 19 20 21 23 24 25 26'
function = xDispFunc
[../]
[./all_nodes_y]
type = FunctionDirichletBC
variable = disp_y
boundary = '1 2 3 4 6 7 8 9 10 12 15 17 18 19 20 21 23 24 25 26'
function = yDispFunc
[../]
[./all_nodes_z]
type = FunctionDirichletBC
variable = disp_z
boundary = '1 2 3 4 6 7 8 9 10 12 15 17 18 19 20 21 23 24 25 26'
function = zDispFunc
[../]
[] # BCs
[Materials]
[./elast_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[] # Materials
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 1e-6
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 1
end_time = 1.0
[] # Executioner
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[] # Outputs
(modules/solid_mechanics/test/tests/recompute_radial_return/affine_plasticity.i)
# Affine Plasticity Test for Transient Stress Eigenvalues with Stationary Eigenvectors
# This test is taken from K. Jamojjala, R. Brannon, A. Sadeghirad, J. Guilkey,
# "Verification tests in solid mechanics," Engineering with Computers, Vol 31.,
# p. 193-213.
# The test involves applying particular strains and expecting particular stresses.
# The material properties are:
# Yield in shear 165 MPa
# Shear modulus 79 GPa
# Poisson's ratio 1/3
# The strains are:
# Time e11 e22 e33
# 0 0 0 0
# 1 -0.003 -0.003 0.006
# 2 -0.0103923 0 0.0103923
# The expected stresses are:
# sigma11:
# -474*t 0 < t <= 0.201
# -95.26 0.201 < t <= 1
# (189.4+0.1704*sqrt(a)-0.003242*a)
# --------------------------------- 1 < t <= 2
# 1+0.00001712*a
# -189.4 t > 2 (paper erroneously gives a positive value)
#
# sigma22:
# -474*t 0 < t <= 0.201
# -95.26 0.201 < t <= 1
# -(76.87+1.443*sqrt(a)-0.001316*a)
# --------------------------------- 1 < t <= 2 (paper gives opposite sign)
# 1+0.00001712*a
# 76.87 t > 2
#
# sigma33:
# 948*t 0 < t <= 0.201
# 190.5 0.201 < t <= 1
# -(112.5-1.272*sqrt(a)-0.001926*a)
# --------------------------------- 1 < t <= 2 (paper has two sign errors here)
# 1+0.00001712*a
# 112.5 t > 2
#
# where a = exp(12.33*t).
#
# Note: If planning to run this case with strain type ComputeFiniteStrain, the
# displacement function must be adjusted. Instead of
# strain = (l - l0)/l0 = (u+l0 - l0)/l0 = u/l0
# with l0=1.0, we would have
# strain = log(l/l0) = log((u+l0)/l0)
# with l0=1.0. So, for strain = -0.003,
# -0.003 = log((u+l0)/l0) ->
# u = exp(-0.003)*l0 - l0 = -0.0029955044966269995.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
block = '0'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
# This test uses ElementalVariableValue postprocessors on specific
# elements, so element numbering needs to stay unchanged
allow_renumbering = false
[]
[Functions]
[./disp_x]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. -0.003 -0.0103923'
[../]
[./disp_y]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. -0.003 0.'
[../]
[./disp_z]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 0.006 0.0103923'
[../]
[./stress_xx]
type = ParsedFunction
# The paper gives 0.201 as the time at initial yield, but 0.20097635952803425 is the exact value.
# The paper gives -95.26 MPa as the stress at yield, but -95.26279441628823 is the exact value.
# The paper gives 12.33 as the factor in the exponential, but 12.332921390339125 is the exact value.
# 189.409039923814000, 0.170423791206825, -0.003242011311945, 1.711645501845780E-05 - exact values
symbol_names = 'timeAtYield stressAtYield expFac a b c d'
symbol_values = '0.20097635952803425 -95.26279441628823 12.332921390339125 189.409039923814000 0.170423791206825 -0.003242011311945 1.711645501845780E-05'
value = '1e6*
if(t<=timeAtYield, -474*t,
if(t<=1, stressAtYield,
(a+b*sqrt(exp(expFac*t))+c*exp(expFac*t))/(1.0+d*exp(expFac*t))))' # tends to -a
[../]
[./stress_yy]
type = ParsedFunction
# The paper gives 0.201 as the time at initial yield, but 0.20097635952803425 is the exact value.
# the paper gives -95.26 MPa as the stress at yield, but -95.26279441628823 is the exact value.
# The paper gives 12.33 as the factor in the exponential, but 12.332921390339125 is the exact value.
# -76.867432297315000, -1.442488120272900, 0.001315697947301, 1.711645501845780E-05 - exact values
symbol_names = 'timeAtYield stressAtYield expFac a b c d'
symbol_values = '0.20097635952803425 -95.26279441628823 12.332921390339125 -76.867432297315000 -1.442488120272900 0.001315697947301 1.711645501845780E-05'
value = '1e6*
if(t<=timeAtYield, -474*t,
if(t<=1, stressAtYield,
(a+b*sqrt(exp(expFac*t))+c*exp(expFac*t))/(1.0+d*exp(expFac*t))))' # tends to -a
[../]
[./stress_zz]
type = ParsedFunction
# The paper gives 0.201 as the time at initial yield, but 0.20097635952803425 is the exact value.
# the paper gives 190.5 MPa as the stress at yield, but 190.52558883257645 is the exact value.
# The paper gives 12.33 as the factor in the exponential, but 12.332921390339125 is the exact value.
# -112.541607626499000, 1.272064329066080, 0.001926313364644, 1.711645501845780E-05 - exact values
symbol_names = 'timeAtYield stressAtYield expFac a b c d'
symbol_values = '0.20097635952803425 190.52558883257645 12.332921390339125 -112.541607626499000 1.272064329066080 0.001926313364644 1.711645501845780E-05'
value = '1e6*
if(t<=timeAtYield, 948*t,
if(t<=1, stressAtYield,
(a+b*sqrt(exp(expFac*t))+c*exp(expFac*t))/(1.0+d*exp(expFac*t))))' # tends to -a
[../]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[]
[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_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = vonmisesStress
execute_on = 'timestep_end'
[../]
[./plastic_strain_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./plastic_strain_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./plastic_strain_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[]
[BCs]
[./fixed_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixed_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./fixed_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./disp_x]
type = FunctionDirichletBC
variable = disp_x
boundary = right
function = disp_x
[../]
[./disp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = disp_y
[../]
[./disp_z]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = disp_z
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 210666666666.666667
poissons_ratio = 0.3333333333333333
[../]
[./strain]
type = ComputeIncrementalStrain
[../]
[./isotropic_plasticity]
type = IsotropicPlasticityStressUpdate
yield_stress = 285788383.2488647 # = sqrt(3)*165e6 = sqrt(3) * yield in shear
hardening_constant = 0.0
[../]
[./radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'isotropic_plasticity'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 0.01 # use 0.0001 for a nearly exact match
end_time = 2.0
[]
[Postprocessors]
[./analytic_xx]
type = FunctionValuePostprocessor
function = stress_xx
[../]
[./analytic_yy]
type = FunctionValuePostprocessor
function = stress_yy
[../]
[./analytic_zz]
type = FunctionValuePostprocessor
function = stress_zz
[../]
[./stress_xx]
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[../]
[./stress_yy]
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[../]
[./stress_zz]
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[../]
[./stress_xx_l2_error]
type = ElementL2Error
variable = stress_xx
function = stress_xx
[../]
[./stress_yy_l2_error]
type = ElementL2Error
variable = stress_yy
function = stress_yy
[../]
[./stress_zz_l2_error]
type = ElementL2Error
variable = stress_zz
function = stress_zz
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/plane_stress/ad_weak_plane_stress_small.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./nl_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = ADMaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./min_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = min
[../]
[./max_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = max
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./plane_stress]
planar_formulation = WEAK_PLANE_STRESS
strain = SMALL
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy'
eigenstrain_names = eigenstrain
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./strain_zz]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = nl_strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 1 100'
y='0 0.00 0.00'
[../]
[./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]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ADComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
file_base = 'weak_plane_stress_small_out'
exodus = true
[]
(modules/solid_mechanics/test/tests/anisotropic_plasticity/ad_aniso_plasticity_y.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
# Original verification nx = 2, ny = 10, nz = 2
nx = 2
ny = 10
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 1.0
ymax = 10.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '4 10'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '1 67'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[elastic_strain_yy]
type = ADRankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
[]
[sigma_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1e1 1e8'
y = '0 -4e2 -4e2'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 70000
poissons_ratio = 0.25
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_plasticity"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5829856 0.364424 0.6342174 2.0691375 2.3492325 1.814589"
base_name = trial_plasticity
[]
[trial_plasticity]
type = ADHillPlasticityStressUpdate
hardening_constant = 2000.0
yield_stress = 0.001
absolute_tolerance = 1e-14
relative_tolerance = 1e-12
base_name = trial_plasticity
internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-6
internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = 101
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 100
value = 0.0
[]
[Pressure]
[Side1]
boundary = top
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 25
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 1e-5
time_t = '0 3.2e-5 10'
time_dt = '1e-5 1.0e-7 1.0e-7'
[]
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[plasticity_strain_yy]
type = ElementalVariableValue
variable = plastic_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_yy]
type = ElementalVariableValue
variable = elastic_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_yy]
type = ElementalVariableValue
variable = stress_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/small_deform_cosserat4.i)
# Plastic deformation. Layered Cosserat with parameters:
# Young = 10.0
# Poisson = 0.25
# layer_thickness = 10
# joint_normal_stiffness = 2.5
# joint_shear_stiffness = 2.0
# These give the following nonzero components of the elasticity tensor:
# E_0000 = E_1111 = 1.156756756757E+01
# E_0011 = E_1100 = 3.855855855856E+00
# E_2222 = E_pp = 8.108108108108E+00
# E_0022 = E_1122 = E_2200 = E_2211 = 2.702702702703E+00
# G = E_0101 = E_0110 = E_1001 = E_1010 = 4
# Gt = E_qq = E_0202 = E_0220 = E_2002 = E_1212 = E_1221 = E_2112 = 3.333333333333E+00
# E_2020 = E_2121 = 3.666666666667E+00
# They give the following nonzero components of the bending rigidity tensor:
# D = 8.888888888889E+02
# B_0101 = B_1010 = 8.080808080808E+00
# B_0110 = B_1001 = -2.020202020202E+00
#
# Applying the following deformation to the zmax surface of a unit cube:
# disp_x = 32*t/Gt
# disp_y = 24*t/Gt
# disp_z = 10*t/E_2222
# but leaving wc_x and wc_y unfixed
# yields the following strains:
# strain_xz = 32*t/Gt - wc_y = 9.6*t - wc_y
# strain_zx = wc_y
# strain_yz = 24*t/Gt + wc_x = 7.2*t + wc_x
# strain_zy = - wc_x
# strain_zz = 10*t/E_2222 = 1.23333333*t
# and all other components, and the curvature, are zero (assuming
# wc is uniform over the cube).
#
# When wc=0, the nonzero components of stress are therefore:
# stress_xx = stress_yy = 3.33333*t
# stress_xz = stress_zx = 32*t
# stress_yz = stress_zy = 24*t
# stress_zz = 10*t
# The moment stress is zero.
# So q = 40*t and p = 10*t
#
# Use tan(friction_angle) = 0.5 and tan(dilation_angle) = E_qq/Epp/2, and cohesion=20,
# the system should return to p=0, q=20, ie stress_zz=0, stress_xz=16,
# stress_yz=12 on the first time step (t=1)
# and
# stress_xx = stress_yy = 0
# and
# stress_zx = 32, and stress_zy = 24.
# This has resulted in a non-symmetric stress tensor, and there is
# zero moment stress, so the system is not in equilibrium. A
# nonzero wc must therefore be generated.
#
# The obvious choice of wc is such that stress_zx = 16 and
# stress_zy = 12, because then the final returned stress will
# be symmetric. This gives
# wc_y = - 48
# wc_x = 36
# At t=1, the nonzero components of stress are
# stress_xx = stress_yy = 3.33333
# stress_xz = 32, stress_zx = 16
# stress_yz = 24, stress_zy = 12
# stress_zz = 10*t
# The moment stress is zero.
#
# The returned stress is
# stress_xx = stress_yy = 0
# stress_xz = stress_zx = 16
# stress_yz = stress_zy = 12
# stress_zz = 0
# The total strains are given above.
# Since q returned from 40 to 20, plastic_strain_xz = 9.6/2 = 4.8
# and plastic_strain_yz = 7.2/2 = 3.6.
# Since p returned to zero, all of the total strain_zz is
# plastic, ie plastic_strain_zz = 1.23333
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
variable = disp_x
boundary = back
value = 0.0
[../]
[./bottomy]
type = DirichletBC
variable = disp_y
boundary = back
value = 0.0
[../]
[./bottomz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
variable = disp_x
boundary = front
function = 32*t/3.333333333333E+00
[../]
[./topy]
type = FunctionDirichletBC
variable = disp_y
boundary = front
function = 24*t/3.333333333333E+00
[../]
[./topz]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = 10*t/8.108108108108E+00
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yx
index_i = 1
index_j = 0
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zx
index_i = 2
index_j = 0
[../]
[./strainp_zy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zy
index_i = 2
index_j = 1
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yx
index_i = 1
index_j = 0
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zx
index_i = 2
index_j = 0
[../]
[./straint_zy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zy
index_i = 2
index_j = 1
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[Postprocessors]
[./wc_x]
type = PointValue
point = '0 0 0'
variable = wc_x
[../]
[./wc_y]
type = PointValue
point = '0 0 0'
variable = wc_y
[../]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yx]
type = PointValue
point = '0 0 0'
variable = stress_yx
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zx]
type = PointValue
point = '0 0 0'
variable = stress_zx
[../]
[./s_zy]
type = PointValue
point = '0 0 0'
variable = stress_zy
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./c_s_xx]
type = PointValue
point = '0 0 0'
variable = couple_stress_xx
[../]
[./c_s_xy]
type = PointValue
point = '0 0 0'
variable = couple_stress_xy
[../]
[./c_s_xz]
type = PointValue
point = '0 0 0'
variable = couple_stress_xz
[../]
[./c_s_yx]
type = PointValue
point = '0 0 0'
variable = couple_stress_yx
[../]
[./c_s_yy]
type = PointValue
point = '0 0 0'
variable = couple_stress_yy
[../]
[./c_s_yz]
type = PointValue
point = '0 0 0'
variable = couple_stress_yz
[../]
[./c_s_zx]
type = PointValue
point = '0 0 0'
variable = couple_stress_zx
[../]
[./c_s_zy]
type = PointValue
point = '0 0 0'
variable = couple_stress_zy
[../]
[./c_s_zz]
type = PointValue
point = '0 0 0'
variable = couple_stress_zz
[../]
[./strainp_xx]
type = PointValue
point = '0 0 0'
variable = strainp_xx
[../]
[./strainp_xy]
type = PointValue
point = '0 0 0'
variable = strainp_xy
[../]
[./strainp_xz]
type = PointValue
point = '0 0 0'
variable = strainp_xz
[../]
[./strainp_yx]
type = PointValue
point = '0 0 0'
variable = strainp_yx
[../]
[./strainp_yy]
type = PointValue
point = '0 0 0'
variable = strainp_yy
[../]
[./strainp_yz]
type = PointValue
point = '0 0 0'
variable = strainp_yz
[../]
[./strainp_zx]
type = PointValue
point = '0 0 0'
variable = strainp_zx
[../]
[./strainp_zy]
type = PointValue
point = '0 0 0'
variable = strainp_zy
[../]
[./strainp_zz]
type = PointValue
point = '0 0 0'
variable = strainp_zz
[../]
[./straint_xx]
type = PointValue
point = '0 0 0'
variable = straint_xx
[../]
[./straint_xy]
type = PointValue
point = '0 0 0'
variable = straint_xy
[../]
[./straint_xz]
type = PointValue
point = '0 0 0'
variable = straint_xz
[../]
[./straint_yx]
type = PointValue
point = '0 0 0'
variable = straint_yx
[../]
[./straint_yy]
type = PointValue
point = '0 0 0'
variable = straint_yy
[../]
[./straint_yz]
type = PointValue
point = '0 0 0'
variable = straint_yz
[../]
[./straint_zx]
type = PointValue
point = '0 0 0'
variable = straint_zx
[../]
[./straint_zy]
type = PointValue
point = '0 0 0'
variable = straint_zy
[../]
[./straint_zz]
type = PointValue
point = '0 0 0'
variable = straint_zz
[../]
[./f_shear]
type = PointValue
point = '0 0 0'
variable = f_shear
[../]
[./f_tensile]
type = PointValue
point = '0 0 0'
variable = f_tensile
[../]
[./f_compressive]
type = PointValue
point = '0 0 0'
variable = f_compressive
[../]
[./intnl_shear]
type = PointValue
point = '0 0 0'
variable = intnl_shear
[../]
[./intnl_tensile]
type = PointValue
point = '0 0 0'
variable = intnl_tensile
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[./ls]
type = PointValue
point = '0 0 0'
variable = ls
[../]
[]
[UserObjects]
[./coh]
type = SolidMechanicsHardeningConstant
value = 20
[../]
[./tanphi]
type = SolidMechanicsHardeningConstant
value = 0.5
[../]
[./tanpsi]
type = SolidMechanicsHardeningConstant
value = 2.055555555556E-01
[../]
[./t_strength]
type = SolidMechanicsHardeningConstant
value = 100
[../]
[./c_strength]
type = SolidMechanicsHardeningConstant
value = 100
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 10.0
poisson = 0.25
layer_thickness = 10.0
joint_normal_stiffness = 2.5
joint_shear_stiffness = 2.0
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
[../]
[./admissible]
type = ComputeMultipleInelasticCosseratStress
inelastic_models = stress
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakPlaneCosseratStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 0
smoothing_tol = 0
yield_function_tol = 1E-5
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
solve_type = 'NEWTON'
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform_cosserat4
csv = true
[]
(modules/xfem/test/tests/moving_interface/moving_ad_bimaterial.i)
# This test is for two layer materials with different youngs modulus with AD
# The global stress is determined by switching the stress based on level set values
# The material interface is marked by a level set function
# The two layer materials are glued together
# This case is also meant to test for a bug in moving interfaces on displaced meshes
# It should fail during the healing step of the 2nd timestep if the bug is present.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./level_set_cut_uo]
type = LevelSetCutUserObject
level_set_var = ls
heal_always = true
[../]
[]
[Mesh]
displacements = 'disp_x disp_y'
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 5
xmin = 0.0
xmax = 5.
ymin = 0.0
ymax = 5.
elem_type = QUAD4
[]
[./left_bottom]
type = ExtraNodesetGenerator
new_boundary = 'left_bottom'
coord = '0.0 0.0'
input = generated_mesh
[../]
[./left_top]
type = ExtraNodesetGenerator
new_boundary = 'left_top'
coord = '0.0 5.'
input = left_bottom
[../]
[]
[AuxVariables]
[./ls]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./ls_function]
type = FunctionAux
variable = ls
function = ls_func
[../]
[]
[Functions]
[./ls_func]
type = ParsedFunction
expression = 'y-3.153 + t'
[../]
[]
[AuxVariables]
[./a_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
use_automatic_differentiation = true
add_variables = true
generate_output = 'stress_xx stress_yy stress_xy'
[../]
[]
[AuxKernels]
[./a_strain_xx]
type = ADRankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 0
variable = a_strain_xx
[../]
[./a_strain_yy]
type = ADRankTwoAux
rank_two_tensor = A_total_strain
index_i = 1
index_j = 1
variable = a_strain_yy
[../]
[./a_strain_xy]
type = ADRankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 1
variable = a_strain_xy
[../]
[./b_strain_xx]
type = ADRankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 0
variable = b_strain_xx
[../]
[./b_strain_yy]
type = ADRankTwoAux
rank_two_tensor = B_total_strain
index_i = 1
index_j = 1
variable = b_strain_yy
[../]
[./b_strain_xy]
type = ADRankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 1
variable = b_strain_xy
[../]
[]
[Constraints]
[./dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[./dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[]
[BCs]
[./bottomx]
type = ADDirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = ADDirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = ADFunctionDirichletBC
boundary = top
variable = disp_x
function = 0.03*t
[../]
[./topy]
type = ADFunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[../]
[]
[Materials]
[./elasticity_tensor_A]
type = ADComputeIsotropicElasticityTensor
base_name = A
youngs_modulus = 1e9
poissons_ratio = 0.3
[../]
[./strain_A]
type = ADComputeSmallStrain
base_name = A
displacements = 'disp_x disp_y'
[../]
[./stress_A]
type = ADComputeLinearElasticStress
base_name = A
[../]
[./elasticity_tensor_B]
type = ADComputeIsotropicElasticityTensor
base_name = B
youngs_modulus = 1e7
poissons_ratio = 0.3
[../]
[./strain_B]
type = ADComputeSmallStrain
base_name = B
displacements = 'disp_x disp_y'
[../]
[./stress_B]
type = ADComputeLinearElasticStress
base_name = B
[../]
[./combined_stress]
type = ADLevelSetBiMaterialRankTwo
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = stress
[../]
[./combined_elasticity_tensor]
type = ADLevelSetBiMaterialRankFour
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = elasticity_tensor
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'bt'
# controls for linear iterations
l_max_its = 20
l_tol = 1e-8
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-50
# time control
start_time = 0.0
dt = 0.15
num_steps = 3
max_xfem_update = 1
[]
[Outputs]
exodus = true
execute_on = timestep_end
file_base = moving_bimaterial_out
perf_graph = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/solid_mechanics/test/tests/mean_cap_TC/small_deform4.i)
# apply nonuniform compression in x, y and z directions such that
# trial_stress(0, 0) = 2
# trial_stress(1, 1) = -8
# trial_stress(2, 2) = -10
# With compressive_strength = -1, the algorithm should return to trace(stress) = -1, or
# stress(0, 0) = 7
# stress(1, 1) = -3
# stress(2, 2) = -5
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '-4E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = SolidMechanicsHardeningConstant
value = 2
[../]
[./compressive_strength]
type = SolidMechanicsHardeningConstant
value = -1
[../]
[./cap]
type = SolidMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = true
use_custom_cto = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform4
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_2.i)
# SubApp with 2D model to test multi app vectorpostprocessor to aux var transfer
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 5
xmin = 0.0
xmax = 0.5
ymin = 0.0
ymax = 0.150080
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temp]
[../]
[./axial_strain]
order = FIRST
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(500.0)+300.0
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./axial_strain]
type = RankTwoAux
variable = axial_strain
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./axial_str]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0.0 0.0'
end_point = '0.5 0.150080 0.0'
variable = 'axial_strain temp'
num_points = 21
sort_by = 'y'
[../]
[]
[Postprocessors]
[./end_disp]
type = PointValue
variable = disp_y
point = '0.5 0.150080 0.0'
[../]
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/pull_push.i)
# A column of elements has its bottom pulled down, and then pushed up again.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 2
xmin = -10
xmax = 10
ymin = -10
ymax = 10
zmin = -100
zmax = 0
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[]
[BCs]
[./no_x2]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.0
[../]
[./no_x1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_y1]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./no_y2]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[../]
[./topz]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[../]
[./bottomz]
type = FunctionDirichletBC
variable = disp_z
boundary = back
function = 'if(t>1,-2.0+t,-t)'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[UserObjects]
[./coh_irrelevant]
type = SolidMechanicsHardeningCubic
value_0 = 2E6
value_residual = 1E6
internal_limit = 0.01
[../]
[./tanphi]
type = SolidMechanicsHardeningCubic
value_0 = 0.5
value_residual = 0.2
internal_limit = 0.01
[../]
[./tanpsi]
type = SolidMechanicsHardeningConstant
value = 0.166666666667
[../]
[./t_strength]
type = SolidMechanicsHardeningConstant
value = 2E6
[../]
[./c_strength]
type = SolidMechanicsHardeningCubic
value_0 = 1E8
value_residual = 0.0
internal_limit = 0.01
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
lambda = 6.4e9
shear_modulus = 6.4e9 # young 16MPa, Poisson 0.25
[../]
[./strain]
type = ComputeIncrementalStrain
[../]
[./admissible]
type = ComputeMultipleInelasticStress
inelastic_models = stress
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakPlaneStressUpdate
cohesion = coh_irrelevant
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
max_NR_iterations = 10
tip_smoother = 0
smoothing_tol = 0
yield_function_tol = 1E-2
perfect_guess = false
min_step_size = 1
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[../]
[]
[Executioner]
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
line_search = bt
nl_abs_tol = 1E1
nl_rel_tol = 1e-5
l_tol = 1E-10
l_max_its = 100
nl_max_its = 100
end_time = 3.0
dt = 0.1
type = Transient
[]
[Outputs]
file_base = pull_push
exodus = true
csv = true
[]
(modules/combined/examples/periodic_strain/global_strain_pfm_3D.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 20
ny = 20
nz = 20
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[./cnode]
input = gen
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 100
[../]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./u_z]
[../]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'sin(2*x*pi)*sin(2*y*pi)*sin(2*z*pi)*0.05+0.6'
[../]
[../]
[./w]
[../]
[]
[AuxVariables]
[./local_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./s00]
order = CONSTANT
family = MONOMIAL
[../]
[./s01]
order = CONSTANT
family = MONOMIAL
[../]
[./s10]
order = CONSTANT
family = MONOMIAL
[../]
[./s11]
order = CONSTANT
family = MONOMIAL
[../]
[./e00]
order = CONSTANT
family = MONOMIAL
[../]
[./e01]
order = CONSTANT
family = MONOMIAL
[../]
[./e10]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 0
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_z]
type = GlobalDisplacementAux
variable = disp_z
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 2
[../]
[./local_free_energy]
type = TotalFreeEnergy
execute_on = 'initial LINEAR'
variable = local_energy
interfacial_vars = 'c'
kappa_names = 'kappa_c'
[../]
[./s00]
type = RankTwoAux
variable = s00
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./s01]
type = RankTwoAux
variable = s01
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./s10]
type = RankTwoAux
variable = s10
rank_two_tensor = stress
index_i = 1
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./e00]
type = RankTwoAux
variable = e00
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[../]
[./e01]
type = RankTwoAux
variable = e01
rank_two_tensor = total_strain
index_i = 0
index_j = 1
[../]
[./e10]
type = RankTwoAux
variable = e10
rank_two_tensor = total_strain
index_i = 1
index_j = 0
[../]
[./e11]
type = RankTwoAux
variable = e11
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[../]
[]
[GlobalParams]
derivative_order = 2
enable_jit = true
displacements = 'u_x u_y u_z'
block = 0
[]
[Kernels]
[./TensorMechanics]
[../]
# Cahn-Hilliard kernels
[./c_dot]
type = CoupledTimeDerivative
variable = w
v = c
block = 0
[../]
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
kappa_name = kappa_c
w = w
block = 0
[../]
[./w_res]
type = SplitCHWRes
variable = w
mob_name = M
block = 0
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[BCs]
[./Periodic]
[./all]
auto_direction = 'x y z'
variable = 'c w u_x u_y u_z'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = u_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
[]
[Materials]
[./consts]
type = GenericConstantMaterial
prop_names = 'M kappa_c'
prop_values = '0.2 0.01 '
[../]
[./shear1]
type = GenericConstantRankTwoTensor
tensor_values = '0 0 0 0.5 0.5 0.5'
tensor_name = shear1
[../]
[./shear2]
type = GenericConstantRankTwoTensor
tensor_values = '0 0 0 -0.5 -0.5 -0.5'
tensor_name = shear2
[../]
[./expand3]
type = GenericConstantRankTwoTensor
tensor_values = '1 1 1 0 0 0'
tensor_name = expand3
[../]
[./weight1]
type = DerivativeParsedMaterial
expression = '0.3*c^2'
property_name = weight1
coupled_variables = c
[../]
[./weight2]
type = DerivativeParsedMaterial
expression = '0.3*(1-c)^2'
property_name = weight2
coupled_variables = c
[../]
[./weight3]
type = DerivativeParsedMaterial
expression = '4*(0.5-c)^2'
property_name = weight3
coupled_variables = c
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
eigenstrain_names = eigenstrain
[../]
[./eigenstrain]
type = CompositeEigenstrain
tensors = 'shear1 shear2 expand3'
weights = 'weight1 weight2 weight3'
args = c
eigenstrain_name = eigenstrain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
# chemical free energies
[./chemical_free_energy]
type = DerivativeParsedMaterial
property_name = Fc
expression = '4*c^2*(1-c)^2'
coupled_variables = 'c'
outputs = exodus
output_properties = Fc
[../]
# elastic free energies
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
args = 'c'
outputs = exodus
output_properties = Fe
[../]
# free energy (chemical + elastic)
[./free_energy]
type = DerivativeSumMaterial
block = 0
property_name = F
sum_materials = 'Fc Fe'
coupled_variables = 'c'
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalStrainUserObject
execute_on = 'Initial Linear Nonlinear'
[../]
[]
[Postprocessors]
[./total_free_energy]
type = ElementIntegralVariablePostprocessor
execute_on = 'initial TIMESTEP_END'
variable = local_energy
[../]
[./total_solute]
type = ElementIntegralVariablePostprocessor
execute_on = 'initial TIMESTEP_END'
variable = c
[../]
[./min]
type = ElementExtremeValue
execute_on = 'initial TIMESTEP_END'
value_type = min
variable = c
[../]
[./max]
type = ElementExtremeValue
execute_on = 'initial TIMESTEP_END'
value_type = max
variable = c
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
line_search = basic
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
l_max_its = 30
nl_max_its = 12
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 1.0e-10
start_time = 0.0
end_time = 2.0
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.01
growth_factor = 1.5
cutback_factor = 0.8
optimal_iterations = 9
iteration_window = 2
[../]
[]
[Outputs]
execute_on = 'timestep_end'
print_linear_residuals = false
exodus = true
[./table]
type = CSV
delimiter = ' '
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/orthotropic_rotation_Cijkl.i)
# This test is designed to test the correct application of the Euler angle
# rotations to the elasticity tensor. The test uses values for the nine C_ijkl
# entries that correspond to the engineering notation placement:
# e.g. C11 = 11e3, c12 = 12e3, c13 = 13e3, c22 = 22e3 ..... c66 = 66e3
#
# A rotation of (0, 90, 0) is applied to the 1x1x1 cube, such that the values of
# c12 and c13 switch, c22 and c33 switch, and c55 and c66 switch. Postprocessors
# are used to verify this switch (made simple with the value convention above)
# and to verify that the unrotated components along the x-axis remain constant.
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./lage_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./lage_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./pk2_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./lage_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./c11]
order = CONSTANT
family = MONOMIAL
[../]
[./c12]
order = CONSTANT
family = MONOMIAL
[../]
[./c13]
order = CONSTANT
family = MONOMIAL
[../]
[./c22]
order = CONSTANT
family = MONOMIAL
[../]
[./c23]
order = CONSTANT
family = MONOMIAL
[../]
[./c33]
order = CONSTANT
family = MONOMIAL
[../]
[./c44]
order = CONSTANT
family = MONOMIAL
[../]
[./c55]
order = CONSTANT
family = MONOMIAL
[../]
[./c66]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
[../]
[]
[AuxKernels]
[./lage_xx]
type = RankTwoAux
rank_two_tensor = lage
variable = lage_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./lage_yy]
type = RankTwoAux
rank_two_tensor = lage
variable = lage_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./pk2_yy]
type = RankTwoAux
variable = pk2_yy
rank_two_tensor = pk2
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./lage_zz]
type = RankTwoAux
rank_two_tensor = lage
variable = lage_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = fp
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./c11]
type = RankFourAux
variable = c11
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 0
execute_on = timestep_end
[../]
[./c12]
type = RankFourAux
variable = c12
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 1
index_l = 1
execute_on = timestep_end
[../]
[./c13]
type = RankFourAux
variable = c13
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 2
index_l = 2
execute_on = timestep_end
[../]
[./c22]
type = RankFourAux
variable = c22
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 1
index_l = 1
execute_on = timestep_end
[../]
[./c23]
type = RankFourAux
variable = c23
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 2
index_l = 2
execute_on = timestep_end
[../]
[./c33]
type = RankFourAux
variable = c33
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 2
index_l = 2
execute_on = timestep_end
[../]
[./c44]
type = RankFourAux
variable = c44
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 2
index_k = 1
index_l = 2
execute_on = timestep_end
[../]
[./c55]
type = RankFourAux
variable = c55
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 0
index_k = 2
index_l = 0
execute_on = timestep_end
[../]
[./c66]
type = RankFourAux
variable = c66
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 1
index_k = 0
index_l = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCrystalPlasticity
block = 0
gtol = 1e-2
slip_sys_file_name = input_slip_sys.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
hprops = '1.0 541.5 60.8 109.8 2.5'
gprops = '1 4 60.8e3 5 8 60.8e3 9 12 60.8e3'
tan_mod_type = exact
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '11e3 12e3 13e3 22e3 23e3 33e3 44e3 55e3 66e3'
fill_method = symmetric9
euler_angle_1 = 0.0
euler_angle_2 = 90.0
euler_angle_3 = 0.0
[../]
[]
[Postprocessors]
[./lage_xx]
type = ElementAverageValue
variable = lage_xx
[../]
[./pk2_yy]
type = ElementAverageValue
variable = pk2_yy
[../]
[./lage_yy]
type = ElementAverageValue
variable = lage_yy
[../]
[./lage_zz]
type = ElementAverageValue
variable = lage_zz
[../]
[./fp_yy]
type = ElementAverageValue
variable = fp_yy
[../]
[./c11]
type = ElementAverageValue
variable = c11
[../]
[./c12]
type = ElementAverageValue
variable = c12
[../]
[./c13]
type = ElementAverageValue
variable = c13
[../]
[./c22]
type = ElementAverageValue
variable = c22
[../]
[./c23]
type = ElementAverageValue
variable = c23
[../]
[./c33]
type = ElementAverageValue
variable = c33
[../]
[./c44]
type = ElementAverageValue
variable = c44
[../]
[./c55]
type = ElementAverageValue
variable = c55
[../]
[./c66]
type = ElementAverageValue
variable = c66
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-3
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 1 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
dtmax = 0.1
dtmin = 1.0e-3
dt = 0.05
end_time = 0.5
[]
[Outputs]
exodus = false
csv = true
[]
(modules/combined/test/tests/multiphase_mechanics/twophasestress.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 20
ny = 20
xmin = 0
xmax = 2
ymin = 0
ymax = 2
elem_type = QUAD4
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./eta]
[./InitialCondition]
type = FunctionIC
function = 'x/2'
[../]
[../]
[./e11_aux]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./matl_e11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = e11_aux
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[Materials]
[./elasticity_tensor_A]
type = ComputeElasticityTensor
base_name = A
fill_method = symmetric9
C_ijkl = '1e6 1e5 1e5 1e6 0 1e6 .4e6 .2e6 .5e6'
[../]
[./strain_A]
type = ComputeSmallStrain
base_name = A
eigenstrain_names = eigenstrain
[../]
[./stress_A]
type = ComputeLinearElasticStress
base_name = A
[../]
[./eigenstrain_A]
type = ComputeEigenstrain
base_name = A
eigen_base = '0.1 0.05 0 0 0 0.01'
prefactor = -1
eigenstrain_name = eigenstrain
[../]
[./elasticity_tensor_B]
type = ComputeElasticityTensor
base_name = B
fill_method = symmetric9
C_ijkl = '1e6 0 0 1e6 0 1e6 .5e6 .5e6 .5e6'
[../]
[./strain_B]
type = ComputeSmallStrain
base_name = B
eigenstrain_names = 'B_eigenstrain'
[../]
[./stress_B]
type = ComputeLinearElasticStress
base_name = B
[../]
[./eigenstrain_B]
type = ComputeEigenstrain
base_name = B
eigen_base = '0.1 0.05 0 0 0 0.01'
prefactor = -1
eigenstrain_name = 'B_eigenstrain'
[../]
[./switching]
type = SwitchingFunctionMaterial
eta = eta
[../]
[./combined]
type = TwoPhaseStressMaterial
base_A = A
base_B = B
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[]
(modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/hoop_strain_comparison.i)
# This test compares the hoop strain at two different elements in an internally
# pressurized cylinder with anisotropic plasticity: different yield condition
# for hoop and axial directions. The elements are located circumferentially
# apart but at same axial position. It is expected that due to pressurization
# hoop strains will develop with uniform magnitude along hoop direction. The
# test verifies that the plastic hoop strain is uniform in hoop direction.
# For 3D simulations with material properties oriented along the curved
# geometry such as cylinder or sphere, the stresses and strains are rotated to
# the local coordinate system from the global coordinate system. The plastic
# strain is calculated in the local coordinate system and then transformed to
# the global coordinate system. This test involves a 3D cylindrical geometry,
# and helps in indirectly verifying that this transformation of stresses and
# strains back and forth between the local and global coordinate system is
# correctly implemented.
[Mesh]
file = quarter_cylinder.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[plasticity_strain_zz]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_zz
index_i = 2
index_j = 2
[]
[stress_zz]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[stress_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[push]
type = PiecewiseLinear
x = '0 1e2'
y = '0 200e6'
[]
[swelling_func]
type = ParsedFunction
expression = 0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_zz elastic_strain_xx elastic_strain_yy stress_xx stress_yy stress_zz strain_zz plastic_strain_zz plastic_strain_xx plastic_strain_yy hoop_stress hoop_strain'
use_automatic_differentiation = true
add_variables = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
secondary = top # boundary
penalty = 1.0e+10
[]
[]
[Materials]
[swelling]
type = ADGenericFunctionMaterial
prop_values = swelling_func
prop_names = swelling
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 200.0e9
poissons_ratio = 0.2
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "plasticity"
max_iterations = 50
absolute_tolerance = 1e-30 #1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
# hill_constants = "0.5 0.5 0.5 1.5 1.5 1.5"
hill_constants = "0.5 0.25 0.5 1.5 1.5 1.5"
[]
[plasticity]
type = ADHillElastoPlasticityStressUpdate
hardening_constant = 1.5e10
hardening_exponent = 1.0
yield_stress = 0.0 # 60e6
local_cylindrical_csys = true
# local_spherical_csys = false
axis = y
absolute_tolerance = 1e-15 # 1e-8
relative_tolerance = 1e-13 # 1e-15
internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-6
internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = x_face
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = z_face
value = 0.0
[]
[Pressure]
[Side1]
boundary = inner
function = push
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-12
nl_abs_tol = 1e-14
# nl_abs_tol = 1e-10
l_max_its = 90
nl_max_its = 30
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 0.1e-4
time_t = '0 6.23 10'
time_dt = '0.1 1.0e-2 1.0e-2'
[]
num_steps = 3
start_time = 0
end_time = 200.0
automatic_scaling = true
dtmax = 0.1e-4
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[hoop_strain_elementA]
type = ElementalVariableValue
elementid = 464
variable = hoop_strain
[]
[hoop_strain_elementB]
type = ElementalVariableValue
elementid = 478
variable = hoop_strain
[]
[hoop_strain_diff]
type = DifferencePostprocessor
value1 = hoop_strain_elementA
value2 = hoop_strain_elementB
[]
[]
[Outputs]
csv = true
exodus = false
perf_graph = true
[]
(modules/combined/test/tests/DiffuseCreep/stress.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./creep_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_i = 0
index_j = 0
[../]
[./creep_strain_yy]
type = RankTwoAux
variable = creep_strain_yy
rank_two_tensor = creep_strain
index_i = 1
index_j = 1
[../]
[./creep_strain_xy]
type = RankTwoAux
variable = creep_strain_xy
rank_two_tensor = creep_strain
index_i = 0
index_j = 1
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
args = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./diffuse_strain_increment]
type = FluxBasedStrainIncrement
xflux = jx
yflux = jy
gb = gb
property_name = diffuse
[../]
[./diffuse_creep_strain]
type = SumTensorIncrements
tensor_name = creep_strain
coupled_tensor_increment_names = diffuse
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
inelastic_strain_names = creep_strain
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/only_twinning_fcc.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_6]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_7]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_8]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_9]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_11]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_10]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = total_volume_fraction_twins
execute_on = timestep_end
[]
[twin_resistance_4]
type = MaterialStdVectorAux
variable = twin_resistance_4
property = slip_resistance
index = 4
execute_on = timestep_end
[]
[twin_resistance_10]
type = MaterialStdVectorAux
variable = twin_resistance_10
property = slip_resistance
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_volume_fraction_6]
type = MaterialStdVectorAux
variable = twin_volume_fraction_6
property = twin_system_volume_fraction
index = 6
execute_on = timestep_end
[]
[twin_volume_fraction_7]
type = MaterialStdVectorAux
variable = twin_volume_fraction_7
property = twin_system_volume_fraction
index = 7
execute_on = timestep_end
[]
[twin_volume_fraction_8]
type = MaterialStdVectorAux
variable = twin_volume_fraction_8
property = twin_system_volume_fraction
index = 8
execute_on = timestep_end
[]
[twin_volume_fraction_9]
type = MaterialStdVectorAux
variable = twin_volume_fraction_9
property = twin_system_volume_fraction
index = 9
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_11]
type = MaterialStdVectorAux
variable = twin_volume_fraction_11
property = twin_system_volume_fraction
index = 11
execute_on = timestep_end
[]
[twin_tau_4]
type = MaterialStdVectorAux
variable = twin_tau_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[twin_tau_10]
type = MaterialStdVectorAux
variable = twin_tau_10
property = applied_shear_stress
index = 10
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '5.0e-4*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.08e5 6.034e4 6.034e4 1.08e5 6.03e4 1.08e5 2.86e4 2.86e4 2.86e4' #Tallon and Wolfenden. J. Phys. Chem. Solids (1979)
fill_method = symmetric9
euler_angle_1 = 54.74
euler_angle_2 = 45.0
euler_angle_3 = 270.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_only_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 2
[]
[twin_only_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = 'fcc_input_twinning_systems.txt'
initial_twin_lattice_friction = 3.0
non_coplanar_coefficient_twin_hardening = 8e5
coplanar_coefficient_twin_hardening = 8e4
[]
[]
[Postprocessors]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[twin_resistance_4]
type = ElementAverageValue
variable = twin_resistance_4
[]
[twin_resistance_10]
type = ElementAverageValue
variable = twin_resistance_10
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_volume_fraction_6]
type = ElementAverageValue
variable = twin_volume_fraction_6
[]
[twin_volume_fraction_7]
type = ElementAverageValue
variable = twin_volume_fraction_7
[]
[twin_volume_fraction_8]
type = ElementAverageValue
variable = twin_volume_fraction_8
[]
[twin_volume_fraction_9]
type = ElementAverageValue
variable = twin_volume_fraction_9
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[twin_volume_fraction_11]
type = ElementAverageValue
variable = twin_volume_fraction_11
[]
[twin_tau_4]
type = ElementAverageValue
variable = twin_tau_4
[]
[twin_tau_10]
type = ElementAverageValue
variable = twin_tau_10
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.025
dtmin = 0.0125
num_steps = 8
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/small_deform_cosserat1.i)
# Plastic deformation. Layered Cosserat with parameters:
# Young = 1.0
# Poisson = 0.2
# layer_thickness = 0.1
# joint_normal_stiffness = 0.25
# joint_shear_stiffness = 0.2
# These give the following nonzero components of the elasticity tensor:
# E_0000 = E_1111 = 1.043195
# E_0011 = E_1100 = 0.260799
# E_2222 = 0.02445
# E_0022 = E_1122 = E_2200 = E_2211 = 0.006112
# G = E_0101 = E_0110 = E_1001 = E_1010 = 0.416667
# Gt = E_0202 = E_0220 = E_2002 = E_1212 = E_1221 = E_2112 = 0.019084
# E_2020 = E_2121 = 0.217875
# They give the following nonzero components of the bending rigidity tensor:
# D = 8.68056E-5
# B_0101 = B_1010 = 7.92021E-4
# B_0110 = B_1001 = -1.584E-4
#
# Applying the following deformation to the zmax surface of a unit cube:
# disp_x = 8*t
# disp_y = 6*t
# disp_z = t
# omega_x = omega_y = omega_z = 0
# yields the following strains:
# strain_xz = 8*t
# strain_yz = 6*t
# strain_zz = t
# and all other components, and the curvature, are zero.
# The nonzero components of stress are therefore:
# stress_xx = stress_yy = 0.006112*t
# stress_xz = stress_zx = 0.152671*t
# stress_yz = stress_zy = 0.114504*t
# stress_zz = 0.0244499*t
# The moment stress is zero.
# So q = 0.19084*t and p = 0.0244*t.
#
# With large cohesion, but tensile strength = 0.0244499, the
# system is elastic up to t=1. After that time
# stress_zz = 0.0244499 (for t>=1)
# and
# stress_xx = stress_yy = 0.006112 (for t>=1), since the
# elastic trial increment is exactly canelled by the Poisson's
# contribution from the return to the yield surface.
# The plastic strains are zero for t<=1, but for larger times:
# plastic_strain_zz = (t - 1) (for t>=1)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
variable = disp_x
boundary = back
value = 0.0
[../]
[./bottomy]
type = DirichletBC
variable = disp_y
boundary = back
value = 0.0
[../]
[./bottomz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
variable = disp_x
boundary = front
function = 8*t
[../]
[./topy]
type = FunctionDirichletBC
variable = disp_y
boundary = front
function = 6*t
[../]
[./topz]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = t
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yx
index_i = 1
index_j = 0
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zx
index_i = 2
index_j = 0
[../]
[./strainp_zy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zy
index_i = 2
index_j = 1
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yx
index_i = 1
index_j = 0
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zx
index_i = 2
index_j = 0
[../]
[./straint_zy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zy
index_i = 2
index_j = 1
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yx]
type = PointValue
point = '0 0 0'
variable = stress_yx
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zx]
type = PointValue
point = '0 0 0'
variable = stress_zx
[../]
[./s_zy]
type = PointValue
point = '0 0 0'
variable = stress_zy
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./c_s_xx]
type = PointValue
point = '0 0 0'
variable = couple_stress_xx
[../]
[./c_s_xy]
type = PointValue
point = '0 0 0'
variable = couple_stress_xy
[../]
[./c_s_xz]
type = PointValue
point = '0 0 0'
variable = couple_stress_xz
[../]
[./c_s_yx]
type = PointValue
point = '0 0 0'
variable = couple_stress_yx
[../]
[./c_s_yy]
type = PointValue
point = '0 0 0'
variable = couple_stress_yy
[../]
[./c_s_yz]
type = PointValue
point = '0 0 0'
variable = couple_stress_yz
[../]
[./c_s_zx]
type = PointValue
point = '0 0 0'
variable = couple_stress_zx
[../]
[./c_s_zy]
type = PointValue
point = '0 0 0'
variable = couple_stress_zy
[../]
[./c_s_zz]
type = PointValue
point = '0 0 0'
variable = couple_stress_zz
[../]
[./strainp_xx]
type = PointValue
point = '0 0 0'
variable = strainp_xx
[../]
[./strainp_xy]
type = PointValue
point = '0 0 0'
variable = strainp_xy
[../]
[./strainp_xz]
type = PointValue
point = '0 0 0'
variable = strainp_xz
[../]
[./strainp_yx]
type = PointValue
point = '0 0 0'
variable = strainp_yx
[../]
[./strainp_yy]
type = PointValue
point = '0 0 0'
variable = strainp_yy
[../]
[./strainp_yz]
type = PointValue
point = '0 0 0'
variable = strainp_yz
[../]
[./strainp_zx]
type = PointValue
point = '0 0 0'
variable = strainp_zx
[../]
[./strainp_zy]
type = PointValue
point = '0 0 0'
variable = strainp_zy
[../]
[./strainp_zz]
type = PointValue
point = '0 0 0'
variable = strainp_zz
[../]
[./straint_xx]
type = PointValue
point = '0 0 0'
variable = straint_xx
[../]
[./straint_xy]
type = PointValue
point = '0 0 0'
variable = straint_xy
[../]
[./straint_xz]
type = PointValue
point = '0 0 0'
variable = straint_xz
[../]
[./straint_yx]
type = PointValue
point = '0 0 0'
variable = straint_yx
[../]
[./straint_yy]
type = PointValue
point = '0 0 0'
variable = straint_yy
[../]
[./straint_yz]
type = PointValue
point = '0 0 0'
variable = straint_yz
[../]
[./straint_zx]
type = PointValue
point = '0 0 0'
variable = straint_zx
[../]
[./straint_zy]
type = PointValue
point = '0 0 0'
variable = straint_zy
[../]
[./straint_zz]
type = PointValue
point = '0 0 0'
variable = straint_zz
[../]
[./f_shear]
type = PointValue
point = '0 0 0'
variable = f_shear
[../]
[./f_tensile]
type = PointValue
point = '0 0 0'
variable = f_tensile
[../]
[./f_compressive]
type = PointValue
point = '0 0 0'
variable = f_compressive
[../]
[./intnl_shear]
type = PointValue
point = '0 0 0'
variable = intnl_shear
[../]
[./intnl_tensile]
type = PointValue
point = '0 0 0'
variable = intnl_tensile
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[./ls]
type = PointValue
point = '0 0 0'
variable = ls
[../]
[]
[UserObjects]
[./coh]
type = SolidMechanicsHardeningConstant
value = 30
[../]
[./tanphi]
type = SolidMechanicsHardeningConstant
value = 0.5
[../]
[./tanpsi]
type = SolidMechanicsHardeningConstant
value = 0.1111077
[../]
[./t_strength]
type = SolidMechanicsHardeningConstant
value = 0.024449878
[../]
[./c_strength]
type = SolidMechanicsHardeningConstant
value = 40
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 1.0
poisson = 0.2
layer_thickness = 0.1
joint_normal_stiffness = 0.25
joint_shear_stiffness = 0.2
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
[../]
[./admissible]
type = ComputeMultipleInelasticCosseratStress
inelastic_models = stress
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakPlaneCosseratStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 0
smoothing_tol = 1
yield_function_tol = 1E-5
[../]
[]
[Executioner]
nl_abs_tol = 1E-14
end_time = 3
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform_cosserat1
csv = true
[]
(modules/xfem/test/tests/bimaterials/inclusion_ad_bimaterials_2d.i)
# This test is for a matrix-inclusion composite materials using AD
# The global stress is determined by switching the stress based on level set values
# The inclusion geometry is marked by a level set function
# The matrix and inclusion are glued together
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./level_set_cut_uo]
type = LevelSetCutUserObject
level_set_var = ls
[../]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 11
ny = 11
xmin = 0.0
xmax = 5.
ymin = 0.0
ymax = 5.
elem_type = QUAD4
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./ls]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./ls_function]
type = FunctionAux
variable = ls
function = ls_func
[../]
[]
[Functions]
[./ls_func]
type = ParsedFunction
expression = 'sqrt((y-2.5)*(y-2.5) + (x-2.5)*(x-2.5)) - 1.5'
[../]
[]
[AuxVariables]
[./a_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
use_automatic_differentiation = true
add_variables = true
generate_output = 'stress_xx stress_yy stress_xy'
[../]
[]
[AuxKernels]
[./a_strain_xx]
type = ADRankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 0
variable = a_strain_xx
[../]
[./a_strain_yy]
type = ADRankTwoAux
rank_two_tensor = A_total_strain
index_i = 1
index_j = 1
variable = a_strain_yy
[../]
[./a_strain_xy]
type = ADRankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 1
variable = a_strain_xy
[../]
[./b_strain_xx]
type = ADRankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 0
variable = b_strain_xx
[../]
[./b_strain_yy]
type = ADRankTwoAux
rank_two_tensor = B_total_strain
index_i = 1
index_j = 1
variable = b_strain_yy
[../]
[./b_strain_xy]
type = ADRankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 1
variable = b_strain_xy
[../]
[]
[Constraints]
[./dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[./dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[]
[BCs]
[./bottomx]
type = ADDirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = ADDirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = ADFunctionDirichletBC
boundary = top
variable = disp_x
function = '0.03*t'
[../]
[./topy]
type = ADFunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[../]
[]
[Materials]
[./elasticity_tensor_A]
type = ADComputeIsotropicElasticityTensor
base_name = A
youngs_modulus = 1e9
poissons_ratio = 0.3
[../]
[./strain_A]
type = ADComputeSmallStrain
base_name = A
[../]
[./stress_A]
type = ADComputeLinearElasticStress
base_name = A
[../]
[./elasticity_tensor_B]
type = ADComputeIsotropicElasticityTensor
base_name = B
youngs_modulus = 1e5
poissons_ratio = 0.3
[../]
[./strain_B]
type = ADComputeSmallStrain
base_name = B
[../]
[./stress_B]
type = ADComputeLinearElasticStress
base_name = B
[../]
[./combined_stress]
type = ADLevelSetBiMaterialRankTwo
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = stress
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
# controls for linear iterations
l_max_its = 20
l_tol = 1e-8
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-50 #1e-7
# time control
start_time = 0.0
dt = 0.5
end_time = 1.0
num_steps = 2
max_xfem_update = 1
[]
[Outputs]
exodus = true
file_base = inclusion_bimaterials_2d_out
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/except4.i)
# checking for exception error messages on the edge smoothing
# here edge_smoother=5deg, which means the friction_angle must be <= 35.747
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningExponential
value_0 = 0.52359878 # 30deg
value_residual = 0.62831853 # 36deg
rate = 3000.0
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 1
mc_edge_smoother = 5
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = except4
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/small_deform2.i)
# apply repeated stretches in x, y and z directions, so that mean_stress = 0
# This maps out the yield surface in the octahedral plane for zero mean stress
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '2E-6*x*sin(t)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2E-6*y*sin(2*t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-2E-6*z*(sin(t)+sin(2*t))'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 20
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 0
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4
mc_edge_smoother = 20
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 100
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/ad_cavity_pressure/additional_volume.i)
#
# Cavity Pressure Test using using automatic differentiation
#
# This test is designed to compute an internal pressure based on
# p = n * R * / (V_cavity / T_cavity + V_add / T_add)
# where
# p is the pressure
# n is the amount of material in the volume (moles)
# R is the universal gas constant
# T_cavity is the temperature in the cavity
# T_add is the temperature of the additional volume
#
# The mesh is composed of one block (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7. An additional volume of 2 is added.
#
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V_cavity0 + gamma * t + V_add
# with
# alpha = n0
# beta = T0 / 2
# gamma = -(0.003322259...) * V0
# T0 = 240.54443866068704
# V_cavity0 = 7
# V_add = 2
# T_add = 100
# n0 = f(p0)
# p0 = 100
# R = 8.314472 J * K^(-1) * mol^(-1)
#
# An additional volume of 2 with a temperature of 100.0 is included.
#
# So, n0 = p0 * (V_cavity / T_cavity + V_add / T_add) / R
# = 100 * (7 / 240.544439 + 2 / 100) / 8.314472
# = 0.59054
#
# The parameters combined at t = 1 gives p = 249.647.
#
# This test sets the initial temperature to 500, but the CavityPressure
# is told that that initial temperature is T0. Thus, the final solution
# is unchanged.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = 3d.e
[]
[GlobalParams]
volumetric_locking_correction = true
[]
[Functions]
[displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[]
[displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[]
[temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[]
[material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.59054'
[]
[additional_volume]
type = ConstantFunction
value = 2
[]
[temperature_of_additional_volume]
type = ConstantFunction
value = 100
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temp]
initial_condition = 500
[]
[material_input]
[]
[]
[AuxVariables]
[pressure_residual_x]
[]
[pressure_residual_y]
[]
[pressure_residual_z]
[]
[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
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
use_automatic_differentiation = true
[]
[heat]
type = ADDiffusion
variable = temp
use_displaced_mesh = true
[]
[material_input_dummy]
type = ADDiffusion
variable = material_input
use_displaced_mesh = true
[]
[]
[AuxKernels]
[stress_xx]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_xx
[]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_yy
[]
[stress_zz]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
[]
[stress_xy]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[]
[stress_yz]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 2
variable = stress_yz
[]
[stress_zx]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 0
variable = stress_zx
[]
[]
[BCs]
[no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[]
[no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[]
[no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[]
[prescribed_left]
type = FunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[]
[prescribed_right]
type = FunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[]
[no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[]
[no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[]
[temperatureInterior]
type = ADFunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[]
[MaterialInput]
type = ADFunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[]
[CavityPressure]
[1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
initial_temperature = 240.54443866068704
volume = internalVolume
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
additional_volumes = volume1
temperature_of_additional_volumes = temperature1
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[elast_tensor1]
type = ADComputeElasticityTensor
C_ijkl = '0 5'
fill_method = symmetric_isotropic
block = 1
[]
[strain1]
type = ADComputeFiniteStrain
block = 1
[]
[stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[]
[elast_tensor2]
type = ADComputeElasticityTensor
C_ijkl = '0 5'
fill_method = symmetric_isotropic
block = 2
[]
[strain2]
type = ADComputeFiniteStrain
block = 2
[]
[stress2]
type = ADComputeFiniteStrainElasticStress
block = 2
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
use_pre_SMO_residual = true
[]
[Postprocessors]
[internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[]
[aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[]
[materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[]
[volume1]
type = FunctionValuePostprocessor
function = additional_volume
execute_on = 'initial linear'
[]
[temperature1]
type = FunctionValuePostprocessor
function = temperature_of_additional_volume
execute_on = 'initial linear'
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/special/objective_shear.i)
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[Functions]
[shearme]
type = PiecewiseLinear
x = '0 1'
y = '0 2'
[]
[]
[BCs]
[back]
type = DirichletBC
preset = true
variable = disp_z
boundary = back
value = 0.0
[]
[bottom_y]
type = DirichletBC
preset = true
variable = disp_y
boundary = bottom
value = 0.0
[]
[bottom_x]
type = DirichletBC
preset = true
variable = disp_x
boundary = bottom
value = 0.0
[]
[shear]
type = FunctionDirichletBC
variable = disp_x
boundary = top
function = shearme
preset = true
[]
[hmm]
type = DirichletBC
preset = true
variable = disp_y
boundary = top
value = 0.0
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 0.01
solve_type = 'newton'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
end_time = 1
[]
[Outputs]
exodus = true
[]
(modules/xfem/test/tests/bimaterials/glued_bimaterials_2d.i)
# This test is for two layer materials with different youngs modulus
# The global stress is determined by switching the stress based on level set values
# The material interface is marked by a level set function
# The two layer materials are glued together
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./level_set_cut_uo]
type = LevelSetCutUserObject
level_set_var = ls
[../]
[]
[Mesh]
displacements = 'disp_x disp_y'
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 5
xmin = 0.0
xmax = 5.
ymin = 0.0
ymax = 5.
elem_type = QUAD4
[]
[./left_bottom]
type = ExtraNodesetGenerator
new_boundary = 'left_bottom'
coord = '0.0 0.0'
input = gen
[../]
[./left_top]
type = ExtraNodesetGenerator
new_boundary = 'left_top'
coord = '0.0 5.'
input = left_bottom
[../]
[]
[AuxVariables]
[./ls]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./ls_function]
type = FunctionAux
variable = ls
function = ls_func
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Functions]
[./ls_func]
type = ParsedFunction
expression = 'y-2.5'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[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_xy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[../]
[./a_strain_xx]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 0
variable = a_strain_xx
[../]
[./a_strain_yy]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 1
index_j = 1
variable = a_strain_yy
[../]
[./a_strain_xy]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 1
variable = a_strain_xy
[../]
[./b_strain_xx]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 0
variable = b_strain_xx
[../]
[./b_strain_yy]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 1
index_j = 1
variable = b_strain_yy
[../]
[./b_strain_xy]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 1
variable = b_strain_xy
[../]
[]
[Constraints]
[./dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[./dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
boundary = top
variable = disp_x
function = 0.03*t
[../]
[./topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[../]
[]
[Materials]
[./elasticity_tensor_A]
type = ComputeIsotropicElasticityTensor
base_name = A
youngs_modulus = 1e9
poissons_ratio = 0.3
[../]
[./strain_A]
type = ComputeSmallStrain
base_name = A
[../]
[./stress_A]
type = ComputeLinearElasticStress
base_name = A
[../]
[./elasticity_tensor_B]
type = ComputeIsotropicElasticityTensor
base_name = B
youngs_modulus = 1e5
poissons_ratio = 0.3
[../]
[./strain_B]
type = ComputeSmallStrain
base_name = B
[../]
[./stress_B]
type = ComputeLinearElasticStress
base_name = B
[../]
[./combined_stress]
type = LevelSetBiMaterialRankTwo
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = stress
[../]
[./combined_dstressdstrain]
type = LevelSetBiMaterialRankFour
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = Jacobian_mult
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'bt'
# controls for linear iterations
l_max_its = 20
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-7
# time control
start_time = 0.0
dt = 0.1
num_steps = 2
max_xfem_update = 1
[]
[Outputs]
exodus = true
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/small_deform5.i)
# apply repeated stretches in x z directions, and smaller stretches along the y direction,
# so that sigma_I = sigma_II,
# which means that lode angle = 30deg.
# The allows yield surface in meridional plane to be mapped out
# Use 'cap' smoothing
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.9E-6*y*sin(t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[./iter_auxk]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 50
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningExponential
value_0 = 0
value_residual = 0.8726646 # 50deg
rate = 3000.0
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
tip_scheme = cap
mc_tip_smoother = 0
cap_start = 3
cap_rate = 0.8
mc_edge_smoother = 20
yield_function_tolerance = 1E-8
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 150
dt = 5
type = Transient
[]
[Outputs]
file_base = small_deform5
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/porous_flow/test/tests/mass_conservation/mass04.i)
# The sample is a single unit element, with roller BCs on the sides
# and bottom. A constant displacement is applied to the top: disp_z = -0.01*t.
# There is no fluid flow.
# Fluid mass conservation is checked.
#
# Under these conditions
# porepressure = porepressure(t=0) - (Fluid bulk modulus)*log(1 - 0.01*t)
# stress_xx = (bulk - 2*shear/3)*disp_z/L (remember this is effective stress)
# stress_zz = (bulk + 4*shear/3)*disp_z/L (remember this is effective stress)
# where L is the height of the sample (L=1 in this test)
#
# Parameters:
# Bulk modulus = 2
# Shear modulus = 1.5
# fluid bulk modulus = 0.5
# initial porepressure = 0.1
#
# Desired output:
# zdisp = -0.01*t
# p0 = 0.1 - 0.5*log(1-0.01*t)
# stress_xx = stress_yy = -0.01*t
# stress_zz = -0.04*t
#
# Regarding the "log" - it comes from preserving fluid mass
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
initial_condition = 0.1
[]
[]
[BCs]
[confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[]
[basefixed]
type = DirichletBC
variable = disp_z
value = 0
boundary = back
[]
[top_velocity]
type = FunctionDirichletBC
variable = disp_z
function = -0.01*t
boundary = front
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
component = 2
variable = disp_z
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0.5 0 0 0 0.5 0 0 0 0.5'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '0 0 0'
variable = porepressure
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
use_displaced_mesh = false
variable = disp_z
[]
[stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[]
[stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[]
[stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[]
[fluid_mass]
type = PorousFlowFluidMass
fluid_component = 0
execute_on = 'initial timestep_end'
outputs = 'console csv'
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-8 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 2
[]
[Outputs]
execute_on = 'initial timestep_end'
file_base = mass04
[csv]
type = CSV
[]
[]
(modules/solid_mechanics/test/tests/j2_plasticity/hard2.i)
# UserObject J2 test, with hardening, but with rate=1E6
# apply uniform compression in x direction to give
# trial stress_xx = 5, so sqrt(3*J2) = 5
# with zero Poisson's ratio, lambda_mu = 1E6, and strength=2, strength_residual=1,
# the equations that we need to solve are:
#
# stress_yy = stress_zz [because of the symmetry of the problem: to keep Lode angle constant]
# stress_xx - stress_yy = 1 + (2 - 1)*exp(-0.5*(1E6*q)^2) [yield_fcn = 0]
# stress_xx + stress_yy + stress_zz = 5 [mean stress constant]
# q = gamma
# stress_xx = 1E6*2*gamma*(stress_xx - 5/3)*sqrt(3)/2/sqrt(J2), where sqrt(J2) = (1 + (2 - 1)*exp(-0.5*(1E6*q)^2))/Sqrt(3)
# so RHS = 1E6*2*gamma*(stress_xx - 5/3)*3/2/(stress_xx - stress_yy)
#
# stress_xx = 2.672
# stress_yy = 1.164
# q = 1.164E-6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '2.5E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[./intnl]
type = PointValue
point = '0 0 0'
variable = intnl
[../]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningGaussian
value_0 = 2
value_residual = 1
rate = 1E12
[../]
[./j2]
type = SolidMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = j2
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = hard2
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/multi/three_surface20.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 1.1E-6m in y direction and 1.7E-6 in z direction.
# trial stress_yy = 1.1 and stress_zz = 1.7
#
# Then all yield functions will activate
# However, there is linear dependence. SimpleTester1 will be rutned off.
# The algorithm will return to
# stress_yy=0.5 and stress_zz=1
# internal0=0.1, internal2=0.6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1.1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.7E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface20
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/bicrystal_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[copper]
type = GeneratedMeshGenerator
dim = 3
elem_type = HEX8
[]
[copper_id]
type = SubdomainIDGenerator
input = copper
subdomain_id = 0
[]
[brass]
type = GeneratedMeshGenerator
dim = 3
zmax = 2
zmin = 1
elem_type = HEX8
[]
[brass_id]
type = SubdomainIDGenerator
input = brass
subdomain_id = 1
[]
[sticher]
type = StitchedMeshGenerator
inputs = 'copper_id brass_id'
stitch_boundaries_pairs = 'front back'
prevent_boundary_ids_overlap = false
[]
[]
[AuxVariables]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[copper_gss]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[copper_slip_increment]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[brass_gss]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[brass_slip_increment]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[copper]
strain = FINITE
incremental = true
add_variables = true
generate_output = stress_zz
block = 0
base_name = copper
[]
[brass]
strain = FINITE
incremental = true
add_variables = true
generate_output = stress_zz
block = 1
base_name = brass
[]
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[gss_copper]
type = MaterialStdVectorAux
variable = copper_gss
property = copper_slip_resistance
index = 0
block = 0
execute_on = timestep_end
[]
[slip_inc_copper]
type = MaterialStdVectorAux
variable = copper_slip_increment
property = copper_slip_increment
index = 0
block = 0
execute_on = timestep_end
[]
[gss_brass]
type = MaterialStdVectorAux
variable = brass_gss
property = brass_slip_resistance
index = 0
block = 1
execute_on = timestep_end
[]
[slip_inc_brass]
type = MaterialStdVectorAux
variable = brass_slip_increment
property = brass_slip_increment
index = 0
block = 1
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[]
[]
[Materials]
[elasticity_tensor_copper]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
base_name = copper
block = 0
[]
[stress_copper]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl_copper'
tan_mod_type = exact
base_name = copper
block = 0
[]
[trial_xtalpl_copper]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
base_name = copper
block = 0
[]
[elasticity_tensor_brass]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
euler_angle_1 = 0.0
euler_angle_2 = 45.0
euler_angle_3 = 0.9
base_name = brass
block = 1
[]
[stress_brass]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl_brass'
tan_mod_type = exact
base_name = brass
block = 1
[]
[trial_xtalpl_brass]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
base_name = brass
block = 1
[]
[]
[Postprocessors]
[copper_stress_zz]
type = ElementAverageValue
variable = copper_stress_zz
block = 0
[]
[brass_stress_zz]
type = ElementAverageValue
variable = brass_stress_zz
block = 1
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[copper_gss]
type = ElementAverageValue
variable = copper_gss
block = 0
[]
[copper_slip_increment]
type = ElementAverageValue
variable = copper_slip_increment
block = 0
[]
[brass_gss]
type = ElementAverageValue
variable = brass_gss
block = 1
[]
[brass_slip_increment]
type = ElementAverageValue
variable = brass_slip_increment
block = 1
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 10.0
num_steps = 10
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_xy_3d_anisoElasticity.i)
# This test simulates biaxial tensile test with the material being anisotropic
# in terms of elasticity and creep.
#
# -------------------
# ANALYTICAL SOLUTION
# -------------------
# https://mooseframework.inl.gov/source/materials/HillCreepStressUpdate.html
# q = [F(S22-S33)^2 + G(S33-S11)^2 + H(S11-S22)^2 + 2L(S23)^2 + 2M(S13)^2 + 2N(S12)^2]^0.5
# S11 = 40 Pa and S22 = 40 MPa; other compoenents of stress are zero since it is a biaxial test
# F=0.5 G=0.25 H=0.3866 L=1.6413 M=1.6413 N=1.2731 (as used in this test)
# Substituting the values of stress components and F, G, H, L, M and N we obtain
# q = 34.64101615137755 Pa
#
# Equivalent_creep_strain_rate = A(q)^n (power law creep rate used in this test)
# Substituting A=1e-15 and n=9, and q as calculated above, we obtain
# Equivalent_creep_strain_rate = 0.07183161109149655
#
# The 11 (xx) and 22 (yy) components of creep_strain_tensor are calculated as below:
#
# creep_strain_tensor_11 = (Equivalent_creep_strain_rate / q) *
# (H * (S11 - S22) - G * (S33 - S11)) * time_increment
# creep_strain_tensor_22 = (Equivalent_creep_strain_rate / q) *
# (F * (S22 - S33) - H * (S11 - S22)) * time_increment
#
# Substituting the values and time_increment as 0.001 we obtain the analytical solution.
#
# MOOSE Analytical
# creep_strain_tensor_11 2.073327e-06 2.0733271530122e-06
# creep_strain_tensor_22 4.147473e-06 4.147472838877e-06
#
# -----------------------------------------
# PYTHON SCRIPT FOR THE ANALYTICAL SOLUTION
# -----------------------------------------
# import math
# F=0.5; G=0.25; H=0.3866; L=1.6413; M=1.6413; N=1.2731
# S11=40; S22=40; S33=0; S23=0; S13=0; S12=0
# q = math.sqrt(F*(S22-S33)**2 + G*(S33-S11)**2 + H*(S11-S22)**2 + 2*L*(S23)**2 + 2*M*(S13)**2 + 2*N*(S12)**2)
# print(q)
# A=1e-15; n=9; time=0.0001
# equivalent_creep_strain_rate = A*(q**n)
# print(equivalent_creep_strain_rate)
# equivalent_creep_strain_rate_11=(equivalent_creep_strain_rate / q) * (H * (S11 - S22) - G * (S33 - S11)) * time
# equivalent_creep_strain_rate_22=(equivalent_creep_strain_rate / q) * (F * (S22 - S33) - H * (S11 - S22)) * time
# print(equivalent_creep_strain_rate_11, equivalent_creep_strain_rate_22)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 5
ny = 5
nz = 5
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 1.0
ymax = 1.0
zmax = 1.0
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[]
[sigma_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[sigma_zz]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0e-9 1.0'
y = '0 -40 -40'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx elastic_strain_yy stress_yy elastic_strain_zz stress_zz'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeElasticityTensor
C_ijkl = '2925.433 391.979 391.979 2127.590 322.280 2127.590 1805.310 3.96 3.96'
fill_method = symmetric9
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_creep"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.25 0.3866 1.6413 1.6413 1.2731"
[]
[trial_creep]
type = ADHillCreepStressUpdate
coefficient = 1e-15 # 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
absolute_tolerance = 1e-20
relative_tolerance = 1e-20
# Force it to not use integration error
max_integration_error = 100.0
anisotropic_elasticity = true
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[Pressure]
[Side1]
boundary = 'right'
function = pull
[]
[Side2]
boundary = 'top'
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err'
petsc_options_value = 'lu superlu_dist 1e-5'
nl_rel_tol = 1.0e-14
nl_abs_tol = 1.0e-14
l_max_its = 10
num_steps = 2
dt = 1.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 109
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 109
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 109
[]
[creep_strain_yy]
type = ElementalVariableValue
variable = creep_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 109
[]
[elastic_strain_yy]
type = ElementalVariableValue
variable = elastic_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 109
[]
[sigma_yy]
type = ElementalVariableValue
variable = stress_yy
execute_on = 'TIMESTEP_END'
elementid = 109
[]
[elastic_strain_zz]
type = ElementalVariableValue
variable = elastic_strain_zz
execute_on = 'TIMESTEP_END'
elementid = 109
[]
[sigma_zz]
type = ElementalVariableValue
variable = stress_zz
execute_on = 'TIMESTEP_END'
elementid = 109
[]
[]
[Outputs]
csv = true
exodus = false
perf_graph = true
# unnecessary output variables
hide = 'matl_ts_min max_disp_x max_disp_y max_hydro dt num_lin num_nonlin elastic_strain_zz sigma_zz'
[]
(modules/solid_mechanics/examples/coal_mining/cosserat_mc_wp_sticky_longitudinal.i)
# Strata deformation and fracturing around a coal mine
#
# A 2D geometry is used that simulates a longitudinal section of
# the coal mine. The model is actually 3D, but the "x"
# dimension is only 10m long, meshed with 1 element, and
# there is no "x" displacement. The mine is 400m deep
# and just the roof is studied (0<=z<=400). The model sits
# between -300<=y<=1800. The excavation sits in 0<=y<=1500. The
# excavation height is 3m (ie, the excavation lies within
# 0<=z<=3).
#
# Time is meaningless in this example
# as quasi-static solutions are sought at each timestep, but
# the number of timesteps controls the resolution of the
# process.
#
# The boundary conditions for this elastic simulation are:
# - disp_x = 0 everywhere
# - disp_y = 0 at y=-300 and y=1800
# - disp_z = 0 at z=0, but there is a time-dependent
# Young's modulus that simulates excavation
# - wc_x = 0 at y=300 and y=1800.
# That is, rollers on the sides, free at top,
# and prescribed at bottom in the unexcavated portion.
#
# The small strain formulation is used.
#
# All stresses are measured in MPa. The initial stress is consistent with
# the weight force from density 2500 kg/m^3, ie, stress_zz = -0.025*(300-z) MPa
# where gravity = 10 m.s^-2 = 1E-5 MPa m^2/kg. The maximum and minimum
# principal horizontal stresses are assumed to be equal to 0.8*stress_zz.
#
# Material properties:
# Young's modulus = 8 GPa
# Poisson's ratio = 0.25
# Cosserat layer thickness = 1 m
# Cosserat-joint normal stiffness = large
# Cosserat-joint shear stiffness = 1 GPa
# MC cohesion = 3 MPa
# MC friction angle = 37 deg
# MC dilation angle = 8 deg
# MC tensile strength = 1 MPa
# MC compressive strength = 100 MPa
#
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
xmin = -5
xmax = 5
nz = 40
zmin = 0
zmax = 400
bias_z = 1.1
ny = 140 # 15m elements
ymin = -300
ymax = 1800
[]
[left]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 11
normal = '0 -1 0'
input = generated_mesh
[]
[right]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 12
normal = '0 1 0'
input = left
[]
[front]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 13
normal = '-1 0 0'
input = right
[]
[back]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 14
normal = '1 0 0'
input = front
[]
[top]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 15
normal = '0 0 1'
input = back
[]
[bottom]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 16
normal = '0 0 -1'
input = top
[]
[excav]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '-5 0 0'
top_right = '5 1500 3'
input = bottom
[]
[roof]
type = SideSetsAroundSubdomainGenerator
block = 1
new_boundary = 18
normal = '0 0 1'
input = excav
[]
[]
[GlobalParams]
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[]
[Kernels]
[./cy_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_x
component = 0
[../]
[./gravity]
type = Gravity
use_displaced_mesh = false
variable = disp_z
value = -10E-6 # remember this is in MPa
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_shear]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_internal_parameter
variable = mc_shear
[../]
[./mc_tensile]
type = MaterialStdVectorAux
index = 1
property = mc_plastic_internal_parameter
variable = mc_tensile
[../]
[./wp_shear]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_internal_parameter
variable = wp_shear
[../]
[./wp_tensile]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_internal_parameter
variable = wp_tensile
[../]
[./mc_shear_f]
type = MaterialStdVectorAux
index = 6
property = mc_plastic_yield_function
variable = mc_shear_f
[../]
[./mc_tensile_f]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_yield_function
variable = mc_tensile_f
[../]
[./wp_shear_f]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_yield_function
variable = wp_shear_f
[../]
[./wp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_yield_function
variable = wp_tensile_f
[../]
[]
[BCs]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = '11 12'
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = '16'
value = 0.0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = '11 12'
value = 0.0
[../]
[./roof]
type = StickyBC
variable = disp_z
min_value = -3.0
boundary = '18'
[../]
[]
[Functions]
[./ini_xx]
type = ParsedFunction
expression = '-0.8*2500*10E-6*(400-z)'
[../]
[./ini_zz]
type = ParsedFunction
expression = '-2500*10E-6*(400-z)'
[../]
[./excav_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval slope'
symbol_values = '1.0 0 1500.0 1E-9 1 15'
# excavation face at ymin+(ymax-ymin)*min(t/end_t,1)
# slope is the distance over which the modulus reduces from maxval to minval
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,if(y<ymin+(ymax-ymin)*min(t/end_t,1)+slope,minval+(maxval-minval)*(y-(ymin+(ymax-ymin)*min(t/end_t,1)))/slope,maxval))'
[../]
[./density_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval'
symbol_values = '1.0 0 1500.0 0 2500'
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,maxval)'
[../]
[]
[UserObjects]
[./mc_coh_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 2.99 # MPa
value_residual = 3.01 # MPa
rate = 1.0
[../]
[./mc_fric]
type = SolidMechanicsHardeningConstant
value = 0.65 # 37deg
[../]
[./mc_dil]
type = SolidMechanicsHardeningConstant
value = 0.15 # 8deg
[../]
[./mc_tensile_str_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 1.0 # MPa
value_residual = 1.0 # MPa
rate = 1.0
[../]
[./mc_compressive_str]
type = SolidMechanicsHardeningCubic
value_0 = 100 # Large!
value_residual = 100
internal_limit = 0.1
[../]
[./wp_coh_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_tan_fric]
type = SolidMechanicsHardeningConstant
value = 0.36 # 20deg
[../]
[./wp_tan_dil]
type = SolidMechanicsHardeningConstant
value = 0.18 # 10deg
[../]
[./wp_tensile_str_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_compressive_str_soften]
type = SolidMechanicsHardeningCubic
value_0 = 100
value_residual = 1.0
internal_limit = 1.0
[../]
[]
[Materials]
[./elasticity_tensor_0]
type = ComputeLayeredCosseratElasticityTensor
block = 0
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
[../]
[./elasticity_tensor_1]
type = ComputeLayeredCosseratElasticityTensor
block = 1
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
elasticity_tensor_prefactor = excav_sideways
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
eigenstrain_name = ini_stress
initial_stress = 'ini_xx 0 0 0 ini_xx 0 0 0 ini_zz'
[../]
[./stress_0]
type = ComputeMultipleInelasticCosseratStress
block = 0
inelastic_models = 'mc wp'
cycle_models = true
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./stress_1]
# this is needed so as to correctly apply the initial stress
type = ComputeMultipleInelasticCosseratStress
block = 1
inelastic_models = ''
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./mc]
type = CappedMohrCoulombCosseratStressUpdate
warn_about_precision_loss = false
host_youngs_modulus = 8E3
host_poissons_ratio = 0.25
base_name = mc
tensile_strength = mc_tensile_str_strong_harden
compressive_strength = mc_compressive_str
cohesion = mc_coh_strong_harden
friction_angle = mc_fric
dilation_angle = mc_dil
max_NR_iterations = 100000
smoothing_tol = 0.1 # MPa # Must be linked to cohesion
yield_function_tol = 1E-9 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[../]
[./wp]
type = CappedWeakPlaneCosseratStressUpdate
warn_about_precision_loss = false
base_name = wp
cohesion = wp_coh_harden
tan_friction_angle = wp_tan_fric
tan_dilation_angle = wp_tan_dil
tensile_strength = wp_tensile_str_harden
compressive_strength = wp_compressive_str_soften
max_NR_iterations = 10000
tip_smoother = 0.1
smoothing_tol = 0.1 # MPa # Note, this must be tied to cohesion, otherwise get no possible return at cone apex
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0E-3
[../]
[./density_0]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 2500
[../]
[./density_1]
type = GenericFunctionMaterial
block = 1
prop_names = density
prop_values = density_sideways
[../]
[]
[Postprocessors]
[./subs]
type = PointValue
point = '0 0 400'
variable = disp_z
use_displaced_mesh = false
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
line_search = bt
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_max_its = 30
nl_max_its = 100
start_time = 0.0
dt = 0.01 # 1 element per step
end_time = 1.0
[]
[Outputs]
file_base = cosserat_mc_wp_sticky_longitudinal
time_step_interval = 1
print_linear_residuals = false
exodus = true
csv = true
console = true
#[./console]
# type = Console
# output_linear = false
#[../]
[]
(modules/solid_mechanics/test/tests/j2_plasticity/small_deform1.i)
# UserObject J2 test
# apply uniform stretch in x, y and z directions.
# no plasticity should be observed
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningConstant
value = 1
[../]
[./j2]
type = SolidMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = j2
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/thermo_mech/ad-youngs_modulus_function_temp.i)
# ---------------------------------------------------------------------------
# This test is designed to verify the variable elasticity tensor functionality in the
# ADComputeFiniteStrainElasticStress class with the elasticity_tensor_has_changed flag
# by varying the young's modulus with temperature. A constant strain is applied
# to the mesh in this case, and the stress varies with the changing elastic constants.
#
# Geometry: A single element cube in symmetry boundary conditions and pulled
# at a constant displacement to create a constant strain in the x-direction.
#
# Temperature: The temperature varies from 400K to 700K in this simulation by
# 100K each time step. The temperature is held constant in the last
# timestep to ensure that the elasticity tensor components are constant
# under constant temperature.
#
# Results: Because Poisson's ratio is set to zero, only the stress along the x
# axis is non-zero. The stress changes with temperature.
#
# Temperature(K) strain_{xx}(m/m) Young's Modulus(Pa) stress_{xx}(Pa)
# 400 0.001 10.0e6 1.0e4
# 500 0.001 10.0e6 1.0e4
# 600 0.001 9.94e6 9.94e3
# 700 0.001 9.93e6 9.93e3
#
# The tensor mechanics results align exactly with the analytical results above
# when this test is run with ComputeIncrementalStrain. When the test is
# run with ComputeFiniteStrain, a 0.05% discrepancy between the analytical
# strains and the simulation strain results is observed, and this discrepancy
# is carried over into the calculation of the elastic stress.
#-------------------------------------------------------------------------
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 400
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_function]
type = PiecewiseLinear
x = '1 4'
y = '400 700'
[../]
[]
[Kernels]
[./heat]
type = ADDiffusion
variable = temp
[../]
[./TensorMechanics]
use_displaced_mesh = true
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./elastic_strain_xx]
type = ADRankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./u_left_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./u_back_fix]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./u_pull_right]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.001
[../]
[./temp_bc_1]
type = ADFunctionDirichletBC
variable = temp
preset = false
boundary = '1 2 3 4'
function = temperature_function
[../]
[]
[Materials]
[./youngs_modulus]
type = ADPiecewiseLinearInterpolationMaterial
xy_data = '0 10e+6
599.9999 10e+6
600 9.94e+6
99900 10e3'
property = youngs_modulus
variable = temp
[../]
[./elasticity_tensor]
type = ADComputeVariableIsotropicElasticityTensor
youngs_modulus = youngs_modulus
poissons_ratio = 0.0
[../]
[./strain]
type = ADComputeIncrementalStrain
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
[../]
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
end_time = 5
[]
[Postprocessors]
[./elastic_strain_xx]
type = ElementAverageValue
variable = elastic_strain_xx
[../]
[./elastic_stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./temp]
type = AverageNodalVariableValue
variable = temp
[../]
[]
[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/solid_mechanics/test/tests/ad_isotropic_elasticity_tensor/youngs_modulus_poissons_ratio_test.i)
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
add_variables = true
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./stress_11]
type = ADRankTwoAux
variable = stress_11
rank_two_tensor = stress
index_j = 1
index_i = 1
[../]
[]
[BCs]
[./bottom]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = ADDirichletBC
variable = disp_y
boundary = top
value = 0.001
[../]
[]
[Materials]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
poissons_ratio = 0.1
youngs_modulus = 1e6
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
l_max_its = 20
nl_max_its = 10
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial2.i)
[Mesh]
type = FileMesh
file = quarter_hole.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./zmin_zzero]
type = DirichletBC
variable = disp_z
boundary = 'zmin'
value = '0'
[../]
[./xmin_xzero]
type = DirichletBC
variable = disp_x
boundary = 'xmin'
value = '0'
[../]
[./ymin_yzero]
type = DirichletBC
variable = disp_y
boundary = 'ymin'
value = '0'
[../]
[./ymax_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'ymax'
function = '-1E-4*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0.005 0.02 0.002'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10E6
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 2
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 2
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 0.01E6
mc_edge_smoother = 29
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric_isotropic
C_ijkl = '0 5E9' # young = 10Gpa, poisson = 0.0
[../]
[./strain]
type = ComputeIncrementalStrain
block = 1
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 1
ep_plastic_tolerance = 1E-11
plastic_models = mc
max_NR_iterations = 1000
debug_fspb = crash
[../]
[]
# Preconditioning and Executioner options kindly provided by Andrea
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
end_time = 0.5
dt = 0.1
solve_type = NEWTON
type = Transient
l_tol = 1E-2
nl_abs_tol = 1E-9
nl_rel_tol = 1E-11
l_max_its = 200
nl_max_its = 400
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[]
[Outputs]
file_base = uni_axial2
exodus = true
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/ad_aniso_plasticity_x_one.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1e1 1e8'
y = '0 -4e2 -4e2'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 70000
poissons_ratio = 0.25
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_plasticity"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5829856 0.364424 0.6342174 2.0691375 2.3492325 1.814589"
[]
[trial_plasticity]
type = ADHillElastoPlasticityStressUpdate
hardening_constant = 2000.0
yield_stress = 0.001 # was 200 for verification
absolute_tolerance = 1e-15
relative_tolerance = 1e-13
# internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-6
# internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = left
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = left
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-12
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 25
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 1.0e-5
time_t = '0 3.4e-5 10'
time_dt = '1.0e-5 1.0e-7 1.0e-7'
[]
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[plasticity_strain_xx]
type = ElementalVariableValue
variable = plastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/drucker_prager/small_deform3_lode_zero.i)
# apply repeated stretches in x z directions, and smaller stretches along the y direction,
# so that sigma_I = sigma_II,
# which means that lode angle = 30deg.
# The allows yield surface in meridional plane to be mapped out
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '-1.7E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
smoother = 8
mc_interpolation_scheme = lode_zero
yield_function_tolerance = 1E-7
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-13
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform3_lode_zero
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/contact/test/tests/verification/patch_tests/ring_4/ring4_mu_0_2_pen.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring4_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 1000
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 = ring4_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 = ring4_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
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_newmark.i)
# Wave propogation in 1D using Newmark time integration in the presence of Rayleigh damping
#
# The test is for an 1D bar element of length 4m fixed on one end
# with a sinusoidal pulse dirichlet boundary condition applied to the other end.
# beta and gamma are Newmark time integration parameters
# eta and zeta are mass dependent and stiffness dependent Rayleigh damping
# coefficients, respectively.
# The equation of motion in terms of matrices is:
#
# M*accel + (eta*M+zeta*K)*vel +K*disp = 0
#
# Here M is the mass matrix, K is the stiffness matrix
#
# The displacement at the second, third and fourth node at t = 0.1 are
# -7.776268399030435152e-02, 1.949967184623528985e-02 and -4.615737877580032046e-03, respectively
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 4
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 4.0
zmin = 0.0
zmax = 0.1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x disp_y disp_z'
stiffness_damping_coefficient = 0.1
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.3025
gamma = 0.6
eta=0.1
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.3025
gamma = 0.6
eta=0.1
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.3025
gamma = 0.6
eta = 0.1
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.3025
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.6
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.3025
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.6
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.3025
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.6
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 0
index_j = 1
[../]
[]
[BCs]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = top
value=0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = top
value=0.0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value=0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = right
value=0.0
[../]
[./right_z]
type = DirichletBC
variable = disp_z
boundary = right
value=0.0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value=0.0
[../]
[./left_z]
type = DirichletBC
variable = disp_z
boundary = left
value=0.0
[../]
[./front_x]
type = DirichletBC
variable = disp_x
boundary = front
value=0.0
[../]
[./front_z]
type = DirichletBC
variable = disp_z
boundary = front
value=0.0
[../]
[./back_x]
type = DirichletBC
variable = disp_x
boundary = back
value=0.0
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = back
value=0.0
[../]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value=0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value=0.0
[../]
[./bottom_y]
type = FunctionDirichletBC
variable = disp_y
boundary = bottom
function = displacement_bc
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1 0'
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 6.0
l_tol = 1e-12
nl_rel_tol = 1e-12
dt = 0.1
[]
[Functions]
[./displacement_bc]
type = PiecewiseLinear
data_file = 'sine_wave.csv'
format = columns
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp_1]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_2]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./disp_3]
type = NodalVariableValue
nodeid = 10
variable = disp_y
[../]
[./disp_4]
type = NodalVariableValue
nodeid = 14
variable = disp_y
[../]
[]
[Outputs]
exodus = 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/solid_mechanics/test/tests/initial_stress/mc_tensile.i)
# In this example, an initial stress is applied that
# is inadmissible, and the return-map algorithm must be
# used to return to the yield surface before any other
# computations can be carried out.
# In this case, the return-map algorithm must subdivide
# the initial stress, otherwise it does not converge.
# This test is testing that subdivision process.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
variable = disp_x
boundary = 'back'
value = 0.0
[../]
[./bottomy]
type = DirichletBC
variable = disp_y
boundary = 'back'
value = 0.0
[../]
[./bottomz]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front'
function = '2*t-1'
[../]
[./topy]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front'
function = 't-1'
[../]
[./topz]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front'
function = 't-1'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
outputs = console
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 1E5
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 60
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4.0
mc_edge_smoother = 25
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[./str]
type = SolidMechanicsHardeningConstant
value = 1
[../]
[./pt]
type = SolidMechanicsPlasticTensile
tensile_strength = str
yield_function_tolerance = 1E-3
tensile_tip_smoother = 0.05
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '8E6 4E6 -18E6 4E6 -40E6 -2E6 -18E6 -2E6 -34E6'
eigenstrain_name = ini_stress
[../]
[./mc]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1E-9
plastic_models = 'pt mc'
deactivation_scheme = safe
max_NR_iterations = 100
min_stepsize = 0.1
[../]
[]
[Executioner]
end_time = 2
dt = 1
type = Transient
[]
[Outputs]
file_base = mc_tensile
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/drucker_prager/small_deform3_inner_tip.i)
# apply repeated stretches in x z directions, and smaller stretches along the y direction,
# so that sigma_I = sigma_II,
# which means that lode angle = 30deg.
# The allows yield surface in meridional plane to be mapped out
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '-1.7E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
smoother = 8
mc_interpolation_scheme = inner_tip
yield_function_tolerance = 1E-7
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-13
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform3_inner_tip
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/examples/phase_field-mechanics/Conserved.i)
#
# Example 1
# Illustrating the coupling between chemical and mechanical (elastic) driving forces.
# An oversized precipitate deforms under a uniaxial compressive stress
# Check the file below for comments and suggestions for parameter modifications.
#
[Mesh]
type = GeneratedMesh
dim = 2
nx = 40
ny = 40
nz = 0
xmin = 0
xmax = 50
ymin = 0
ymax = 50
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[Variables]
[./c]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = SmoothCircleIC
x1 = 0
y1 = 0
radius = 25.0
invalue = 1.0
outvalue = 0.0
int_width = 50.0
[../]
[../]
[./w]
order = FIRST
family = LAGRANGE
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
kappa_name = kappa_c
w = w
[../]
[./w_res]
type = SplitCHWRes
variable = w
mob_name = M
[../]
[./time]
type = CoupledTimeDerivative
variable = w
v = c
[../]
[]
#
# The AuxVariables and AuxKernels below are added to visualize the xx and yy stress tensor components
#
[AuxVariables]
[./sigma11_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./sigma22_aux]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./matl_sigma11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = sigma11_aux
[../]
[./matl_sigma22]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = sigma22_aux
[../]
[]
[Materials]
[./pfmobility]
type = GenericConstantMaterial
prop_names = 'M kappa_c'
prop_values = '1 5'
block = 0
#kappa = 0.1
#mob = 1e-3
[../]
# simple chemical free energy with a miscibility gap
[./chemical_free_energy]
type = DerivativeParsedMaterial
block = 0
property_name = Fc
coupled_variables = 'c'
constant_names = 'barr_height cv_eq'
constant_expressions = '0.1 1.0e-2'
expression = 16*barr_height*(c-cv_eq)^2*(1-cv_eq-c)^2
enable_jit = true
derivative_order = 2
[../]
# undersized solute (voidlike)
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
# lambda, mu values
C_ijkl = '7 7'
# Stiffness tensor is created from lambda=7, mu=7 using symmetric_isotropic fill method
fill_method = symmetric_isotropic
# See RankFourTensor.h for details on fill methods
# '15 15' results in a high stiffness (the elastic free energy will dominate)
# '7 7' results in a low stiffness (the chemical free energy will dominate)
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
# eigenstrain coefficient
# -0.1 will result in an undersized precipitate
# 0.1 will result in an oversized precipitate
expression = 0.1*c
coupled_variables = c
f_name = var_dep
enable_jit = true
derivative_order = 2
[../]
[./eigenstrain]
type = ComputeVariableEigenstrain
block = 0
eigen_base = '1 1 1 0 0 0'
prefactor = var_dep
#outputs = exodus
args = 'c'
eigenstrain_name = eigenstrain
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
block = 0
args = 'c'
derivative_order = 2
[../]
# Sum up chemical and elastic contributions
[./free_energy]
type = DerivativeSumMaterial
block = 0
property_name = F
sum_materials = 'Fc Fe'
coupled_variables = 'c'
derivative_order = 2
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = 'top'
# prescribed displacement
# -5 will result in a compressive stress
# 5 will result in a tensile stress
value = -5
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[]
[Preconditioning]
# active = ' '
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type '
petsc_options_value = 'asm lu'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 1.0e-10
start_time = 0.0
num_steps = 200
[./TimeStepper]
type = SolutionTimeAdaptiveDT
dt = 1
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/aniso_creep_x_3d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = RankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[sigma_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0e-9 1.0'
y = '0 -4e1 -4e1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ComputeMultipleInelasticStress
inelastic_models = "trial_creep_two"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = HillConstants
# F G H L M N
hill_constants = "0.5 0.25 0.3866 1.6413 1.6413 1.2731"
[]
[trial_creep_two]
type = HillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
absolute_tolerance = 1e-20
relative_tolerance = 1e-20
# Force it to not use integration error
max_integration_error = 100.0
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = DirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err'
petsc_options_value = 'lu superlu_dist 1e-5'
nl_rel_tol = 1.0e-14
nl_abs_tol = 1.0e-14
l_max_its = 10
num_steps = 10
dt = 1.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_integration_error.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0'
y = '0 -4e1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 7000
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_creep_two"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.25 0.3866 1.6413 1.6413 1.2731"
[]
[trial_creep_two]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 1.0e-4
absolute_tolerance = 1e-20
relative_tolerance = 1e-20
max_integration_error = 1.0e-5
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[UserObjects]
[terminator_creep]
type = Terminator
expression = 'time_step_size > matl_ts_min'
fail_mode = SOFT
execute_on = TIMESTEP_END
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1.0e-13
nl_abs_tol = 1.0e-13
l_max_its = 10
end_time = 1.65e-1
dt = 2.5e-2
start_time = 0
automatic_scaling = true
[./TimeStepper]
type = IterationAdaptiveDT
dt = 2.5e-2
time_t = '0.0 10.0'
time_dt = '2.5e-2 2.5e-2 '
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.5
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
[]
[Postprocessors]
[time_step_size]
type = TimestepSize
[]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/1D_axisymmetric/axisymm_gps_incremental.i)
# this test checks the asixymmetric 1D generalized plane strain formulation using incremental small strains
[GlobalParams]
displacements = disp_x
scalar_out_of_plane_strain = scalar_strain_yy
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = line.e
[]
[Variables]
[./disp_x]
[../]
[./scalar_strain_yy]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./temp]
initial_condition = 580.0
[../]
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '580 580 680'
[../]
[./disp_x]
type = PiecewiseLinear
x = '0 1'
y = '0 2e-6'
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[]
[Physics]
[SolidMechanics]
[./GeneralizedPlaneStrain]
[./gps]
[../]
[../]
[../]
[]
[AuxKernels]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[./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_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./temp]
type = FunctionAux
variable = temp
function = temp
execute_on = 'timestep_begin'
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
boundary = 1
value = 0
variable = disp_x
[../]
[./disp_x]
type = FunctionDirichletBC
boundary = 2
function = disp_x
variable = disp_x
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3600
poissons_ratio = 0.2
[../]
[./strain]
type = ComputeAxisymmetric1DIncrementalStrain
eigenstrain_names = eigenstrain
scalar_out_of_plane_strain = scalar_strain_yy
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-8
temperature = temp
stress_free_temperature = 580
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = 'none'
l_max_its = 50
l_tol = 1e-6
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0
end_time = 2
num_steps = 2
[]
[Outputs]
exodus = true
console = true
[]
(modules/combined/test/tests/cavity_pressure/3d.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 (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V0 + gamma * t
# with
# alpha = n0
# beta = T0 / 2
# gamma = - (0.003322259...) * V0
# 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
#
# The parameters combined at t = 1 gives p = 301.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
file = 3d.e
[]
[Functions]
[displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[]
[displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[]
[temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[]
[material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.35'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temp]
initial_condition = 240.54443866068704
[]
[material_input]
[]
[]
[AuxVariables]
[pressure_residual_x]
[]
[pressure_residual_y]
[]
[pressure_residual_z]
[]
[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
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
[]
[heat]
type = Diffusion
variable = temp
use_displaced_mesh = true
[]
[material_input_dummy]
type = Diffusion
variable = material_input
use_displaced_mesh = true
[]
[]
[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
[]
[]
[BCs]
[no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[]
[no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[]
[no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[]
[prescribed_left]
type = FunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[]
[prescribed_right]
type = FunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[]
[no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[]
[no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[]
[temperatureInterior]
type = FunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[]
[MaterialInput]
type = FunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[]
[CavityPressure]
[1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
volume = internalVolume
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
[]
[]
[]
[Materials]
[elast_tensor1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e1
poissons_ratio = 0
block = 1
[]
[strain1]
type = ComputeFiniteStrain
block = 1
[]
[stress1]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[elast_tensor2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
block = 2
[]
[strain2]
type = ComputeFiniteStrain
block = 2
[]
[stress2]
type = ComputeFiniteStrainElasticStress
block = 2
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
use_pre_SMO_residual = true
[]
[Postprocessors]
[internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[]
[aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[]
[materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/ad_action/two_block.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics/SolidMechanics/QuasiStatic]
[./block1]
strain = FINITE
add_variables = true
#block = 1
use_automatic_differentiation = true
[../]
[./block2]
strain = SMALL
add_variables = true
block = 2
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = ADRankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[./_elastic_stress2]
type = ADComputeLinearElasticStress
block = 2
[../]
[]
[BCs]
[./left]
type = DirichletBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[./top]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./right]
type = DirichletBC
boundary = 'right'
variable = disp_x
value = 0.01
[../]
[./bottom]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.01
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
(modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_fully_saturated.i)
# A sample is constrained on all sides, except its top
# and its boundaries are
# also impermeable. Fluid is pumped into the sample via a
# volumetric source (ie kg/second per cubic meter), and the
# rise in the top surface, porepressure, and stress are observed.
#
# In the standard poromechanics scenario, the Biot Modulus is held
# fixed and the source has units 1/time. Then the expected result
# is
# strain_zz = disp_z = BiotCoefficient*BiotModulus*s*t/((bulk + 4*shear/3) + BiotCoefficient^2*BiotModulus)
# porepressure = BiotModulus*(s*t - BiotCoefficient*strain_zz)
# stress_xx = (bulk - 2*shear/3)*strain_zz (remember this is effective stress)
# stress_zz = (bulk + 4*shear/3)*strain_zz (remember this is effective stress)
#
# In porous_flow, however, the source has units kg/s/m^3. The ratios remain
# fixed:
# stress_xx/strain_zz = (bulk - 2*shear/3) = 1 (for the parameters used here)
# stress_zz/strain_zz = (bulk + 4*shear/3) = 4 (for the parameters used here)
# porepressure/strain_zz = 13.3333333 (for the parameters used here)
#
# Expect
# disp_z = 0.3*10*s*t/((2 + 4*1.5/3) + 0.3^2*10) = 0.612245*s*t
# porepressure = 10*(s*t - 0.3*0.612245*s*t) = 8.163265*s*t
# stress_xx = (2 - 2*1.5/3)*0.612245*s*t = 0.612245*s*t
# stress_zz = (2 + 4*shear/3)*0.612245*s*t = 2.44898*s*t
# The relationship between the constant poroelastic source
# s (m^3/second/m^3) and the PorousFlow source, S (kg/second/m^3) is
# S = fluid_density * s = s * exp(porepressure/fluid_bulk)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[]
[confinez]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
component = 2
variable = disp_z
[]
[mass0]
type = PorousFlowFullySaturatedMassTimeDerivative
variable = porepressure
coupling_type = HydroMechanical
biot_coefficient = 0.3
[]
[source]
type = BodyForce
function = '0.1*exp(8.163265306*0.1*t/3.3333333333)'
variable = porepressure
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 3.3333333333
density0 = 1
thermal_expansion = 0
[]
[]
[Materials]
[temperature_qp]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseFullySaturated
porepressure = porepressure
[]
[simple_fluid_qp]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst # the "const" is irrelevant here: all that uses Porosity is the BiotModulus, which just uses the initial value of porosity
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
biot_coefficient = 0.3
fluid_bulk_modulus = 3.3333333333
solid_bulk_compliance = 0.5
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
variable = disp_z
[]
[stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[]
[stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[]
[stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[]
[stress_xx_over_strain]
type = FunctionValuePostprocessor
function = stress_xx_over_strain_fcn
outputs = csv
[]
[stress_zz_over_strain]
type = FunctionValuePostprocessor
function = stress_zz_over_strain_fcn
outputs = csv
[]
[p_over_strain]
type = FunctionValuePostprocessor
function = p_over_strain_fcn
outputs = csv
[]
[]
[Functions]
[stress_xx_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'stress_xx zdisp'
[]
[stress_zz_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'stress_zz zdisp'
[]
[p_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'p0 zdisp'
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = pp_generation_unconfined_fully_saturated
[csv]
type = CSV
[]
[]
(modules/solid_mechanics/test/tests/visco/visco_small_strain.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./axial_load]
type = NeumannBC
variable = disp_x
boundary = right
value = 10e6
[../]
[]
[Materials]
[./kelvin_voigt]
type = GeneralizedKelvinVoigtModel
creep_modulus = '10e9 10e9'
creep_viscosity = '1 10'
poisson_ratio = 0.2
young_modulus = 10e9
[../]
[./stress]
type = ComputeLinearViscoelasticStress
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = kelvin_voigt
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 100
l_tol = 1e-8
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = visco_small_strain_out
exodus = true
[]
(modules/solid_mechanics/test/tests/visco/gen_maxwell_relax.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./disp]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.001
[../]
[]
[Materials]
[./maxwell]
type = GeneralizedMaxwellModel
creep_modulus = '3.333333e9 3.333333e9'
creep_viscosity = '1 10'
poisson_ratio = 0.2
young_modulus = 10e9
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = maxwell
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-8
nl_max_its = 20
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = gen_maxwell_relax_out
exodus = true
[]
(modules/solid_mechanics/test/tests/shell/static/inclined_straintest.i)
# Static test for the inclined shell element.
# A single shell element is oriented at a 45 deg. angle with respect to the Y axis.
# One end of the shell is fixed and an axial deformation to the shell element is
# applied at the other end by resolving the deformation into Y and Z direction.
# The stress and strain result in the global orientation when transformed to
# the shell oriention gives the correct value of the axial stress and strain.
[Mesh]
type = FileMesh
file = shell_inclined.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[rot_x]
[]
[rot_y]
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
variable = stress_xx
selected_qp = 0
rank_two_tensor = global_stress_t_points_0
index_i = 0
index_j = 0
[]
[strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_global_strain_t_points_0
selected_qp = 0
index_i = 0
index_j = 0
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_0
selected_qp = 0
index_i = 1
index_j = 1
[]
[strain_yy]
type = RankTwoAux
variable = strain_yy
rank_two_tensor = total_global_strain_t_points_0
selected_qp = 0
index_i = 1
index_j = 1
[]
[stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = global_stress_t_points_0
selected_qp = 0
index_i = 0
index_j = 1
[]
[strain_xy]
type = RankTwoAux
variable = strain_xy
rank_two_tensor = total_global_strain_t_points_0
selected_qp = 0
index_i = 0
index_j = 1
[]
[stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
selected_qp = 0
index_i = 1
index_j = 2
[]
[strain_yz]
type = RankTwoAux
variable = strain_yz
rank_two_tensor = total_global_strain_t_points_0
selected_qp = 0
index_i = 1
index_j = 2
[]
[stress_xz]
type = RankTwoAux
variable = stress_xz
rank_two_tensor = global_stress_t_points_0
selected_qp = 0
index_i = 0
index_j = 2
[]
[strain_xz]
type = RankTwoAux
variable = strain_xz
rank_two_tensor = total_global_strain_t_points_0
selected_qp = 0
index_i = 0
index_j = 2
[]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = global_stress_t_points_0
selected_qp = 0
index_i = 2
index_j = 2
[]
[strain_zz]
type = RankTwoAux
variable = strain_zz
rank_two_tensor = total_global_strain_t_points_0
selected_qp = 0
index_i = 2
index_j = 2
[]
[]
[BCs]
[fixy1]
type = DirichletBC
variable = disp_y
boundary = '0'
value = 0.0
[]
[fixz1]
type = DirichletBC
variable = disp_z
boundary = '0'
value = 0.0
[]
[fixr1]
type = DirichletBC
variable = rot_x
boundary = '0'
value = 0.0
[]
[fixr2]
type = DirichletBC
variable = rot_y
boundary = '0'
value = 0.0
[]
[fixx1]
type = DirichletBC
variable = disp_x
boundary = '0'
value = 0.0
[]
[dispz]
type = FunctionDirichletBC
variable = disp_z
boundary = '2'
function = force_function
[]
[dispy]
type = FunctionDirichletBC
variable = disp_y
boundary = '2'
function = force_function
[]
[]
[Functions]
[force_function]
type = PiecewiseLinear
x = '0.0 1'
y = '0.0 0.33535534'
[]
[]
[Kernels]
[solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[]
[solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[]
[solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[]
[solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[]
[solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[]
[]
[Materials]
[elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 5
poissons_ratio = 0.0
block = 0
through_thickness_order = SECOND
[]
[strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[]
[stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[]
[]
[Postprocessors]
[stress_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yy
[]
[strain_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = strain_yy
[]
[stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[]
[strain_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = strain_yz
[]
[stress_xx_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_xx
[]
[strain_xx_el_0]
type = ElementalVariableValue
elementid = 0
variable = strain_xx
[]
[stress_xy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_xy
[]
[strain_xy_el_0]
type = ElementalVariableValue
elementid = 0
variable = strain_xy
[]
[stress_xz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_xz
[]
[strain_xz_el_0]
type = ElementalVariableValue
elementid = 0
variable = strain_xz
[]
[stress_zz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_zz
[]
[strain_zz_el_0]
type = ElementalVariableValue
elementid = 0
variable = strain_zz
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-11
nl_max_its = 15
nl_rel_tol = 1e-11
nl_abs_tol = 1e-10
l_max_its = 20
dt = 1
dtmin = 0.01
timestep_tolerance = 2e-13
end_time = 1
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/brick_1/brick1_aug.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick1_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 100
[]
[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
tangential_tolerance = 1e-3
formulation = augmented_lagrange
normalize_penalty = true
penalty = 1e8
model = frictionless
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/examples/coal_mining/coarse.i)
# Strata deformation and fracturing around a coal mine - 3D model
#
# A "half model" is used. The mine is 400m deep and
# just the roof is studied (-400<=z<=0). The mining panel
# sits between 0<=x<=150, and 0<=y<=1000, so this simulates
# a coal panel that is 300m wide and 1000m long. The outer boundaries
# are 1km from the excavation boundaries.
#
# Time is meaningless in this example
# as quasi-static solutions are sought at each timestep, but
# the number of timesteps controls the resolution of the
# process.
#
# The boundary conditions for this simulation are:
# - disp_x = 0 at x=0 and x=1150
# - disp_y = 0 at y=-1000 and y=1000
# - disp_z = 0 at z=-400, but there is a time-dependent
# Young's modulus that simulates excavation
# - wc_x = 0 at y=-1000 and y=1000
# - wc_y = 0 at x=0 and x=1150
# That is, rollers on the sides, free at top,
# and prescribed at bottom in the unexcavated portion.
#
# The small strain formulation is used.
#
# All stresses are measured in MPa. The initial stress is consistent with
# the weight force from density 2500 kg/m^3, ie, stress_zz = 0.025*z MPa
# where gravity = 10 m.s^-2 = 1E-5 MPa m^2/kg. The maximum and minimum
# principal horizontal stresses are assumed to be equal to 0.8*stress_zz.
#
# Material properties:
# Young's modulus = 8 GPa
# Poisson's ratio = 0.25
# Cosserat layer thickness = 1 m
# Cosserat-joint normal stiffness = large
# Cosserat-joint shear stiffness = 1 GPa
# MC cohesion = 3 MPa
# MC friction angle = 37 deg
# MC dilation angle = 8 deg
# MC tensile strength = 1 MPa
# MC compressive strength = 100 MPa
# WeakPlane cohesion = 0.1 MPa
# WeakPlane friction angle = 30 deg
# WeakPlane dilation angle = 10 deg
# WeakPlane tensile strength = 0.1 MPa
# WeakPlane compressive strength = 100 MPa softening to 1 MPa at strain = 1
#
[Mesh]
[file]
type = FileMeshGenerator
file = mesh/coarse.e
[]
[./xmin]
input = file
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
new_boundary = xmin
normal = '-1 0 0'
[../]
[./xmax]
input = xmin
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
new_boundary = xmax
normal = '1 0 0'
[../]
[./ymin]
input = xmax
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
new_boundary = ymin
normal = '0 -1 0'
[../]
[./ymax]
input = ymin
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
new_boundary = ymax
normal = '0 1 0'
[../]
[./zmax]
input = ymax
type = SideSetsAroundSubdomainGenerator
block = 16
new_boundary = zmax
normal = '0 0 1'
[../]
[./zmin]
input = zmax
type = SideSetsAroundSubdomainGenerator
block = 2
new_boundary = zmin
normal = '0 0 -1'
[../]
[./excav]
type = SubdomainBoundingBoxGenerator
input = zmin
block_id = 1
bottom_left = '0 0 -400'
top_right = '150 1000 -397'
[../]
[./roof]
type = SideSetsAroundSubdomainGenerator
block = 1
input = excav
new_boundary = roof
normal = '0 0 1'
[../]
[]
[GlobalParams]
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_y
component = 1
[../]
[./gravity]
type = Gravity
use_displaced_mesh = false
variable = disp_z
value = -10E-6 # remember this is in MPa
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_shear]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_internal_parameter
variable = mc_shear
[../]
[./mc_tensile]
type = MaterialStdVectorAux
index = 1
property = mc_plastic_internal_parameter
variable = mc_tensile
[../]
[./wp_shear]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_internal_parameter
variable = wp_shear
[../]
[./wp_tensile]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_internal_parameter
variable = wp_tensile
[../]
[./mc_shear_f]
type = MaterialStdVectorAux
index = 6
property = mc_plastic_yield_function
variable = mc_shear_f
[../]
[./mc_tensile_f]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_yield_function
variable = mc_tensile_f
[../]
[./wp_shear_f]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_yield_function
variable = wp_shear_f
[../]
[./wp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_yield_function
variable = wp_tensile_f
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 'xmin xmax'
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 'ymin ymax'
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = zmin
value = 0.0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = 'ymin ymax'
value = 0.0
[../]
[./no_wc_y]
type = DirichletBC
variable = wc_y
boundary = 'xmin xmax'
value = 0.0
[../]
[./roof]
type = StickyBC
variable = disp_z
min_value = -3.0
boundary = roof
[../]
[]
[Functions]
[./ini_xx]
type = ParsedFunction
expression = '0.8*2500*10E-6*z'
[../]
[./ini_zz]
type = ParsedFunction
expression = '2500*10E-6*z'
[../]
[./excav_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval slope'
symbol_values = '17.0 0 1000.0 1E-9 1 60'
# excavation face at ymin+(ymax-ymin)*min(t/end_t,1)
# slope is the distance over which the modulus reduces from maxval to minval
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,if(y<ymin+(ymax-ymin)*min(t/end_t,1)+slope,minval+(maxval-minval)*(y-(ymin+(ymax-ymin)*min(t/end_t,1)))/slope,maxval))'
[../]
[./density_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval'
symbol_values = '17.0 0 1000.0 0 2500'
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,maxval)'
[../]
[]
[UserObjects]
[./mc_coh_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 2.99 # MPa
value_residual = 3.01 # MPa
rate = 1.0
[../]
[./mc_fric]
type = SolidMechanicsHardeningConstant
value = 0.65 # 37deg
[../]
[./mc_dil]
type = SolidMechanicsHardeningConstant
value = 0.15 # 8deg
[../]
[./mc_tensile_str_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 1.0 # MPa
value_residual = 1.0 # MPa
rate = 1.0
[../]
[./mc_compressive_str]
type = SolidMechanicsHardeningCubic
value_0 = 100 # Large!
value_residual = 100
internal_limit = 0.1
[../]
[./wp_coh_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_tan_fric]
type = SolidMechanicsHardeningConstant
value = 0.36 # 20deg
[../]
[./wp_tan_dil]
type = SolidMechanicsHardeningConstant
value = 0.18 # 10deg
[../]
[./wp_tensile_str_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_compressive_str_soften]
type = SolidMechanicsHardeningCubic
value_0 = 100
value_residual = 1
internal_limit = 1.0
[../]
[]
[Materials]
[./elasticity_tensor_0]
type = ComputeLayeredCosseratElasticityTensor
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
[../]
[./elasticity_tensor_1]
type = ComputeLayeredCosseratElasticityTensor
block = 1
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
elasticity_tensor_prefactor = excav_sideways
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
eigenstrain_name = ini_stress
initial_stress = 'ini_xx 0 0 0 ini_xx 0 0 0 ini_zz'
[../]
[./stress_0]
type = ComputeMultipleInelasticCosseratStress
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
inelastic_models = 'mc wp'
cycle_models = true
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./stress_1]
type = ComputeMultipleInelasticCosseratStress
block = 1
inelastic_models = ''
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./mc]
type = CappedMohrCoulombCosseratStressUpdate
warn_about_precision_loss = false
host_youngs_modulus = 8E3
host_poissons_ratio = 0.25
base_name = mc
tensile_strength = mc_tensile_str_strong_harden
compressive_strength = mc_compressive_str
cohesion = mc_coh_strong_harden
friction_angle = mc_fric
dilation_angle = mc_dil
max_NR_iterations = 100000
smoothing_tol = 0.1 # MPa # Must be linked to cohesion
yield_function_tol = 1E-9 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[../]
[./wp]
type = CappedWeakPlaneCosseratStressUpdate
warn_about_precision_loss = false
base_name = wp
cohesion = wp_coh_harden
tan_friction_angle = wp_tan_fric
tan_dilation_angle = wp_tan_dil
tensile_strength = wp_tensile_str_harden
compressive_strength = wp_compressive_str_soften
max_NR_iterations = 10000
tip_smoother = 0.1
smoothing_tol = 0.1 # MPa # Note, this must be tied to cohesion, otherwise get no possible return at cone apex
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0E-3
[../]
[./density_0]
type = GenericConstantMaterial
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
prop_names = density
prop_values = 2500
[../]
[./density_1]
type = GenericFunctionMaterial
block = 1
prop_names = density
prop_values = density_sideways
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[./min_roof_disp]
type = NodalExtremeValue
boundary = roof
value_type = min
variable = disp_z
[../]
[./min_surface_disp]
type = NodalExtremeValue
boundary = zmax
value_type = min
variable = disp_z
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' bjacobi gmres 200'
line_search = bt
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_max_its = 30
nl_max_its = 1000
start_time = 0.0
dt = 0.5 # this gives min(disp_z)=-4.3, use dt=0.0625 if you want to restrict disp_z>=-3.2
end_time = 17.0
[]
[Outputs]
time_step_interval = 1
print_linear_residuals = false
exodus = true
csv = true
console = true
[]
(modules/solid_mechanics/test/tests/ad_action/two_block_no_action.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
# [Physics/SolidMechanics/QuasiStatic]
# [./block1]
# strain = FINITE
# add_variables = true
# #block = 1
# use_automatic_differentiation = true
# [../]
# [./block2]
# strain = SMALL
# add_variables = true
# block = 2
# use_automatic_differentiation = true
# [../]
# []
[Kernels]
[./disp_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./disp_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = ADRankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./block_1]
type = ADComputeFiniteStrain
block = 1
[../]
[./block_2]
type = ADComputeSmallStrain
block = 2
[../]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[./_elastic_stress2]
type = ADComputeLinearElasticStress
block = 2
[../]
[]
[BCs]
[./left]
type = DirichletBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[./top]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./right]
type = DirichletBC
boundary = 'right'
variable = disp_x
value = 0.01
[../]
[./bottom]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.01
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/mean_cap_TC/small_deform5.i)
# apply nonuniform stretch in x, y and z directions using
# Lame lambda = 0.7E7, Lame mu = 1.0E7,
# trial_stress(0, 0) = 2.9
# trial_stress(1, 1) = 10.9
# trial_stress(2, 2) = 14.9
# With tensile_strength = 2, decaying to zero at internal parameter = 4E-7
# via a Cubic, the algorithm should return to:
# internal parameter = 2.26829E-7
# trace(stress) = 0.799989 = tensile_strength
# stress(0, 0) = -6.4
# stress(1, 1) = 1.6
# stress(2, 2) = 5.6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = SolidMechanicsHardeningCubic
value_0 = 2
value_residual = 0
internal_limit = 4E-7
[../]
[./compressive_strength]
type = SolidMechanicsHardeningCubic
value_0 = -1
value_residual = 0
internal_limit = 1E-8
[../]
[./cap]
type = SolidMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-11
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform5
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/special/patch.i)
[Mesh]
[base]
type = FileMeshGenerator
file = 'patch.xda'
[]
[sets]
input = base
type = SideSetsFromPointsGenerator
new_boundary = 'left right bottom top back front'
points = ' 0 0.5 0.5
1 0.5 0.5
0.5 0.0 0.5
'
' 0.5 1.0 0.5
0.5 0.5 0.0
0.5 0.5 1.0'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
base_name = "whatever"
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[BCs]
[left]
type = DirichletBC
preset = true
variable = disp_x
boundary = left
value = 0.0
[]
[bottom]
type = DirichletBC
preset = true
variable = disp_y
boundary = bottom
value = 0.0
[]
[back]
type = DirichletBC
preset = true
variable = disp_z
boundary = back
value = 0.0
[]
[front]
type = DirichletBC
preset = true
variable = disp_z
boundary = front
value = 0.1
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
elasticity_tensor = whatever_elasticity_tensor
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 1
solve_type = 'newton'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
end_time = 1
dtmin = 1.0
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/visco/gen_kv_creep.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./axial_load]
type = NeumannBC
variable = disp_x
boundary = right
value = 10e6
[../]
[]
[Materials]
[./kelvin_voigt]
type = GeneralizedKelvinVoigtModel
creep_modulus = '10e9 10e9'
creep_viscosity = '1 10'
poisson_ratio = 0.2
young_modulus = 10e9
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = kelvin_voigt
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 100
l_tol = 1e-8
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = gen_kv_creep_out
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/orthotropic_rotation_Cijkl.i)
# This test is designed to test the correct application of the Euler angle
# rotations to the elasticity tensor. The test uses values for the nine C_ijkl
# entries that correspond to the engineering notation placement:
# e.g. C11 = 11e3, c12 = 12e3, c13 = 13e3, c22 = 22e3 ..... c66 = 66e3
#
# A rotation of (0, 90, 0) is applied to the 1x1x1 cube, such that the values of
# c12 and c13 switch, c22 and c33 switch, and c55 and c66 switch. Postprocessors
# are used to verify this switch (made simple with the value convention above)
# and to verify that the unrotated components along the x-axis remain constant.
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./lage_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./lage_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./pk2_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./lage_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./c11]
order = CONSTANT
family = MONOMIAL
[../]
[./c12]
order = CONSTANT
family = MONOMIAL
[../]
[./c13]
order = CONSTANT
family = MONOMIAL
[../]
[./c22]
order = CONSTANT
family = MONOMIAL
[../]
[./c23]
order = CONSTANT
family = MONOMIAL
[../]
[./c33]
order = CONSTANT
family = MONOMIAL
[../]
[./c44]
order = CONSTANT
family = MONOMIAL
[../]
[./c55]
order = CONSTANT
family = MONOMIAL
[../]
[./c66]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
[../]
[]
[AuxKernels]
[./lage_xx]
type = RankTwoAux
rank_two_tensor = lage
variable = lage_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./lage_yy]
type = RankTwoAux
rank_two_tensor = lage
variable = lage_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./pk2_yy]
type = RankTwoAux
variable = pk2_yy
rank_two_tensor = pk2
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./lage_zz]
type = RankTwoAux
rank_two_tensor = lage
variable = lage_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = fp
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./c11]
type = RankFourAux
variable = c11
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 0
execute_on = timestep_end
[../]
[./c12]
type = RankFourAux
variable = c12
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 1
index_l = 1
execute_on = timestep_end
[../]
[./c13]
type = RankFourAux
variable = c13
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 2
index_l = 2
execute_on = timestep_end
[../]
[./c22]
type = RankFourAux
variable = c22
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 1
index_l = 1
execute_on = timestep_end
[../]
[./c23]
type = RankFourAux
variable = c23
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 2
index_l = 2
execute_on = timestep_end
[../]
[./c33]
type = RankFourAux
variable = c33
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 2
index_l = 2
execute_on = timestep_end
[../]
[./c44]
type = RankFourAux
variable = c44
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 2
index_k = 1
index_l = 2
execute_on = timestep_end
[../]
[./c55]
type = RankFourAux
variable = c55
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 0
index_k = 2
index_l = 0
execute_on = timestep_end
[../]
[./c66]
type = RankFourAux
variable = c66
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 1
index_k = 0
index_l = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
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'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '11e3 12e3 13e3 22e3 23e3 33e3 44e3 55e3 66e3'
fill_method = symmetric9
euler_angle_1 = 0.0
euler_angle_2 = 45.0
euler_angle_3 = 45.0
[../]
[]
[UserObjects]
[./slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
groups = '0 4 8 12'
group_values = '60.8 60.8 60.8' #strength units in MPa
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Postprocessors]
[./lage_xx]
type = ElementAverageValue
variable = lage_xx
[../]
[./pk2_yy]
type = ElementAverageValue
variable = pk2_yy
[../]
[./lage_yy]
type = ElementAverageValue
variable = lage_yy
[../]
[./lage_zz]
type = ElementAverageValue
variable = lage_zz
[../]
[./fp_yy]
type = ElementAverageValue
variable = fp_yy
[../]
[./c11]
type = ElementAverageValue
variable = c11
[../]
[./c12]
type = ElementAverageValue
variable = c12
[../]
[./c13]
type = ElementAverageValue
variable = c13
[../]
[./c22]
type = ElementAverageValue
variable = c22
[../]
[./c23]
type = ElementAverageValue
variable = c23
[../]
[./c33]
type = ElementAverageValue
variable = c33
[../]
[./c44]
type = ElementAverageValue
variable = c44
[../]
[./c55]
type = ElementAverageValue
variable = c55
[../]
[./c66]
type = ElementAverageValue
variable = c66
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-3
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 1 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
dtmax = 0.1
dtmin = 1.0e-3
dt = 0.05
end_time = 0.5
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/cross_material/correctness/plastic_j2.i)
# Simple 3D test
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 1
nz = 1
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[Kernels]
[sdx]
type = UpdatedLagrangianStressDivergence
variable = disp_x
component = 0
use_displaced_mesh = false
[]
[sdy]
type = UpdatedLagrangianStressDivergence
variable = disp_y
component = 1
use_displaced_mesh = false
[]
[sdz]
type = UpdatedLagrangianStressDivergence
variable = disp_z
component = 2
use_displaced_mesh = false
[]
[]
[Functions]
[pullx]
type = ParsedFunction
expression = 't'
[]
[]
[BCs]
[leftx]
type = DirichletBC
preset = true
boundary = left
variable = disp_x
value = 0.0
[]
[lefty]
type = DirichletBC
preset = true
boundary = bottom
variable = disp_y
value = 0.0
[]
[leftz]
type = DirichletBC
preset = true
boundary = back
variable = disp_z
value = 0.0
[]
[pull_x]
type = FunctionDirichletBC
boundary = right
variable = disp_x
function = pullx
[]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningPowerRule
value_0 = 100.0
epsilon0 = 0.1
exponent = 2.0
[../]
[./j2]
type = SolidMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
[]
[compute_stress]
type = ComputeLagrangianWrappedStress
[]
[compute_stress_base]
type = ComputeMultiPlasticityStress
plastic_models = j2
ep_plastic_tolerance = 1E-9
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[./strain]
type = ElementAverageValue
variable = strain_xx
[]
[./stress]
type = ElementAverageValue
variable = stress_xx
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.001
dtmin = 0.001
end_time = 0.05
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/jacobian/cto17.i)
# Jacobian check for nonlinear, multi-surface plasticity.
# Returns to the plane of the tensile yield surface
#
# Plasticity models:
# Tensile with strength = 1MPa softening to 0.5MPa in 2E-2 strain
#
# Lame lambda = 0.5GPa. Lame mu = 1GPa
#
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int0
index = 0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int1
index = 1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int2
index = 2
[../]
[]
[Postprocessors]
[./max_int0]
type = ElementExtremeValue
variable = int0
outputs = console
[../]
[./max_int1]
type = ElementExtremeValue
variable = int1
outputs = console
[../]
[./max_int2]
type = ElementExtremeValue
variable = int2
outputs = console
[../]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console' [../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console' [../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console' [../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console' [../]
[]
[UserObjects]
[./ts]
type = SolidMechanicsHardeningCubic
value_0 = 1
value_residual = 0.5
internal_limit = 2E-2
[../]
[./tensile]
type = SolidMechanicsPlasticTensileMulti
tensile_strength = ts
yield_function_tolerance = 1.0E-6 # Note larger value
shift = 1.0E-6 # Note larger value
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.5E3 1E3'
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '-1 0.1 0.2 0.1 15 -0.3 0.2 -0.3 0'
eigenstrain_name = ini_stress
[../]
[./multi]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1E-7
plastic_models = 'tensile'
max_NR_iterations = 5
deactivation_scheme = 'safe'
min_stepsize = 1
tangent_operator = nonlinear
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
#petsc_options = '-snes_test_display'
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_type'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000 test'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
[]
[Outputs]
file_base = cto17
exodus = false
[]
(modules/solid_mechanics/test/tests/volumetric_deform_grad/elastic_stress.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[../]
[]
[Materials]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./elastic_stress]
type = ComputeDeformGradBasedStress
deform_grad_name = deformation_gradient
elasticity_tensor_name = elasticity_tensor
stress_name = stress
jacobian_name = Jacobian_mult
block = 0
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '2.8e5 1.2e5 1.2e5 2.8e5 1.2e5 2.8e5 0.8e5 0.8e5 0.8e5'
fill_method = symmetric9
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.02
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
dtmax = 10.0
nl_rel_tol = 1e-10
dtmin = 0.02
num_steps = 10
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/planar_hard5.i)
# apply repeated stretches in z direction, and smaller stretches along the y direction, and compression along x direction
# Both return to the plane and edge (lode angle = 30deg, ie 010100) are experienced.
#
# It is checked that the yield functions are less than their tolerance values
# It is checked that the cohesion hardens correctly
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.05E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[Functions]
[./should_be_zero_fcn]
type = ParsedFunction
expression = 'if((a<1E-5)&(b<1E-5)&(c<1E-5)&(d<1E-5)&(g<1E-5)&(h<1E-5),0,abs(a)+abs(b)+abs(c)+abs(d)+abs(g)+abs(h))'
symbol_names = 'a b c d g h'
symbol_values = 'f0 f1 f2 f3 f4 f5'
[../]
[./coh_analytic]
type = ParsedFunction
expression = '20-10*exp(-1E6*intnl)'
symbol_names = intnl
symbol_values = internal
[../]
[./coh_from_yieldfcns]
type = ParsedFunction
expression = '(f0+f1-(sxx+syy)*sin(phi))/(-2)/cos(phi)'
symbol_names = 'f0 f1 sxx syy phi'
symbol_values = 'f0 f1 s_xx s_yy 0.8726646'
[../]
[./should_be_zero_coh]
type = ParsedFunction
expression = 'if(abs(a-b)<1E-6,0,1E6*abs(a-b))'
symbol_names = 'a b'
symbol_values = 'Coh_analytic Coh_moose'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn0]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn1]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn2]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn3]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn4]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn5]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn0]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn0
[../]
[./yield_fcn1]
type = MaterialStdVectorAux
index = 1
property = plastic_yield_function
variable = yield_fcn1
[../]
[./yield_fcn2]
type = MaterialStdVectorAux
index = 2
property = plastic_yield_function
variable = yield_fcn2
[../]
[./yield_fcn3]
type = MaterialStdVectorAux
index = 3
property = plastic_yield_function
variable = yield_fcn3
[../]
[./yield_fcn4]
type = MaterialStdVectorAux
index = 4
property = plastic_yield_function
variable = yield_fcn4
[../]
[./yield_fcn5]
type = MaterialStdVectorAux
index = 5
property = plastic_yield_function
variable = yield_fcn5
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = yield_fcn0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = yield_fcn1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = yield_fcn2
[../]
[./f3]
type = PointValue
point = '0 0 0'
variable = yield_fcn3
[../]
[./f4]
type = PointValue
point = '0 0 0'
variable = yield_fcn4
[../]
[./f5]
type = PointValue
point = '0 0 0'
variable = yield_fcn5
[../]
[./yfcns_should_be_zero]
type = FunctionValuePostprocessor
function = should_be_zero_fcn
[../]
[./Coh_analytic]
type = FunctionValuePostprocessor
function = coh_analytic
[../]
[./Coh_moose]
type = FunctionValuePostprocessor
function = coh_from_yieldfcns
[../]
[./cohesion_difference_should_be_zero]
type = FunctionValuePostprocessor
function = should_be_zero_coh
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningExponential
value_0 = 10
value_residual = 20
rate = 1E6
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 0.8726646
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 1 #0.8726646 # 50deg
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
use_custom_returnMap = true
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-12
plastic_models = mc
[../]
[]
[Executioner]
end_time = 5
dt = 1
type = Transient
[]
[Outputs]
file_base = planar_hard5
exodus = false
[./csv]
type = CSV
hide = 'f0 f1 f2 f3 f4 f5 s_xy s_xz s_yz Coh_analytic Coh_moose'
execute_on = 'timestep_end'
[../]
[]
(modules/combined/test/tests/concentration_dependent_elasticity_tensor/concentration_dependent_elasticity_tensor.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 20
ny = 20
xmin = -0.5
ymin = -0.5
xmax = 0.5
ymax = 0.5
elem_type = QUAD4
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
disp_x = disp_x
disp_y = disp_y
[../]
[]
[AuxVariables]
[./c]
[../]
[./C11_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./s11_aux]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./matl_s11]
type = RankTwoAux
variable = s11_aux
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./matl_C11]
type = RankFourAux
variable = C11_aux
rank_four_tensor = elasticity_tensor
index_l = 0
index_j = 0
index_k = 0
index_i = 0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeConcentrationDependentElasticityTensor
block = 0
c = c
C1_ijkl = '6 6'
C0_ijkl = '1 1'
fill_method1 = symmetric_isotropic
fill_method0 = symmetric_isotropic
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[./strain]
type = ComputeSmallStrain
block = 0
disp_x = disp_x
disp_y = disp_y
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = right
value = 0
[../]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.5
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 31'
l_max_its = 20
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-6
nl_abs_tol = 1.0e-8
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[]
[ICs]
[./c_IC]
int_width = 0.2
x1 = 0
y1 = 0
radius = 0.25
outvalue = 0
variable = c
invalue = 1
type = SmoothCircleIC
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/patch/large_patch.i)
[Mesh]
[base]
type = FileMeshGenerator
file = 'patch.xda'
[]
[sets]
input = base
type = SideSetsFromPointsGenerator
new_boundary = 'left right bottom top back front'
points = ' 0 0.5 0.5
1 0.5 0.5
0.5 0.0 0.5
'
' 0.5 1.0 0.5
0.5 0.5 0.0
0.5 0.5 1.0'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[sdx]
type = UpdatedLagrangianStressDivergence
variable = disp_x
displacements = 'disp_x disp_y disp_z'
component = 0
use_displaced_mesh = true
large_kinematics = true
[]
[sdy]
type = UpdatedLagrangianStressDivergence
variable = disp_y
displacements = 'disp_x disp_y disp_z'
component = 1
use_displaced_mesh = true
large_kinematics = true
[]
[sdz]
type = UpdatedLagrangianStressDivergence
variable = disp_z
displacements = 'disp_x disp_y disp_z'
component = 2
use_displaced_mesh = true
large_kinematics = true
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[BCs]
[left]
type = DirichletBC
preset = true
variable = disp_x
boundary = left
value = 0.0
[]
[bottom]
type = DirichletBC
preset = true
variable = disp_y
boundary = bottom
value = 0.0
[]
[back]
type = DirichletBC
preset = true
variable = disp_z
boundary = back
value = 0.0
[]
[front]
type = DirichletBC
preset = true
variable = disp_z
boundary = front
value = 0.1
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
large_kinematics = true
[]
[compute_strain]
type = ComputeLagrangianStrain
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 1
solve_type = 'newton'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
end_time = 1
dtmin = 1.0
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/examples/coal_mining/cosserat_mc_wp.i)
# Strata deformation and fracturing around a coal mine
#
# A 2D geometry is used that simulates a transverse section of
# the coal mine. The model is actually 3D, but the "x"
# dimension is only 10m long, meshed with 1 element, and
# there is no "x" displacement. The mine is 300m deep
# and just the roof is studied (0<=z<=300). The model sits
# between 0<=y<=450. The excavation sits in 0<=y<=150. This
# is a "half model": the boundary conditions are such that
# the model simulates an excavation sitting in -150<=y<=150
# inside a model of the region -450<=y<=450. The
# excavation height is 3m (ie, the excavation lies within
# 0<=z<=3). Mining is simulated by moving the excavation's
# roof down, until disp_z=-3 at t=1.
# Time is meaningless in this example
# as quasi-static solutions are sought at each timestep, but
# the number of timesteps controls the resolution of the
# process.
#
# The boundary conditions are:
# - disp_x = 0 everywhere
# - disp_y = 0 at y=0 and y=450
# - disp_z = 0 for y>150
# - disp_z = -3 at maximum, for 0<=y<=150. See excav function.
# That is, rollers on the sides, free at top, and prescribed at bottom.
#
# The small strain formulation is used.
#
# All stresses are measured in MPa. The initial stress is consistent with
# the weight force from density 2500 kg/m^3, ie, stress_zz = -0.025*(300-z) MPa
# where gravity = 10 m.s^-2 = 1E-5 MPa m^2/kg. The maximum and minimum
# principal horizontal stresses are assumed to be equal to 0.8*stress_zz.
#
# Material properties:
# Young's modulus = 8 GPa
# Poisson's ratio = 0.25
# Cosserat layer thickness = 1 m
# Cosserat-joint normal stiffness = large
# Cosserat-joint shear stiffness = 1 GPa
# MC cohesion = 3 MPa
# MC friction angle = 37 deg
# MC dilation angle = 8 deg
# MC tensile strength = 1 MPa
# MC compressive strength = 100 MPa, varying down to 1 MPa when tensile strain = 1
# WeakPlane cohesion = 0.1 MPa
# WeakPlane friction angle = 30 deg
# WeakPlane dilation angle = 10 deg
# WeakPlane tensile strength = 0.1 MPa
# WeakPlane compressive strength = 100 MPa softening to 1 MPa at strain = 1
#
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
xmin = -5
xmax = 5
nz = 40
zmin = 0
zmax = 400.0
bias_z = 1.1
ny = 30 # make this a multiple of 3, so y=150 is at a node
ymin = 0
ymax = 450
[]
[left]
type = SideSetsAroundSubdomainGenerator
new_boundary = 11
normal = '0 -1 0'
input = generated_mesh
[]
[right]
type = SideSetsAroundSubdomainGenerator
new_boundary = 12
normal = '0 1 0'
input = left
[]
[front]
type = SideSetsAroundSubdomainGenerator
new_boundary = 13
normal = '-1 0 0'
input = right
[]
[back]
type = SideSetsAroundSubdomainGenerator
new_boundary = 14
normal = '1 0 0'
input = front
[]
[top]
type = SideSetsAroundSubdomainGenerator
new_boundary = 15
normal = '0 0 1'
input = back
[]
[bottom]
type = SideSetsAroundSubdomainGenerator
new_boundary = 16
normal = '0 0 -1'
input = top
[]
[excav]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '-5 0 0'
top_right = '5 150 3'
input = bottom
[]
[roof]
type = SideSetsBetweenSubdomainsGenerator
new_boundary = 21
primary_block = 0
paired_block = 1
input = excav
[]
[hole]
type = BlockDeletionGenerator
block = 1
input = roof
[]
[]
[GlobalParams]
block = 0
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[]
[Kernels]
[./cy_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_x
component = 0
[../]
[./gravity]
type = Gravity
use_displaced_mesh = false
variable = disp_z
value = -10E-6
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_shear]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_internal_parameter
variable = mc_shear
[../]
[./mc_tensile]
type = MaterialStdVectorAux
index = 1
property = mc_plastic_internal_parameter
variable = mc_tensile
[../]
[./wp_shear]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_internal_parameter
variable = wp_shear
[../]
[./wp_tensile]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_internal_parameter
variable = wp_tensile
[../]
[./mc_shear_f]
type = MaterialStdVectorAux
index = 6
property = mc_plastic_yield_function
variable = mc_shear_f
[../]
[./mc_tensile_f]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_yield_function
variable = mc_tensile_f
[../]
[./wp_shear_f]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_yield_function
variable = wp_shear_f
[../]
[./wp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_yield_function
variable = wp_tensile_f
[../]
[]
[BCs]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = '11 12 16 21' # note addition of 16 and 21
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = '16'
value = 0.0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = '11 12'
value = 0.0
[../]
[./roof]
type = FunctionDirichletBC
variable = disp_z
boundary = 21
function = excav_sideways
[../]
[]
[Functions]
[./ini_xx]
type = ParsedFunction
expression = '-0.8*2500*10E-6*(400-z)'
[../]
[./ini_zz]
type = ParsedFunction
expression = '-2500*10E-6*(400-z)'
[../]
[./excav_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax e_h closure_dist'
symbol_values = '1.0 0 150.0 -3.0 15.0'
expression = 'e_h*max(min((min(t/end_t,1)*(ymax-ymin)+ymin-y)/closure_dist,1),0)'
[../]
[./excav_downwards]
type = ParsedFunction
symbol_names = 'end_t ymin ymax e_h closure_dist'
symbol_values = '1.0 0 150.0 -3.0 15.0'
expression = 'e_h*min(t/end_t,1)*max(min(((ymax-ymin)+ymin-y)/closure_dist,1),0)'
[../]
[]
[UserObjects]
[./mc_coh_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 2.99 # MPa
value_residual = 3.01 # MPa
rate = 1.0
[../]
[./mc_fric]
type = SolidMechanicsHardeningConstant
value = 0.65 # 37deg
[../]
[./mc_dil]
type = SolidMechanicsHardeningConstant
value = 0.15 # 8deg
[../]
[./mc_tensile_str_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 1.0 # MPa
value_residual = 1.0 # MPa
rate = 1.0
[../]
[./mc_compressive_str]
type = SolidMechanicsHardeningCubic
value_0 = 100 # Large!
value_residual = 100
internal_limit = 0.1
[../]
[./wp_coh_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_tan_fric]
type = SolidMechanicsHardeningConstant
value = 0.36 # 20deg
[../]
[./wp_tan_dil]
type = SolidMechanicsHardeningConstant
value = 0.18 # 10deg
[../]
[./wp_tensile_str_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_compressive_str_soften]
type = SolidMechanicsHardeningCubic
value_0 = 100
value_residual = 1
internal_limit = 1.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = 'ini_xx 0 0 0 ini_xx 0 0 0 ini_zz'
eigenstrain_name = ini_stress
[../]
[./stress]
type = ComputeMultipleInelasticCosseratStress
block = 0
inelastic_models = 'mc wp'
cycle_models = true
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./mc]
type = CappedMohrCoulombCosseratStressUpdate
block = 0
warn_about_precision_loss = false
host_youngs_modulus = 8E3
host_poissons_ratio = 0.25
base_name = mc
tensile_strength = mc_tensile_str_strong_harden
compressive_strength = mc_compressive_str
cohesion = mc_coh_strong_harden
friction_angle = mc_fric
dilation_angle = mc_dil
max_NR_iterations = 10000
smoothing_tol = 0.1 # MPa # Must be linked to cohesion
yield_function_tol = 1E-9 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[../]
[./wp]
type = CappedWeakPlaneCosseratStressUpdate
block = 0
warn_about_precision_loss = false
base_name = wp
cohesion = wp_coh_harden
tan_friction_angle = wp_tan_fric
tan_dilation_angle = wp_tan_dil
tensile_strength = wp_tensile_str_harden
compressive_strength = wp_compressive_str_soften
max_NR_iterations = 10000
tip_smoother = 0.1
smoothing_tol = 0.1 # MPa # Note, this must be tied to cohesion, otherwise get no possible return at cone apex
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[../]
[./density]
type = GenericConstantMaterial
prop_names = density
prop_values = 2500
[../]
[]
[Postprocessors]
[./subsidence]
type = PointValue
point = '0 0 400'
variable = disp_z
use_displaced_mesh = false
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
line_search = bt
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_max_its = 30
nl_max_its = 1000
start_time = 0.0
dt = 0.2
end_time = 0.2
[]
[Outputs]
file_base = cosserat_mc_wp
time_step_interval = 1
print_linear_residuals = false
csv = true
exodus = true
[./console]
type = Console
output_linear = false
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/special/area.i)
# Simple 3D test
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[AuxVariables]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[zstress]
type = PiecewiseLinear
x = '0 1'
y = '0 500'
[]
[constant]
type = ConstantFunction
value = 1.0
[]
[ratio]
type = ParsedFunction
symbol_names = 'sd su'
symbol_values = 's_def s_undef'
expression = 'sd / su'
[]
[]
[BCs]
[leftx]
type = DirichletBC
preset = true
boundary = left
variable = disp_x
value = 0.0
[]
[boty]
type = DirichletBC
preset = true
boundary = bottom
variable = disp_y
value = 0.0
[]
[backz]
type = DirichletBC
preset = true
boundary = back
variable = disp_z
value = 0.0
[]
[pull_z]
type = FunctionNeumannBC
boundary = front
variable = disp_z
function = zstress
[]
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[s_undef]
type = SideIntegralVariablePostprocessor
variable = stress_zz
boundary = front
[]
[s_def]
type = SideIntegralVariablePostprocessor
variable = stress_zz
boundary = front
use_displaced_mesh = true
[]
[area_calc]
type = FunctionValuePostprocessor
function = ratio
[]
[area]
type = AreaPostprocessor
boundary = front
use_displaced_mesh = true
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 1.0
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/global_strain/global_strain_uniaxial.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
[]
[cnode]
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 100
input = generated_mesh
[]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./u_z]
[../]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./s00]
order = CONSTANT
family = MONOMIAL
[../]
[./s11]
order = CONSTANT
family = MONOMIAL
[../]
[./e00]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 0
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_z]
type = GlobalDisplacementAux
variable = disp_z
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 2
[../]
[./s00]
type = RankTwoAux
variable = s00
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./e00]
type = RankTwoAux
variable = e00
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[../]
[./e11]
type = RankTwoAux
variable = e11
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[../]
[]
[GlobalParams]
displacements = 'u_x u_y u_z'
block = 0
[]
[Kernels]
[SolidMechanics]
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[BCs]
[./Periodic]
[./all]
auto_direction = 'x y z'
variable = ' u_x u_y u_z'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = u_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '70e9 0.33'
fill_method = symmetric_isotropic_E_nu
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalStrainUserObject
applied_stress_tensor = '5e9 0 0 0 0 0'
execute_on = 'Initial Linear Nonlinear'
[../]
[]
[Postprocessors]
[./l2err_e00]
type = ElementL2Error
variable = e00
function = 0.07142857 #strain_xx = C1111/sigma_xx
[../]
[./l2err_e11]
type = ElementL2Error
variable = e11
function = -0.07142857*0.33 #strain_yy = -nu*strain_xx
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
line_search = basic
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
l_max_its = 30
nl_max_its = 12
nl_rel_tol = 1.0e-10
start_time = 0.0
num_steps = 1
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/power_law_hardening/PowerLawHardening.i)
# This is a test of the isotropic power law hardening constitutive model.
# In this problem, a single Hex 8 element is fixed at the bottom and pulled at the top
# at a constant rate of 0.1.
# Before yield, stress = strain (=0.1*t) as youngs modulus is 1.0.
# The yield stress for this problem is 0.25 ( as strength coefficient is 0.5 and strain rate exponent is 0.5).
# Therefore, the material should start yielding at t = 2.5 seconds and then follow stress = K *pow(strain,n) or
# stress ~ 0.5*pow(0.1*t,0.5).
#
# This tensor mechanics version of the power law hardening plasticity model matches
# the solid mechanics version for this toy problem under exodiff limits
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
type = GeneratedMesh
dim = 3
[]
[AuxVariables]
[./total_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./top_pull]
type = ParsedFunction
expression = t*(0.1)
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
add_variables = true
strain = SMALL
incremental = true
generate_output = 'stress_yy'
[]
[]
[AuxKernels]
[./total_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yy
index_i = 1
index_j = 1
[../]
[]
[BCs]
[./y_pull_function]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = top_pull
[../]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./z_bot]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./power_law_hardening]
type = IsotropicPowerLawHardeningStressUpdate
strength_coefficient = 0.5 #K
strain_hardening_exponent = 0.5 #n
[../]
[./radial_return_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'power_law_hardening'
tangent_operator = elastic
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-ksp_snes_ew'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 5.0
dt = 0.25
[]
[Postprocessors]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./strain_yy]
type = ElementAverageValue
variable = total_strain_yy
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[]
(modules/combined/test/tests/multiphase_mechanics/multiphasestress.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 20
ny = 20
xmin = 0
xmax = 2
ymin = 0
ymax = 2
elem_type = QUAD4
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./eta1]
[./InitialCondition]
type = FunctionIC
function = 'x/2'
[../]
[../]
[./eta2]
[./InitialCondition]
type = FunctionIC
function = 'y/2'
[../]
[../]
[./eta3]
[./InitialCondition]
type = FunctionIC
function = '(2^0.5-(y-1)^2=(y-1)^2)/2'
[../]
[../]
[./e11_aux]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./matl_e11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = e11_aux
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[Materials]
[./elasticity_tensor_A]
type = ComputeElasticityTensor
base_name = A
fill_method = symmetric9
C_ijkl = '1e6 1e5 1e5 1e6 0 1e6 .4e6 .2e6 .5e6'
[../]
[./strain_A]
type = ComputeSmallStrain
base_name = A
eigenstrain_names = eigenstrain
[../]
[./stress_A]
type = ComputeLinearElasticStress
base_name = A
[../]
[./eigenstrain_A]
type = ComputeEigenstrain
base_name = A
eigen_base = '0.1 0.05 0 0 0 0.01'
prefactor = -1
eigenstrain_name = eigenstrain
[../]
[./elasticity_tensor_B]
type = ComputeElasticityTensor
base_name = B
fill_method = symmetric9
C_ijkl = '1e6 0 0 1e6 0 1e6 .5e6 .5e6 .5e6'
[../]
[./strain_B]
type = ComputeSmallStrain
base_name = B
eigenstrain_names = 'B_eigenstrain'
[../]
[./stress_B]
type = ComputeLinearElasticStress
base_name = B
[../]
[./eigenstrain_B]
type = ComputeEigenstrain
base_name = B
eigen_base = '0.1 0.05 0 0 0 0.01'
prefactor = -1
eigenstrain_name = 'B_eigenstrain'
[../]
[./elasticity_tensor_C]
type = ComputeElasticityTensor
base_name = C
fill_method = symmetric9
C_ijkl = '1.1e6 1e5 0 1e6 0 1e6 .5e6 .2e6 .5e6'
[../]
[./strain_C]
type = ComputeSmallStrain
base_name = C
eigenstrain_names = 'C_eigenstrain'
[../]
[./stress_C]
type = ComputeLinearElasticStress
base_name = C
[../]
[./eigenstrain_C]
type = ComputeEigenstrain
base_name = C
eigen_base = '0.1 0.05 0 0 0 0.01'
prefactor = -1
eigenstrain_name = 'C_eigenstrain'
[../]
[./switching_A]
type = SwitchingFunctionMaterial
function_name = h1
eta = eta1
[../]
[./switching_B]
type = SwitchingFunctionMaterial
function_name = h2
eta = eta2
[../]
[./switching_C]
type = SwitchingFunctionMaterial
function_name = h3
eta = eta3
[../]
[./combined]
type = MultiPhaseStressMaterial
phase_base = 'A B C'
h = 'h1 h2 h3'
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[]
(modules/solid_mechanics/test/tests/multi/three_surface04.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 0.8E-6m in y direction and 1.5E-6 in z direction.
# trial stress_yy = 0.8 and stress_zz = 1.5
#
# Then SimpleTester0 and SimpleTester2 should activate and the algorithm will return to
# the corner stress_yy=0.5, stress_zz=1
# internal0 should be 0.2, and internal2 should be 0.3
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.8E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.5E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface04
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/xfem/test/tests/bimaterials/inclusion_bimaterials_2d.i)
# This test is for a matrix-inclusion composite materials
# The global stress is determined by switching the stress based on level set values
# The inclusion geometry is marked by a level set function
# The matrix and inclusion are glued together
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./level_set_cut_uo]
type = LevelSetCutUserObject
level_set_var = ls
[../]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 11
ny = 11
xmin = 0.0
xmax = 5.
ymin = 0.0
ymax = 5.
elem_type = QUAD4
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./ls]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./ls_function]
type = FunctionAux
variable = ls
function = ls_func
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Functions]
[./ls_func]
type = ParsedFunction
expression = 'sqrt((y-2.5)*(y-2.5) + (x-2.5)*(x-2.5)) - 1.5'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[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_xy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[../]
[./a_strain_xx]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 0
variable = a_strain_xx
[../]
[./a_strain_yy]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 1
index_j = 1
variable = a_strain_yy
[../]
[./a_strain_xy]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 1
variable = a_strain_xy
[../]
[./b_strain_xx]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 0
variable = b_strain_xx
[../]
[./b_strain_yy]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 1
index_j = 1
variable = b_strain_yy
[../]
[./b_strain_xy]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 1
variable = b_strain_xy
[../]
[]
[Constraints]
[./dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[./dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
boundary = top
variable = disp_x
function = '0.03*t'
[../]
[./topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[../]
[]
[Materials]
[./elasticity_tensor_A]
type = ComputeIsotropicElasticityTensor
base_name = A
youngs_modulus = 1e9
poissons_ratio = 0.3
[../]
[./strain_A]
type = ComputeSmallStrain
base_name = A
[../]
[./stress_A]
type = ComputeLinearElasticStress
base_name = A
[../]
[./elasticity_tensor_B]
type = ComputeIsotropicElasticityTensor
base_name = B
youngs_modulus = 1e5
poissons_ratio = 0.3
[../]
[./strain_B]
type = ComputeSmallStrain
base_name = B
[../]
[./stress_B]
type = ComputeLinearElasticStress
base_name = B
[../]
[./combined_stress]
type = LevelSetBiMaterialRankTwo
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = stress
[../]
[./combined_dstressdstrain]
type = LevelSetBiMaterialRankFour
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = Jacobian_mult
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
# controls for linear iterations
l_max_its = 20
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-7
# time control
start_time = 0.0
dt = 0.5
end_time = 1.0
num_steps = 2
max_xfem_update = 1
[]
[Outputs]
exodus = true
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(modules/combined/test/tests/eigenstrain/composite.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[AuxVariables]
[./c]
[./InitialCondition]
type = FunctionIC
function = x
[../]
[../]
[./s11]
family = MONOMIAL
order = CONSTANT
[../]
[./s22]
family = MONOMIAL
order = CONSTANT
[../]
[./ds11]
family = MONOMIAL
order = CONSTANT
[../]
[./ds22]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = eigenstrain
index_i = 0
index_j = 0
[../]
[./s22]
type = RankTwoAux
variable = s22
rank_two_tensor = eigenstrain
index_i = 1
index_j = 1
[../]
[./ds11]
type = RankTwoAux
variable = ds11
rank_two_tensor = delastic_strain/dc
index_i = 0
index_j = 0
[../]
[./ds22]
type = RankTwoAux
variable = ds22
rank_two_tensor = delastic_strain/dc
index_i = 1
index_j = 1
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y'
eigenstrain_names = 'eigenstrain'
[../]
[./eigen1]
type = GenericConstantRankTwoTensor
tensor_values = '1 -1 0 0 0 0'
tensor_name = eigen1
[../]
[./eigen2]
type = GenericConstantRankTwoTensor
tensor_values = '-1 1 0 0 0 0'
tensor_name = eigen2
[../]
[./weight1]
type = DerivativeParsedMaterial
expression = 0.02*c^2
property_name = weight1
coupled_variables = c
[../]
[./weight2]
type = DerivativeParsedMaterial
expression = 0.02*(1-c)^2
property_name = weight2
coupled_variables = c
[../]
[./eigenstrain]
type = CompositeEigenstrain
tensors = 'eigen1 eigen2'
weights = 'weight1 weight2'
args = c
eigenstrain_name = eigenstrain
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[]
[Executioner]
type = Transient
num_steps = 1
[]
[Outputs]
exodus = true
execute_on = final
[]
(modules/solid_mechanics/test/tests/multi/two_surface03.i)
# Plasticit models:
# SimpleTester with a = 0 and b = 1 and strength = 1
# SimpleTester with a = 1 and b = 1 and strength = 2
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 3.0E-6m in z directions and 0.5E-6 in y direction.
# trial stress_zz = 3.0 and stress_yy = 0.5
#
# Then both SimpleTesters should activate initially and return to the "corner" point
# (stress_zz = 1 = stress_yy), but then the plastic multiplier for SimpleTester2 will
# be negative, and so it will be deactivated, and the algorithm will return to
# stress_zz = 1, stress_yy = 0.5
# internal0 should be 2, and internal1 should be 0
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.5E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '3E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[]
[UserObjects]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 2
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = two_surface03
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/multiphase_mechanics/simpleeigenstrain.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 25
ny = 25
xmax = 250
ymax = 250
elem_type = QUAD4
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./c]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = SmoothCircleIC
x1 = 125.0
y1 = 125.0
radius = 60.0
invalue = 1.0
outvalue = 0.1
int_width = 50.0
[../]
[../]
[./e11_aux]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_e11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = e11_aux
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.
[../]
[./left]
type = DirichletBC
boundary = left
variable = disp_x
value = 0.
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[Materials]
# This deprecated material is replaced by the materials below
#
#[./eigenstrain]
# type = SimpleEigenStrainMaterial
# block = 0
# epsilon0 = 0.05
# c = c
# disp_y = disp_y
# disp_x = disp_x
# C_ijkl = '3 1 1 3 1 3 1 1 1 '
# fill_method = symmetric9
#[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '3 1 1 3 1 3 1 1 1 '
[../]
[./strain]
type = ComputeSmallStrain
eigenstrain_names = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./prefactor]
type = DerivativeParsedMaterial
coupled_variables = c
property_name = prefactor
constant_names = 'epsilon0 c0'
constant_expressions = '0.05 0'
expression = '(c - c0) * epsilon0'
[../]
[./eigenstrain]
type = ComputeVariableEigenstrain
eigen_base = '1'
args = c
prefactor = prefactor
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-10
num_steps = 1
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/upper_twin_fraction_limit.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
elem_type = HEX8
[]
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_4]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = total_volume_fraction_twins
execute_on = timestep_end
[]
[slip_increment_4]
type = MaterialStdVectorAux
variable = slip_increment_4
property = slip_increment
index = 4
execute_on = timestep_end
[]
[slip_increment_10]
type = MaterialStdVectorAux
variable = slip_increment_10
property = slip_increment
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '5.0e-4*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.08e5 6.034e4 6.034e4 1.08e5 6.03e4 1.08e5 2.86e4 2.86e4 2.86e4' #Tallon and Wolfenden. J. Phys. Chem. Solids (1979)
fill_method = symmetric9
euler_angle_1 = 54.74
euler_angle_2 = 45.0
euler_angle_3 = 270.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_only_xtalpl'
tan_mod_type = exact
[]
[twin_only_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = 'fcc_input_twinning_systems.txt'
initial_twin_lattice_friction = 1.5
upper_limit_twin_volume_fraction = 1e-7
stol = 0.01
print_state_variable_convergence_error_messages = true
[]
[]
[Postprocessors]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[slip_increment_4]
type = ElementAverageValue
variable = slip_increment_4
[]
[slip_increment_10]
type = ElementAverageValue
variable = slip_increment_10
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 1e-5
end_time = 0.18
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/examples/coal_mining/cosserat_wp_only.i)
# Strata deformation and fracturing around a coal mine
#
# A 2D geometry is used that simulates a transverse section of
# the coal mine. The model is actually 3D, but the "x"
# dimension is only 10m long, meshed with 1 element, and
# there is no "x" displacement. The mine is 300m deep
# and just the roof is studied (0<=z<=300). The model sits
# between 0<=y<=450. The excavation sits in 0<=y<=150. This
# is a "half model": the boundary conditions are such that
# the model simulates an excavation sitting in -150<=y<=150
# inside a model of the region -450<=y<=450. The
# excavation height is 3m (ie, the excavation lies within
# 0<=z<=3). Mining is simulated by moving the excavation's
# roof down, until disp_z=-3 at t=1.
# Time is meaningless in this example
# as quasi-static solutions are sought at each timestep, but
# the number of timesteps controls the resolution of the
# process.
#
# The boundary conditions are:
# - disp_x = 0 everywhere
# - disp_y = 0 at y=0 and y=450
# - disp_z = 0 for y>150
# - disp_z = -3 at maximum, for 0<=y<=150. See excav function.
# That is, rollers on the sides, free at top, and prescribed at bottom.
#
# The small strain formulation is used.
#
# All stresses are measured in MPa. The initial stress is consistent with
# the weight force from density 2500 kg/m^3, ie, stress_zz = -0.025*(300-z) MPa
# where gravity = 10 m.s^-2 = 1E-5 MPa m^2/kg. The maximum and minimum
# principal horizontal stresses are assumed to be equal to 0.8*stress_zz.
#
# Below you will see Drucker-Prager parameters and AuxVariables, etc.
# These are not actally used in this example.
#
# Material properties:
# Young's modulus = 8 GPa
# Poisson's ratio = 0.25
# Cosserat layer thickness = 1 m
# Cosserat-joint normal stiffness = large
# Cosserat-joint shear stiffness = 1 GPa
# Weak-plane cohesion = 0.1 MPa
# Weak-plane friction angle = 20 deg
# Weak-plane dilation angle = 10 deg
# Weak-plane tensile strength = 0.1 MPa
# Weak-plane compressive strength = 100 MPa, varying down to 1 MPa when tensile strain = 1
#
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
xmin = -5
xmax = 5
nz = 40
zmin = 0
zmax = 400
bias_z = 1.1
ny = 30 # make this a multiple of 3, so y=150 is at a node
ymin = 0
ymax = 450
[]
[left]
type = SideSetsAroundSubdomainGenerator
new_boundary = 11
normal = '0 -1 0'
input = generated_mesh
[]
[right]
type = SideSetsAroundSubdomainGenerator
new_boundary = 12
normal = '0 1 0'
input = left
[]
[front]
type = SideSetsAroundSubdomainGenerator
new_boundary = 13
normal = '-1 0 0'
input = right
[]
[back]
type = SideSetsAroundSubdomainGenerator
new_boundary = 14
normal = '1 0 0'
input = front
[]
[top]
type = SideSetsAroundSubdomainGenerator
new_boundary = 15
normal = '0 0 1'
input = back
[]
[bottom]
type = SideSetsAroundSubdomainGenerator
new_boundary = 16
normal = '0 0 -1'
input = top
[]
[excav]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '-5 0 0'
top_right = '5 150 3'
input = bottom
[]
[roof]
type = SideSetsBetweenSubdomainsGenerator
new_boundary = 21
primary_block = 0
paired_block = 1
input = excav
[]
[hole]
type = BlockDeletionGenerator
block = 1
input = roof
[]
[]
[GlobalParams]
block = 0
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[]
[Kernels]
[./cy_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_x
component = 0
[../]
[./gravity]
type = Gravity
use_displaced_mesh = false
variable = disp_z
value = -10E-6
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./dp_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./dp_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[./dp_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./dp_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./dp_shear]
type = MaterialStdVectorAux
index = 0
property = dp_plastic_internal_parameter
variable = dp_shear
[../]
[./dp_tensile]
type = MaterialStdVectorAux
index = 1
property = dp_plastic_internal_parameter
variable = dp_tensile
[../]
[./wp_shear]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_internal_parameter
variable = wp_shear
[../]
[./wp_tensile]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_internal_parameter
variable = wp_tensile
[../]
[./dp_shear_f]
type = MaterialStdVectorAux
index = 0
property = dp_plastic_yield_function
variable = dp_shear_f
[../]
[./dp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = dp_plastic_yield_function
variable = dp_tensile_f
[../]
[./wp_shear_f]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_yield_function
variable = wp_shear_f
[../]
[./wp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_yield_function
variable = wp_tensile_f
[../]
[]
[BCs]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = '11 12 16 21' # note addition of 16 and 21
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = '16'
value = 0.0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = '11 12'
value = 0.0
[../]
[./roof]
type = FunctionDirichletBC
variable = disp_z
boundary = 21
function = excav_sideways
[../]
[]
[Functions]
[./ini_xx]
type = ParsedFunction
expression = '-0.8*2500*10E-6*(400-z)'
[../]
[./ini_zz]
type = ParsedFunction
expression = '-2500*10E-6*(400-z)'
[../]
[./excav_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax e_h closure_dist'
symbol_values = '1.0 0 150.0 -3.0 15.0'
expression = 'e_h*max(min((t/end_t*(ymax-ymin)+ymin-y)/closure_dist,1),0)'
[../]
[./excav_downwards]
type = ParsedFunction
symbol_names = 'end_t ymin ymax e_h closure_dist'
symbol_values = '1.0 0 150.0 -3.0 15.0'
expression = 'e_h*t/end_t*max(min(((ymax-ymin)+ymin-y)/closure_dist,1),0)'
[../]
[]
[UserObjects]
[./dp_coh_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 2.9 # MPa
value_residual = 3.1 # MPa
rate = 1.0
[../]
[./dp_fric]
type = SolidMechanicsHardeningConstant
value = 0.65 # 37deg
[../]
[./dp_dil]
type = SolidMechanicsHardeningConstant
value = 0.65
[../]
[./dp_tensile_str_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 1.0 # MPa
value_residual = 1.4 # MPa
rate = 1.0
[../]
[./dp_compressive_str]
type = SolidMechanicsHardeningConstant
value = 1.0E3 # Large!
[../]
[./drucker_prager_model]
type = SolidMechanicsPlasticDruckerPrager
mc_cohesion = dp_coh_strong_harden
mc_friction_angle = dp_fric
mc_dilation_angle = dp_dil
internal_constraint_tolerance = 1 # irrelevant here
yield_function_tolerance = 1 # irrelevant here
[../]
[./wp_coh_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_tan_fric]
type = SolidMechanicsHardeningConstant
value = 0.36 # 20deg
[../]
[./wp_tan_dil]
type = SolidMechanicsHardeningConstant
value = 0.18 # 10deg
[../]
[./wp_tensile_str_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_compressive_str_soften]
type = SolidMechanicsHardeningCubic
value_0 = 100
value_residual = 1.0
internal_limit = 1.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = 'ini_xx 0 0 0 ini_xx 0 0 0 ini_zz'
eigenstrain_name = ini_stress
[../]
[./stress]
type = ComputeMultipleInelasticCosseratStress
block = 0
inelastic_models = 'wp'
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./dp]
type = CappedDruckerPragerCosseratStressUpdate
block = 0
warn_about_precision_loss = false
host_youngs_modulus = 8E3
host_poissons_ratio = 0.25
base_name = dp
DP_model = drucker_prager_model
tensile_strength = dp_tensile_str_strong_harden
compressive_strength = dp_compressive_str
max_NR_iterations = 100000
tip_smoother = 0.1E1
smoothing_tol = 0.1E1 # MPa # Must be linked to cohesion
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[../]
[./wp]
type = CappedWeakPlaneCosseratStressUpdate
block = 0
warn_about_precision_loss = false
base_name = wp
cohesion = wp_coh_harden
tan_friction_angle = wp_tan_fric
tan_dilation_angle = wp_tan_dil
tensile_strength = wp_tensile_str_harden
compressive_strength = wp_compressive_str_soften
max_NR_iterations = 10000
tip_smoother = 0.1
smoothing_tol = 0.1 # MPa # Note, this must be tied to cohesion, otherwise get no possible return at cone apex
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0E-3
[../]
[./density]
type = GenericConstantMaterial
prop_names = density
prop_values = 2500
[../]
[]
[Postprocessors]
[./subsidence]
type = PointValue
point = '0 0 400'
variable = disp_z
use_displaced_mesh = false
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
line_search = bt
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_max_its = 30
nl_max_its = 1000
start_time = 0.0
dt = 0.2
end_time = 0.2
[]
[Outputs]
file_base = cosserat_wp_only
time_step_interval = 1
print_linear_residuals = false
csv = true
exodus = true
[./console]
type = Console
output_linear = false
[../]
[]
(modules/combined/test/tests/j2_plasticity_vs_LSH/j2_hard1_mod_small_strain.i)
# Test designed to compare results and active time between SH/LinearStrainHardening
# material vs TM j2 plastic user object. As number of elements increases, TM
# active time increases at a much higher rate than SM. Testing at 4x4x4
# (64 elements).
#
# plot vm_stress vs intnl to see constant hardening
#
# Original test located at:
# solid_mechanics/tests/j2_plasticity/hard1.i
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[]
[]
[AuxVariables]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[intnl]
order = CONSTANT
family = MONOMIAL
[]
[vm_stress]
order = CONSTANT
family = MONOMIAL
[]
[eq_pl_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[]
[eq_pl_strain]
type = RankTwoScalarAux
rank_two_tensor = plastic_strain
scalar_type = EffectiveStrain
variable = eq_pl_strain
[]
[vm_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
scalar_type = VonMisesStress
variable = vm_stress
[]
[]
[BCs]
[left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[z]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = 't/60'
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningConstant
value = 2.4e2
[]
[j2]
type = TensorMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
#with E = 2.1e5 and nu = 0.3
#Hooke's law: E-nu to Lambda-G
C_ijkl = '121154 80769.2'
[]
[strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[]
[mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = j2
tangent_operator = elastic
perform_finite_strain_rotations = false
[]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
l_tol = 1e-4
start_time = 0.0
end_time = 0.5
dt = 0.01
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[intnl]
type = ElementAverageValue
variable = intnl
[]
[eq_pl_strain]
type = PointValue
point = '0 0 0'
variable = eq_pl_strain
[]
[vm_stress]
type = PointValue
point = '0 0 0'
variable = vm_stress
[]
[]
[Outputs]
csv = true
print_linear_residuals = false
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/linesearch.i)
[GlobalParams]
displacements = 'ux uy uz'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[gss]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[tdisp]
type = ParsedFunction
expression = 0.01*t
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[gss1]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 200
use_line_search = true
min_line_search_step_size = 0.01
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
resistance_tol = 0.01
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[gss]
type = ElementAverageValue
variable = gss
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.02
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/material_limit_time_step/elas_plas/nafems_nl1_lim.i)
#
# Tests material model IsotropicPlasticity with material based time stepper
# Boundary conditions from NAFEMS test NL1
#
[GlobalParams]
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]#Comment
file = one_elem2.e
[] # Mesh
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[] # Variables
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_eff]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Kernels]
[SolidMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
[../]
[./plastic_strain_eff]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_yy
index_i = 1
index_j = 1
[../]
[] # AuxKernels
[Functions]
[./appl_dispx]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 0.0 0.0'
[../]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
y = '0.0 0.0 0.0 0.25e-4 0.50e-4 0.50e-4 0.50e-4 0.25e-4 0.0 '
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = appl_dispx
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
[../]
[./strain]
type = ComputePlaneFiniteStrain
block = 1
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'isoplas'
block = 1
[../]
[./isoplas]
type = IsotropicPlasticityStressUpdate
yield_stress = 5e6
hardening_constant = 0.0
relative_tolerance = 1e-20
absolute_tolerance = 1e-8
max_inelastic_increment = 0.000001
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-4
l_max_its = 100
nl_max_its = 20
[./TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
time_t = '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0'
time_dt = '0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1'
optimal_iterations = 30
iteration_window = 9
growth_factor = 2.0
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
start_time = 0.0
num_steps = 1000
end_time = 8.0
[] # Executioner
[Postprocessors]
[./matl_ts_min]
type = MaterialTimeStepPostprocessor
[../]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./plas_strain_eff]
type = ElementAverageValue
variable = plastic_strain_eff
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
csv = true
[./console]
type = Console
output_linear = true
[../]
[] # Outputs
(modules/solid_mechanics/test/tests/multi/three_surface06.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 1.1E-6m in y direction and 1.0E-6 in z direction.
# trial stress_yy = 1.1 and stress_zz = 1.0
#
# Then SimpleTester1 and SimpleTester2 should activate and the algorithm will return to
# the corner stress_yy=1.0, stress_zz=0.5
# However, this will mean internal1 < 0, so SimpleTester1 will be deactivated and
# then the algorithm will return to
# stress_yy=0.8, stress_zz=0.7
# internal1 should be 0.0, and internal2 should be 0.3
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1.1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface06
exodus = false
[./csv]
type = CSV
[../]
[]
(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
[Physics/SolidMechanics/QuasiStatic]
[./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/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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_xy_3d_shear.i)
# This test simulates shear test. The shear load is applied in two directions.
#
# -------------------
# ANALYTICAL SOLUTION
# -------------------
# https://mooseframework.inl.gov/source/materials/HillCreepStressUpdate.html
# q = [F(S22-S33)^2 + G(S33-S11)^2 + H(S11-S22)^2 + 2L(S23)^2 + 2M(S13)^2 + 2N(S12)^2]^0.5
# S12 = 10 Pa and S23 = 10 Pa; other compoenents of stress are zero since it is a uniaxial test
# F=0.5 G=0.25 H=0.3866 L=1.6413 M=1.6413 N=1.2731 (as used in this test)
# Substituting the values of stress components and F, G, H, L, M and N we obtain
# q = 24.1429 Pa
#
# Equivalent_creep_strain_rate = A(q)^n (power law creep rate used in this test)
# Substituting A=1e-16 and n=9, and q as calculated above, we obtain
# Equivalent_creep_strain_rate = 2.7868e-4
#
# The 12 (xy) and 32 (zy) component of creep_strain_tensor is calculated as below
# creep_strain_tensor_12 = (Equivalent_creep_strain_rate / q) * 2.0 * N * S12 * time_increment
# creep_strain_tensor_32 = (Equivalent_creep_strain_rate / q) * 2.0 * L * S32 * time_increment
# Substituting the values and time_increment as 0.001 we obtain the analytical solution.
#
# MOOSE Analytical
# creep_strain_tensor_12 2.935999e-08 2.9390645e-08
# creep_strain_tensor_32 3.788000e-08 3.7890870e-08
#
# -----------------------------------------
# PYTHON SCRIPT FOR THE ANALYTICAL SOLUTION
# -----------------------------------------
# import math
# F=0.5; G=0.25; H=0.3866; L=1.6413; M=1.6413; N=1.2731
# S11=0; S22=0; S33=0; S23=10; S13=0; S12=10
# q = math.sqrt(F*(S22-S33)**2 + G*(S33-S11)**2 + H*(S11-S22)**2 + 2*L*(S23)**2 + 2*M*(S13)**2 + 2*N*(S12)**2)
# print(q)
# A=1e-16; n=9; time=0.0001
# equivalent_creep_strain_rate = A*(q**n)
# print(equivalent_creep_strain_rate)
# equivalent_creep_strain_rate_12=(equivalent_creep_strain_rate / q) * 2.0 * N * S12 * time
# equivalent_creep_strain_rate_32=(equivalent_creep_strain_rate / q) * 2.0 * L * S23 * time
# print(equivalent_creep_strain_rate_12)
# print(equivalent_creep_strain_rate_32)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 1.0
ymax = 1.0
zmax = 1.0
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_zy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_zy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zy
index_i = 2
index_j = 1
[]
[sigma_xy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[]
[sigma_zy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xy stress_xy elastic_strain_zy stress_zy'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_creep_two"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.25 0.3866 1.6413 1.6413 1.2731"
[]
[trial_creep_two]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
absolute_tolerance = 1e-20
relative_tolerance = 1e-20
# Force it to not use integration error
max_integration_error = 100.0
anisotropic_elasticity = true
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[shear_load_xy]
type = ADNeumannBC
variable = disp_x
boundary = top
value = 10
[]
[shear_load_zy]
type = ADNeumannBC
variable = disp_z
boundary = top
value = 10
[]
[no_disp_y_top]
type = ADDirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err'
petsc_options_value = 'lu superlu_dist 1e-5'
nl_rel_tol = 1.0e-14
nl_abs_tol = 1.0e-14
l_max_its = 10
num_steps = 5
dt = 1.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xy]
type = ElementAverageValue
variable = creep_strain_xy
execute_on = 'TIMESTEP_END'
[]
[elastic_strain_xy]
type = ElementAverageValue
variable = elastic_strain_xy
execute_on = 'TIMESTEP_END'
[]
[sigma_xy]
type = ElementAverageValue
variable = stress_xy
execute_on = 'TIMESTEP_END'
[]
[creep_strain_zy]
type = ElementAverageValue
variable = creep_strain_zy
execute_on = 'TIMESTEP_END'
[]
[elastic_strain_zy]
type = ElementAverageValue
variable = elastic_strain_zy
execute_on = 'TIMESTEP_END'
[]
[sigma_zy]
type = ElementAverageValue
variable = stress_zy
execute_on = 'TIMESTEP_END'
[]
[]
[Outputs]
csv = true
exodus = false
perf_graph = true
# unnecessary output variables
hide = 'matl_ts_min max_disp_x max_disp_y max_hydro dt num_lin num_nonlin'
[]
(modules/solid_mechanics/test/tests/j2_plasticity/solid_mechanics_j2plasticity.i)
[Mesh]
displacements = 'x_disp y_disp z_disp'
[generated_mesh]
type = GeneratedMeshGenerator
elem_type = HEX8
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 1.0
[]
[cnode]
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 6
input = generated_mesh
[]
[snode]
type = ExtraNodesetGenerator
coord = '1.0 0.0 0.0'
new_boundary = 7
input = cnode
[]
[]
[Variables]
[./x_disp]
order = FIRST
family = LAGRANGE
[../]
[./y_disp]
order = FIRST
family = LAGRANGE
[../]
[./z_disp]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'x_disp y_disp z_disp'
use_displaced_mesh = true
[../]
[]
[Materials]
[./fplastic]
type = FiniteStrainPlasticMaterial
block=0
yield_stress='0. 445. 0.05 610. 0.1 680. 0.38 810. 0.95 920. 2. 950.'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '2.827e5 1.21e5 1.21e5 2.827e5 1.21e5 2.827e5 0.808e5 0.808e5 0.808e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'x_disp y_disp z_disp'
[../]
[]
[Functions]
[./topfunc]
type = ParsedFunction
expression = 't'
[../]
[]
[BCs]
[./bottom3]
type = DirichletBC
variable = z_disp
boundary = 0
value = 0.0
[../]
[./top]
type = FunctionDirichletBC
variable = z_disp
boundary = 5
function = topfunc
[../]
[./corner1]
type = DirichletBC
variable = x_disp
boundary = 6
value = 0.0
[../]
[./corner2]
type = DirichletBC
variable = y_disp
boundary = 6
value = 0.0
[../]
[./corner3]
type = DirichletBC
variable = z_disp
boundary = 6
value = 0.0
[../]
[./side1]
type = DirichletBC
variable = y_disp
boundary = 7
value = 0.0
[../]
[./side2]
type = DirichletBC
variable = z_disp
boundary = 7
value = 0.0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./peeq]
order = CONSTANT
family = MONOMIAL
[../]
[./pe11]
order = CONSTANT
family = MONOMIAL
[../]
[./pe22]
order = CONSTANT
family = MONOMIAL
[../]
[./pe33]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./pe11]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = pe11
index_i = 0
index_j = 0
[../]
[./pe22]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = pe22
index_i = 1
index_j = 1
[../]
[./pe33]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = pe33
index_i = 2
index_j = 2
[../]
[./eqv_plastic_strain]
type = MaterialRealAux
property = eqv_plastic_strain
variable = peeq
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full=true
[../]
[]
[Executioner]
type = Transient
dt=0.1
dtmax=1
dtmin=0.1
end_time=1.0
nl_abs_tol = 1e-10
[]
[Outputs]
file_base = out
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/cyl_4/cyl4_mu_0_2_pen.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl4_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 1000
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 = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = cyl4_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 = cyl4_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x9 disp_y9 disp_x16 disp_y16 stress_yy stress_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
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/multi/two_surface02.i)
# Plasticit models:
# SimpleTester with a = 0 and b = 1 and strength = 1
# SimpleTester with a = 1 and b = 1 and strength = 2
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 1.5E-6m in the y z directions.
# trial stress_zz = 1.5 and stress_yy = 1.5
#
# Then both SimpleTesters should activate, and the final stress
# should have have stress_zz = 1 = stress_yy (ie, the "corner" point)
# the plastic strain for SimpleTester1 should be zero
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1.5E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.5E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[]
[UserObjects]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 2
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = two_surface02
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/planar3.i)
# apply repeated stretches in x z directions, and smaller stretches along the y direction,
# so that sigma_I = sigma_II,
# which means that lode angle = 30deg.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.25E-6*y*sin(t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[]
[UserObjects]
[./coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./phi]
type = SolidMechanicsHardeningConstant
value = 0.9
[../]
[./psi]
type = SolidMechanicsHardeningConstant
value = 0.1
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = coh
friction_angle = phi
dilation_angle = psi
yield_function_tolerance = 1E-8
shift = 1E-8
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
deactivation_scheme = safe
max_NR_iterations = 3
min_stepsize = 1
max_stepsize_for_dumb = 1
debug_fspb = crash
debug_jac_at_stress = '10 5 2 5 11 -1 2 -1 12'
debug_jac_at_pm = '1 1 1 1 1 1'
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6 1E-6 1E-6 1E-6 1E-6'
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = planar3
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/hoop_strain_comparison_coarse_zaxis.i)
# This test compares the hoop strain at two different elements in an internally
# pressurized cylinder with anisotropic plasticity: different yield condition
# for hoop and axial directions. The elements are located circumferentially
# apart but at same axial position. It is expected that due to pressurization
# hoop strains will develop with uniform magnitude along hoop direction. The
# test verifies that the plastic hoop strain is uniform in hoop direction.
# For 3D simulations with material properties oriented along the curved
# geometry such as cylinder or sphere, the stresses and strains are rotated to
# the local coordinate system from the global coordinate system. The plastic
# strain is calculated in the local coordinate system and then transformed to
# the global coordinate system. This test involves a 3D cylindrical geometry,
# and helps in indirectly verifying that this transformation of stresses and
# strains back and forth between the local and global coordinate system is
# correctly implemented.
[Mesh]
file = quarter_cylinder_coarse_zaxis.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[plasticity_strain_zz]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_zz
index_i = 2
index_j = 2
[]
[stress_zz]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[stress_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[push]
type = PiecewiseLinear
x = '0 1e2'
y = '0 200e6'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_zz elastic_strain_xx elastic_strain_yy stress_xx stress_yy stress_zz strain_zz plastic_strain_zz plastic_strain_xx plastic_strain_yy hoop_stress hoop_strain'
use_automatic_differentiation = true
add_variables = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 0 1'
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_z
secondary = top # boundary
penalty = 1.0e+10
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 200.0e9
poissons_ratio = 0.2
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "plasticity"
max_iterations = 50
absolute_tolerance = 1e-30 #1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
# hill_constants = "0.5 0.5 0.5 1.5 1.5 1.5"
hill_constants = "0.5 0.5 0.25 1.5 1.5 1.5"
[]
[plasticity]
type = ADHillElastoPlasticityStressUpdate
hardening_constant = 1.5e10
hardening_exponent = 1.0
yield_stress = 0.0 # 60e6
local_cylindrical_csys = true
axis = z
absolute_tolerance = 1e-15 # 1e-8
relative_tolerance = 1e-13 # 1e-15
internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-6
internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = x_face
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = y_face
value = 0.0
[]
[Pressure]
[Side1]
boundary = inner
function = push
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-12
nl_abs_tol = 1e-14
# nl_abs_tol = 1e-10
l_max_its = 90
nl_max_its = 30
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 0.1e-4
time_t = '0 6.23 10'
time_dt = '0.1 1.0e-2 1.0e-2'
[]
num_steps = 1
start_time = 0
end_time = 200.0
automatic_scaling = true
dtmax = 0.1e-4
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[hoop_strain_elementA]
type = ElementalVariableValue
elementid = 10
variable = hoop_strain
[]
[hoop_strain_elementB]
type = ElementalVariableValue
elementid = 4
variable = hoop_strain
[]
[hoop_strain_diff]
type = DifferencePostprocessor
value1 = hoop_strain_elementA
value2 = hoop_strain_elementB
[]
[]
[Outputs]
csv = true
exodus = false
perf_graph = true
[]
(modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_02_apply_stress.i)
# Beam bending.
# One end is clamped and the other end is subjected to a stress
# and micromechanical moment that will induce bending.
# The stress that will induce bending around the y axis is
# stress_xx = EAz
# This implies a micromechanical moment-stress of
# m_yx = (1/12)EAh^2 for joint_shear_stiffness=0.
# For joint_shear_stiffness!=0, the micromechanical moment-stress
# is
# m_yx = (1/12)EAa^2 G/(ak_s + G)
# All other stresses and moment stresses are assumed to be zero.
# With joint_shear_stiffness=0, and introducing D=-poisson*A, the
# nonzero strains are
# ep_xx = Az
# ep_yy = Dz
# ep_zz = Dz
# kappa_xy = -D
# kappa_yx = A
# This means the displacements are:
# u_x = Axz
# u_y = Dzy
# u_z = -(A/2)x^2 + (D/2)(z^2-y^2)
# wc_x = -Dy
# wc_y = Ax
# wc_z = 0
# This is bending of a bar around the y axis, in plane stress
# (stress_yy=0). Displacements at the left-hand (x=0) are applied
# according to the above formulae; wc_x and wc_y are applied throughout
# the bar; and stress_xx is applied at the right-hand end (x=10).
# The displacements are measured and
# compared with the above formulae.
# The test uses: E=1.2, poisson=0.3, A=1.11E-2, h=2, ks=0.1, so
# stress_xx = 1.332E-2*z
# m_yx = 0.2379E-2
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 1
nz = 10
xmin = 0
xmax = 10
ymin = -1
ymax = 1
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
#use_displaced_mesh = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./clamp_z]
type = FunctionDirichletBC
variable = disp_z
boundary = left
function = '-0.3*(z*z-y*y)/2.0*1.11E-2'
[../]
[./clamp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = left
function = '-0.3*z*y*1.11E-2'
[../]
[./clamp_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./end_stress]
type = FunctionNeumannBC
boundary = right
function = z*1.2*1.11E-2
variable = disp_x
[../]
[./fix_wc_x]
type = FunctionDirichletBC
variable = wc_x
boundary = 'left' # right top bottom front back'
function = '0.3*y*1.11E-2'
[../]
[./fix_wc_y]
type = FunctionDirichletBC
variable = wc_y
boundary = 'left' # right top bottom front back'
function = '1.11E-2*x'
[../]
[./end_moment]
type = VectorNeumannBC
boundary = right
variable = wc_y
vector_value = '2.3785714286E-3 0 0'
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./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_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xz
index_i = 0
index_j = 2
[../]
[./strain_yx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yx
index_i = 1
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yz
index_i = 1
index_j = 2
[../]
[./strain_zx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zx
index_i = 2
index_j = 0
[../]
[./strain_zy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zy
index_i = 2
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[./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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_y disp_z stress_xx stress_xy stress_xz stress_yx stress_yy stress_yz stress_zx stress_zy stress_zz wc_x wc_y wc_z couple_stress_xx couple_stress_xy couple_stress_xz couple_stress_yx couple_stress_yy couple_stress_yz couple_stress_zx couple_stress_zy couple_stress_zz'
start_point = '0 0 0.5'
end_point = '10 0 0.5'
num_points = 11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 1.2
poisson = 0.3
layer_thickness = 2.0
joint_normal_stiffness = 1E16
joint_shear_stiffness = 0.1
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol -ksp_max_it -sub_pc_factor_shift_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'gmres asm lu 1E-11 1E-11 10 1E-15 1E-10 100 NONZERO 2 100'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = beam_cosserat_02_apply_stress
exodus = true
csv = true
[]
(modules/combined/test/tests/stateful_mortar_constraints/stateful_mortar_npr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
[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'
[]
[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
[]
[]
[AuxVariables]
[stress_xx]
order = FIRST
family = MONOMIAL
block = 'plank block'
[]
[stress_yy]
order = FIRST
family = MONOMIAL
block = 'plank block'
[]
[stress_xx_recovered]
order = FIRST
family = LAGRANGE
block = 'plank block'
[]
[stress_yy_recovered]
order = FIRST
family = LAGRANGE
block = 'plank block'
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
block = 'plank block'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
block = 'plank block'
[]
[stress_xx_recovered]
type = NodalPatchRecoveryAux
variable = stress_xx_recovered
nodal_patch_recovery_uo = stress_xx_patch
execute_on = 'TIMESTEP_END'
block = 'plank block'
[]
[stress_yy_recovered]
type = NodalPatchRecoveryAux
variable = stress_yy_recovered
nodal_patch_recovery_uo = stress_yy_patch
execute_on = 'TIMESTEP_END'
block = 'plank block'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[action]
generate_output = 'stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = false
strain = FINITE
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[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
[]
[stress_xx_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '0 0'
execute_on = 'NONLINEAR TIMESTEP_END'
block = 'plank block'
[]
[stress_yy_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '1 1'
execute_on = 'NONLINEAR TIMESTEP_END'
block = 'plank block'
[]
[]
[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 = GapConductanceStatefulConstraint
variable = thermal_lm
secondary_variable = temp
k = 0.0001
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'
stateful_variable = stress_xx_recovered
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[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'
preset = false
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[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'
[]
[heat_plank]
type = HeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = HeatConductionMaterial
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 = 0.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[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
[]
[stress_xx_recovered]
type = ElementExtremeValue
variable = stress_xx_recovered
block = 'block'
value_type = max
[]
[stress_yy_recovered]
type = ElementExtremeValue
variable = stress_yy_recovered
block = 'block'
value_type = max
[]
[min_temperature]
type = ElementExtremeValue
variable = temp
block = 'plank'
value_type = min
[]
[]
[Outputs]
exodus = true
[out]
type = CSV
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/solid_mechanics/test/tests/action/two_block_base_name.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics/SolidMechanics/QuasiStatic]
# parameters that apply to all subblocks are specified at this level. They
# can be overwritten in the subblocks.
add_variables = true
strain = FINITE
generate_output = 'stress_xx'
# base_name can be specified inside or outside a block
base_name = 'block1'
[./block1]
# the `block` parameter is only valid insde a subblock.
block = 1
[../]
[./block2]
block = 2
# the `additional_generate_output` parameter is also only valid inside a
# subblock. Values specified here are appended to the `generate_output`
# parameter values.
additional_generate_output = 'strain_yy'
base_name = 'block2'
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
block = 1
rank_two_tensor = block1_stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = RankTwoAux
block = 2
rank_two_tensor = block2_total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor_1]
type = ComputeIsotropicElasticityTensor
block = 1
base_name = block1
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./elasticity_tensor_2]
type = ComputeIsotropicElasticityTensor
block = 2
base_name = block2
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress1]
type = ComputeFiniteStrainElasticStress
block = 1
base_name = block1
[../]
[./_elastic_stress2]
type = ComputeFiniteStrainElasticStress
block = 2
base_name = block2
[../]
[]
[BCs]
[./left]
type = DirichletBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[./top]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./right]
type = DirichletBC
boundary = 'right'
variable = disp_x
value = 0.01
[../]
[./bottom]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.01
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/dynamics/acceleration_bc/AccelerationBC_test.i)
# Test for Acceleration boundary condition
# This test contains one brick element which is fixed in the y and z direction.
# Base acceleration is applied in the x direction to all nodes on the bottom surface (y=0).
# The PresetAcceleration converts the given acceleration to a displacement
# using Newmark time integration. This displacement is then prescribed on the boundary.
#
# Result: The acceleration at the bottom node should be same as the input acceleration
# which is a triangular function with peak at t = 0.2 in this case. Width of the triangular function
# is 0.2 s.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25
gamma = 0.5
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 0
index_j = 1
[../]
[]
[Functions]
[./acceleration_bottom]
type = PiecewiseLinear
data_file = acceleration.csv
format = columns
[../]
[]
[BCs]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = top
value=0.0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
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
[../]
[./preset_accelertion]
type = PresetAcceleration
boundary = bottom
function = acceleration_bottom
variable = disp_x
beta = 0.25
acceleration = accel_x
velocity = vel_x
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '210e9 0'
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = '7750'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
start_time = 0
end_time = 2.0
dt = 0.01
dtmin = 0.01
nl_abs_tol = 1e-8
nl_rel_tol = 1e-8
l_tol = 1e-8
timestep_tolerance = 1e-8
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp]
type = NodalVariableValue
variable = disp_x
nodeid = 1
[../]
[./vel]
type = NodalVariableValue
variable = vel_x
nodeid = 1
[../]
[./accel]
type = NodalVariableValue
variable = accel_x
nodeid = 1
[../]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/porous_flow/examples/coal_mining/coarse_with_fluid.i)
# Strata deformation and fluid flow aaround a coal mine - 3D model
#
# A "half model" is used. The mine is 400m deep and
# just the roof is studied (-400<=z<=0). The mining panel
# sits between 0<=x<=150, and 0<=y<=1000, so this simulates
# a coal panel that is 300m wide and 1000m long. The outer boundaries
# are 1km from the excavation boundaries.
#
# The excavation takes 0.5 years.
#
# The boundary conditions for this simulation are:
# - disp_x = 0 at x=0 and x=1150
# - disp_y = 0 at y=-1000 and y=1000
# - disp_z = 0 at z=-400, but there is a time-dependent
# Young modulus that simulates excavation
# - wc_x = 0 at y=-1000 and y=1000
# - wc_y = 0 at x=0 and x=1150
# - no flow at x=0, z=-400 and z=0
# - fixed porepressure at y=-1000, y=1000 and x=1150
# That is, rollers on the sides, free at top,
# and prescribed at bottom in the unexcavated portion.
#
# A single-phase unsaturated fluid is used.
#
# The small strain formulation is used.
#
# All stresses are measured in MPa, and time units are measured in years.
#
# The initial porepressure is hydrostatic with P=0 at z=0, so
# Porepressure ~ - 0.01*z MPa, where the fluid has density 1E3 kg/m^3 and
# gravity = = 10 m.s^-2 = 1E-5 MPa m^2/kg.
# To be more accurate, i use
# Porepressure = -bulk * log(1 + g*rho0*z/bulk)
# where bulk=2E3 MPa and rho0=1Ee kg/m^3.
# The initial stress is consistent with the weight force from undrained
# density 2500 kg/m^3, and fluid porepressure, and a Biot coefficient of 0.7, ie,
# stress_zz^effective = 0.025*z + 0.7 * initial_porepressure
# The maximum and minimum principal horizontal effective stresses are
# assumed to be equal to 0.8*stress_zz.
#
# Material properties:
# Young's modulus = 8 GPa
# Poisson's ratio = 0.25
# Cosserat layer thickness = 1 m
# Cosserat-joint normal stiffness = large
# Cosserat-joint shear stiffness = 1 GPa
# MC cohesion = 2 MPa
# MC friction angle = 35 deg
# MC dilation angle = 8 deg
# MC tensile strength = 1 MPa
# MC compressive strength = 100 MPa
# WeakPlane cohesion = 0.1 MPa
# WeakPlane friction angle = 30 deg
# WeakPlane dilation angle = 10 deg
# WeakPlane tensile strength = 0.1 MPa
# WeakPlane compressive strength = 100 MPa softening to 1 MPa at strain = 1
# Fluid density at zero porepressure = 1E3 kg/m^3
# Fluid bulk modulus = 2E3 MPa
# Fluid viscosity = 1.1E-3 Pa.s = 1.1E-9 MPa.s = 3.5E-17 MPa.year
#
[GlobalParams]
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
PorousFlowDictator = dictator
biot_coefficient = 0.7
[]
[Mesh]
[file]
type = FileMeshGenerator
file = mesh/coarse.e
[]
[xmin]
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
new_boundary = xmin
normal = '-1 0 0'
input = file
[]
[xmax]
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
new_boundary = xmax
normal = '1 0 0'
input = xmin
[]
[ymin]
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
new_boundary = ymin
normal = '0 -1 0'
input = xmax
[]
[ymax]
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
new_boundary = ymax
normal = '0 1 0'
input = ymin
[]
[zmax]
type = SideSetsAroundSubdomainGenerator
block = 16
new_boundary = zmax
normal = '0 0 1'
input = ymax
[]
[zmin]
type = SideSetsAroundSubdomainGenerator
block = 2
new_boundary = zmin
normal = '0 0 -1'
input = zmax
[]
[excav]
type = SubdomainBoundingBoxGenerator
input = zmin
block_id = 1
bottom_left = '0 0 -400'
top_right = '150 1000 -397'
[]
[roof]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 3
paired_block = 1
input = excav
new_boundary = roof
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[wc_x]
[]
[wc_y]
[]
[porepressure]
scaling = 1E-5
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = ini_pp
[]
[]
[Kernels]
[cx_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_x
component = 0
[]
[cy_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_y
component = 1
[]
[cz_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_z
component = 2
[]
[x_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[]
[y_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[]
[x_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_x
component = 0
[]
[y_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_y
component = 1
[]
[gravity]
type = Gravity
use_displaced_mesh = false
variable = disp_z
value = -10E-6 # remember this is in MPa
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
use_displaced_mesh = false
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
use_displaced_mesh = false
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
use_displaced_mesh = false
component = 2
variable = disp_z
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[flux]
type = PorousFlowAdvectiveFlux
use_displaced_mesh = false
variable = porepressure
gravity = '0 0 -10E-6'
fluid_component = 0
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
variable = porepressure
fluid_component = 0
[]
[]
[AuxVariables]
[saturation]
order = CONSTANT
family = MONOMIAL
[]
[darcy_x]
order = CONSTANT
family = MONOMIAL
[]
[darcy_y]
order = CONSTANT
family = MONOMIAL
[]
[darcy_z]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[wc_z]
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zx]
order = CONSTANT
family = MONOMIAL
[]
[stress_zy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yx]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zx]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[perm_xx]
order = CONSTANT
family = MONOMIAL
[]
[perm_yy]
order = CONSTANT
family = MONOMIAL
[]
[perm_zz]
order = CONSTANT
family = MONOMIAL
[]
[mc_shear]
order = CONSTANT
family = MONOMIAL
[]
[mc_tensile]
order = CONSTANT
family = MONOMIAL
[]
[wp_shear]
order = CONSTANT
family = MONOMIAL
[]
[wp_tensile]
order = CONSTANT
family = MONOMIAL
[]
[wp_shear_f]
order = CONSTANT
family = MONOMIAL
[]
[wp_tensile_f]
order = CONSTANT
family = MONOMIAL
[]
[mc_shear_f]
order = CONSTANT
family = MONOMIAL
[]
[mc_tensile_f]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[saturation_water]
type = PorousFlowPropertyAux
variable = saturation
property = saturation
phase = 0
execute_on = timestep_end
[]
[darcy_x]
type = PorousFlowDarcyVelocityComponent
variable = darcy_x
gravity = '0 0 -10E-6'
component = x
[]
[darcy_y]
type = PorousFlowDarcyVelocityComponent
variable = darcy_y
gravity = '0 0 -10E-6'
component = y
[]
[darcy_z]
type = PorousFlowDarcyVelocityComponent
variable = darcy_z
gravity = '0 0 -10E-6'
component = z
[]
[porosity]
type = PorousFlowPropertyAux
property = porosity
variable = porosity
execute_on = timestep_end
[]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
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_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
execute_on = timestep_end
[]
[stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
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
[]
[total_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[total_strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[total_strain_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[total_strain_yx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yx
index_i = 1
index_j = 0
execute_on = timestep_end
[]
[total_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[total_strain_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[total_strain_zx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zx
index_i = 2
index_j = 0
execute_on = timestep_end
[]
[total_strain_zy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zy
index_i = 2
index_j = 1
execute_on = timestep_end
[]
[total_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[perm_xx]
type = PorousFlowPropertyAux
property = permeability
variable = perm_xx
row = 0
column = 0
execute_on = timestep_end
[]
[perm_yy]
type = PorousFlowPropertyAux
property = permeability
variable = perm_yy
row = 1
column = 1
execute_on = timestep_end
[]
[perm_zz]
type = PorousFlowPropertyAux
property = permeability
variable = perm_zz
row = 2
column = 2
execute_on = timestep_end
[]
[mc_shear]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_internal_parameter
variable = mc_shear
execute_on = timestep_end
[]
[mc_tensile]
type = MaterialStdVectorAux
index = 1
property = mc_plastic_internal_parameter
variable = mc_tensile
execute_on = timestep_end
[]
[wp_shear]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_internal_parameter
variable = wp_shear
execute_on = timestep_end
[]
[wp_tensile]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_internal_parameter
variable = wp_tensile
execute_on = timestep_end
[]
[mc_shear_f]
type = MaterialStdVectorAux
index = 6
property = mc_plastic_yield_function
variable = mc_shear_f
execute_on = timestep_end
[]
[mc_tensile_f]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_yield_function
variable = mc_tensile_f
execute_on = timestep_end
[]
[wp_shear_f]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_yield_function
variable = wp_shear_f
execute_on = timestep_end
[]
[wp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_yield_function
variable = wp_tensile_f
execute_on = timestep_end
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = 'xmin xmax'
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 'ymin ymax'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = zmin
value = 0.0
[]
[no_wc_x]
type = DirichletBC
variable = wc_x
boundary = 'ymin ymax'
value = 0.0
[]
[no_wc_y]
type = DirichletBC
variable = wc_y
boundary = 'xmin xmax'
value = 0.0
[]
[fix_porepressure]
type = FunctionDirichletBC
variable = porepressure
boundary = 'ymin ymax xmax'
function = ini_pp
[]
[roof_porepressure]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
pt_vals = '-1E3 1E3'
multipliers = '-1 1'
fluid_phase = 0
flux_function = roof_conductance
boundary = roof
[]
[roof_bcs]
type = StickyBC
variable = disp_z
min_value = -3.0
boundary = roof
[]
[]
[Functions]
[ini_pp]
type = ParsedFunction
symbol_names = 'bulk p0 g rho0'
symbol_values = '2E3 0.0 1E-5 1E3'
expression = '-bulk*log(exp(-p0/bulk)+g*rho0*z/bulk)'
[]
[ini_xx]
type = ParsedFunction
symbol_names = 'bulk p0 g rho0 biot'
symbol_values = '2E3 0.0 1E-5 1E3 0.7'
expression = '0.8*(2500*10E-6*z+biot*(-bulk*log(exp(-p0/bulk)+g*rho0*z/bulk)))'
[]
[ini_zz]
type = ParsedFunction
symbol_names = 'bulk p0 g rho0 biot'
symbol_values = '2E3 0.0 1E-5 1E3 0.7'
expression = '2500*10E-6*z+biot*(-bulk*log(exp(-p0/bulk)+g*rho0*z/bulk))'
[]
[excav_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval slope'
symbol_values = '0.5 0 1000.0 1E-9 1 60'
# excavation face at ymin+(ymax-ymin)*min(t/end_t,1)
# slope is the distance over which the modulus reduces from maxval to minval
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,if(y<ymin+(ymax-ymin)*min(t/end_t,1)+slope,minval+(maxval-minval)*(y-(ymin+(ymax-ymin)*min(t/end_t,1)))/slope,maxval))'
[]
[density_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval'
symbol_values = '0.5 0 1000.0 0 2500'
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,maxval)'
[]
[roof_conductance]
type = ParsedFunction
symbol_names = 'end_t ymin ymax maxval minval'
symbol_values = '0.5 0 1000.0 1E7 0'
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),maxval,minval)'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1 # MPa^-1
[]
[mc_coh_strong_harden]
type = TensorMechanicsHardeningExponential
value_0 = 1.99 # MPa
value_residual = 2.01 # MPa
rate = 1.0
[]
[mc_fric]
type = TensorMechanicsHardeningConstant
value = 0.61 # 35deg
[]
[mc_dil]
type = TensorMechanicsHardeningConstant
value = 0.15 # 8deg
[]
[mc_tensile_str_strong_harden]
type = TensorMechanicsHardeningExponential
value_0 = 1.0 # MPa
value_residual = 1.0 # MPa
rate = 1.0
[]
[mc_compressive_str]
type = TensorMechanicsHardeningCubic
value_0 = 100 # Large!
value_residual = 100
internal_limit = 0.1
[]
[wp_coh_harden]
type = TensorMechanicsHardeningCubic
value_0 = 0.05
value_residual = 0.05
internal_limit = 10
[]
[wp_tan_fric]
type = TensorMechanicsHardeningConstant
value = 0.26 # 15deg
[]
[wp_tan_dil]
type = TensorMechanicsHardeningConstant
value = 0.18 # 10deg
[]
[wp_tensile_str_harden]
type = TensorMechanicsHardeningCubic
value_0 = 0.05
value_residual = 0.05
internal_limit = 10
[]
[wp_compressive_str_soften]
type = TensorMechanicsHardeningCubic
value_0 = 100
value_residual = 1
internal_limit = 1.0
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E3
density0 = 1000
thermal_expansion = 0
viscosity = 3.5E-17
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity_bulk]
type = PorousFlowPorosity
fluid = true
mechanical = true
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
ensure_positive = true
porosity_zero = 0.02
solid_bulk = 5.3333E3
[]
[porosity_excav]
type = PorousFlowPorosityConst
block = 1
porosity = 1.0
[]
[permeability_bulk]
type = PorousFlowPermeabilityKozenyCarman
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
poroperm_function = kozeny_carman_phi0
k0 = 1E-15
phi0 = 0.02
n = 2
m = 2
[]
[permeability_excav]
type = PorousFlowPermeabilityConst
block = 1
permeability = '0 0 0 0 0 0 0 0 0'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 4
s_res = 0.4
sum_s_res = 0.4
phase = 0
[]
[elasticity_tensor_0]
type = ComputeLayeredCosseratElasticityTensor
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
[]
[elasticity_tensor_1]
type = ComputeLayeredCosseratElasticityTensor
block = 1
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
elasticity_tensor_prefactor = excav_sideways
[]
[strain]
type = ComputeCosseratIncrementalSmallStrain
eigenstrain_names = ini_stress
[]
[ini_stress]
type = ComputeEigenstrainFromInitialStress
eigenstrain_name = ini_stress
initial_stress = 'ini_xx 0 0 0 ini_xx 0 0 0 ini_zz'
[]
[stress_0]
type = ComputeMultipleInelasticCosseratStress
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
inelastic_models = 'mc wp'
cycle_models = true
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[]
[stress_1]
type = ComputeMultipleInelasticCosseratStress
block = 1
inelastic_models = ''
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[]
[mc]
type = CappedMohrCoulombCosseratStressUpdate
warn_about_precision_loss = false
host_youngs_modulus = 8E3
host_poissons_ratio = 0.25
base_name = mc
tensile_strength = mc_tensile_str_strong_harden
compressive_strength = mc_compressive_str
cohesion = mc_coh_strong_harden
friction_angle = mc_fric
dilation_angle = mc_dil
max_NR_iterations = 100000
smoothing_tol = 0.1 # MPa # Must be linked to cohesion
yield_function_tol = 1E-9 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[]
[wp]
type = CappedWeakPlaneCosseratStressUpdate
warn_about_precision_loss = false
base_name = wp
cohesion = wp_coh_harden
tan_friction_angle = wp_tan_fric
tan_dilation_angle = wp_tan_dil
tensile_strength = wp_tensile_str_harden
compressive_strength = wp_compressive_str_soften
max_NR_iterations = 10000
tip_smoother = 0.05
smoothing_tol = 0.05 # MPa # Note, this must be tied to cohesion, otherwise get no possible return at cone apex
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0E-3
[]
[undrained_density_0]
type = GenericConstantMaterial
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
prop_names = density
prop_values = 2500
[]
[undrained_density_1]
type = GenericFunctionMaterial
block = 1
prop_names = density
prop_values = density_sideways
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[min_roof_disp]
type = NodalExtremeValue
boundary = roof
value_type = min
variable = disp_z
[]
[min_roof_pp]
type = NodalExtremeValue
boundary = roof
value_type = min
variable = porepressure
[]
[min_surface_disp]
type = NodalExtremeValue
boundary = zmax
value_type = min
variable = disp_z
[]
[min_surface_pp]
type = NodalExtremeValue
boundary = zmax
value_type = min
variable = porepressure
[]
[max_perm_zz]
type = ElementExtremeValue
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16'
variable = perm_zz
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
# best overall
# petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
# petsc_options_value = ' lu mumps'
# best if you do not have mumps:
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
# best if you do not have mumps or superlu_dist:
#petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
#petsc_options_value = ' asm 2 lu gmres 200'
# very basic:
#petsc_options_iname = '-pc_type -ksp_type -ksp_gmres_restart'
#petsc_options_value = ' bjacobi gmres 200'
line_search = bt
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_max_its = 200
nl_max_its = 30
start_time = 0.0
dt = 0.014706
end_time = 0.014706 #0.5
[]
[Outputs]
time_step_interval = 1
print_linear_residuals = true
exodus = true
csv = true
console = true
[]
(modules/solid_mechanics/test/tests/multi/rock1.i)
# Plasticity models:
# Mohr-Coulomb with cohesion = 40MPa, friction angle = 35deg, dilation angle = 10deg
# Tensile with strength = 1MPa
# WeakPlaneShear with cohesion = 1MPa, friction angle = 25deg, dilation angle = 25deg
# WeakPlaneTensile with strength = 0.01MPa
#
# Lame lambda = 1GPa. Lame mu = 1.3GPa
#
# A line of elements is perturbed randomly, and return to the yield surface at each quadpoint is checked
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 1234
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 1234
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[ICs]
[./x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./f3]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int3]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./f3]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 3
variable = f3
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[./int3]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 3
variable = int3
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./raw_f0]
type = ElementExtremeValue
variable = f0
outputs = console
[../]
[./raw_f1]
type = ElementExtremeValue
variable = f1
outputs = console
[../]
[./raw_f2]
type = ElementExtremeValue
variable = f2
outputs = console
[../]
[./raw_f3]
type = ElementExtremeValue
variable = f3
outputs = console
[../]
[./iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./f0]
type = FunctionValuePostprocessor
function = should_be_zero0_fcn
[../]
[./f1]
type = FunctionValuePostprocessor
function = should_be_zero1_fcn
[../]
[./f2]
type = FunctionValuePostprocessor
function = should_be_zero2_fcn
[../]
[./f3]
type = FunctionValuePostprocessor
function = should_be_zero3_fcn
[../]
[]
[Functions]
[./should_be_zero0_fcn]
type = ParsedFunction
expression = 'if(a<1E-1,0,a)'
symbol_names = 'a'
symbol_values = 'raw_f0'
[../]
[./should_be_zero1_fcn]
type = ParsedFunction
expression = 'if(a<1E-1,0,a)'
symbol_names = 'a'
symbol_values = 'raw_f1'
[../]
[./should_be_zero2_fcn]
type = ParsedFunction
expression = 'if(a<1E-1,0,a)'
symbol_names = 'a'
symbol_values = 'raw_f2'
[../]
[./should_be_zero3_fcn]
type = ParsedFunction
expression = 'if(a<1E-1,0,a)'
symbol_names = 'a'
symbol_values = 'raw_f3'
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 4E7
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 10
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4E6
yield_function_tolerance = 1.0E-1
internal_constraint_tolerance = 1.0E-7
[../]
[./ts]
type = SolidMechanicsHardeningConstant
value = 1E6
[../]
[./tensile]
type = SolidMechanicsPlasticTensile
tensile_strength = ts
tensile_tip_smoother = 1E5
yield_function_tolerance = 1.0E-1
internal_constraint_tolerance = 1.0E-7
[../]
[./coh]
type = SolidMechanicsHardeningConstant
value = 1E6
[../]
[./tanphi]
type = SolidMechanicsHardeningConstant
value = 0.46630766
[../]
[./tanpsi]
type = SolidMechanicsHardeningConstant
value = 0.46630766
[../]
[./wps]
type = SolidMechanicsPlasticWeakPlaneShear
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
smoother = 1E5
yield_function_tolerance = 1.0E-1
internal_constraint_tolerance = 1.0E-7
[../]
[./str]
type = SolidMechanicsHardeningConstant
value = 0.01E6
[../]
[./wpt]
type = SolidMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1.0E-1
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1E9 1.3E9'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-7
plastic_models = 'mc tensile wps wpt'
deactivation_scheme = 'optimized_to_safe_to_dumb'
max_NR_iterations = 20
min_stepsize = 1E-4
max_stepsize_for_dumb = 1E-3
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1 1'
debug_jac_at_intnl = '1 1 1 1'
debug_stress_change = 1E1
debug_pm_change = '1E-6 1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = rock1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/convergence/sd-stress.i)
# 3D test with stress control
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = false
constraint_types = 'stress none none stress stress none stress stress stress'
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '3d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0
'
' 0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'left right bottom top back front'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[hvar]
family = SCALAR
order = SIXTH
[]
[]
[ICs]
[disp_x]
type = RandomIC
variable = disp_x
min = -0.1
max = 0.1
[]
[disp_y]
type = RandomIC
variable = disp_y
min = -0.1
max = 0.1
[]
[disp_z]
type = RandomIC
variable = disp_z
min = -0.1
max = 0.1
[]
[hvar]
type = ScalarConstantIC
variable = hvar
value = 0.1
[]
[]
[AuxVariables]
[sxx]
family = MONOMIAL
order = CONSTANT
[]
[syy]
family = MONOMIAL
order = CONSTANT
[]
[sxy]
family = MONOMIAL
order = CONSTANT
[]
[szz]
family = MONOMIAL
order = CONSTANT
[]
[syz]
family = MONOMIAL
order = CONSTANT
[]
[sxz]
family = MONOMIAL
order = CONSTANT
[]
[exx]
family = MONOMIAL
order = CONSTANT
[]
[eyy]
family = MONOMIAL
order = CONSTANT
[]
[exy]
family = MONOMIAL
order = CONSTANT
[]
[ezz]
family = MONOMIAL
order = CONSTANT
[]
[eyz]
family = MONOMIAL
order = CONSTANT
[]
[exz]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[sxx]
type = RankTwoAux
variable = sxx
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[syy]
type = RankTwoAux
variable = syy
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[sxy]
type = RankTwoAux
variable = sxy
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[zz]
type = RankTwoAux
variable = szz
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[syz]
type = RankTwoAux
variable = syz
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[sxz]
type = RankTwoAux
variable = sxz
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[exx]
type = RankTwoAux
variable = exx
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
[]
[eyy]
type = RankTwoAux
variable = eyy
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 1
[]
[exy]
type = RankTwoAux
variable = exy
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 1
[]
[ezz]
type = RankTwoAux
variable = ezz
rank_two_tensor = mechanical_strain
index_i = 2
index_j = 2
[]
[eyz]
type = RankTwoAux
variable = eyz
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 2
[]
[exz]
type = RankTwoAux
variable = exz
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 2
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
targets = 'stress11 stress12 stress22 stress13 stress23 stress33'
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[stress11]
type = ParsedFunction
expression = '4.0e2*t'
[]
[stress22]
type = ParsedFunction
expression = '-2.0e2*t'
[]
[stress33]
type = ParsedFunction
expression = '8.0e2*t'
[]
[stress23]
type = ParsedFunction
expression = '2.0e2*t'
[]
[stress13]
type = ParsedFunction
expression = '-7.0e2*t'
[]
[stress12]
type = ParsedFunction
expression = '1.0e2*t'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y z'
[]
[y]
variable = disp_y
auto_direction = 'x y z'
[]
[z]
variable = disp_z
auto_direction = 'x y z'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix_all"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix_all"
variable = disp_y
value = 0
[]
[fix1_z]
type = DirichletBC
boundary = "fix_all"
variable = disp_z
value = 0
[]
[fix2_x]
type = DirichletBC
boundary = "fix_xy"
variable = disp_x
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix_xy"
variable = disp_y
value = 0
[]
[fix3_z]
type = DirichletBC
boundary = "fix_z"
variable = disp_z
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[elastic_tensor_4]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 76000.0
poissons_ratio = 0.11
block = '4'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = sxx
execute_on = 'initial timestep_end'
[]
[syy]
type = ElementAverageValue
variable = syy
execute_on = 'initial timestep_end'
[]
[sxy]
type = ElementAverageValue
variable = sxy
execute_on = 'initial timestep_end'
[]
[szz]
type = ElementAverageValue
variable = szz
execute_on = 'initial timestep_end'
[]
[syz]
type = ElementAverageValue
variable = syz
execute_on = 'initial timestep_end'
[]
[sxz]
type = ElementAverageValue
variable = sxz
execute_on = 'initial timestep_end'
[]
[exx]
type = ElementAverageValue
variable = exx
execute_on = 'initial timestep_end'
[]
[eyy]
type = ElementAverageValue
variable = eyy
execute_on = 'initial timestep_end'
[]
[exy]
type = ElementAverageValue
variable = exy
execute_on = 'initial timestep_end'
[]
[ezz]
type = ElementAverageValue
variable = ezz
execute_on = 'initial timestep_end'
[]
[eyz]
type = ElementAverageValue
variable = eyz
execute_on = 'initial timestep_end'
[]
[exz]
type = ElementAverageValue
variable = exz
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 10
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 0.2
[]
[Outputs]
exodus = false
csv = false
[]
(modules/combined/test/tests/inelastic_strain/elas_plas/elas_plas_nl1_cycle.i)
#
# Test for effective strain calculation.
# Boundary conditions from NAFEMS test NL1
#
#
# This is not a verification test. The boundary conditions are applied such
# that the first step generates only elastic stresses. The rest of the load
# steps generate cycles of tension and compression in the axial (i.e., y-axis)
# direction. The axial stresses and strains also cycle, however the effective
# plastic strain increases in value throughout the analysis.
#
[GlobalParams]
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = one_elem2.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
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
[../]
[./plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./eff_plastic_strain]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[]
[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_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
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
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[./pressure]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = pressure
scalar_type = Hydrostatic
execute_on = timestep_end
[../]
[./elastic_strain_xx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./elastic_strain_zz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./plastic_strain_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./plastic_strain_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./plastic_strain_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./tot_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./tot_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./tot_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./eff_plastic_strain]
type = MaterialRealAux
property = effective_plastic_strain
variable = eff_plastic_strain
[../]
[]
[Functions]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0'
y = '0.0 0.208e-4 0.50e-4 1.00e-4 0.784e-4 0.50e-4 0.0 0.216e-4 0.5e-4 1.0e-4 0.785e-4 0.50e-4 0.0'
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
[../]
[./strain]
type = ComputePlaneFiniteStrain
block = 1
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'isoplas'
block = 1
[../]
[./isoplas]
type = IsotropicPlasticityStressUpdate
yield_stress = 5e6
hardening_constant = 0.0
relative_tolerance = 1e-20
absolute_tolerance = 1e-8
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-4
l_max_its = 100
nl_max_its = 20
dt = 1.0
start_time = 0.0
num_steps = 100
end_time = 12.0
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./stress_xy]
type = ElementAverageValue
variable = stress_xy
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./pressure]
type = ElementAverageValue
variable = pressure
[../]
[./el_strain_xx]
type = ElementAverageValue
variable = elastic_strain_xx
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./el_strain_zz]
type = ElementAverageValue
variable = elastic_strain_zz
[../]
[./pl_strain_xx]
type = ElementAverageValue
variable = plastic_strain_xx
[../]
[./pl_strain_yy]
type = ElementAverageValue
variable = plastic_strain_yy
[../]
[./pl_strain_zz]
type = ElementAverageValue
variable = plastic_strain_zz
[../]
[./eff_plastic_strain]
type = ElementAverageValue
variable = eff_plastic_strain
[../]
[./tot_strain_xx]
type = ElementAverageValue
variable = tot_strain_xx
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./tot_strain_zz]
type = ElementAverageValue
variable = tot_strain_zz
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/solid_mechanics/test/tests/multi/three_surface05.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 1E-6m in y direction and 1.1E-6 in z direction.
# trial stress_yy = 1 and stress_zz = 1.1
#
# Then SimpleTester0 and SimpleTester2 should activate and the algorithm will return to
# the corner stress_yy=0.5, stress_zz=1
# However, this will mean internal0 < 0, so SimpleTester0 will be deactivated and
# then the algorithm will return to
# stress_yy=0.7, stress_zz=0.8
# internal0 should be 0.0, and internal2 should be 0.3
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1.0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface05
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_3.i)
# SubApp with 2D model to test multi app vectorpostprocessor to aux var transfer
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 5
xmin = 0.0
xmax = 0.5
ymin = 0.0
ymax = 0.150080
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temp]
[../]
[./axial_strain]
order = FIRST
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(500.0)+300.0
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./axial_strain]
type = RankTwoAux
variable = axial_strain
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./axial_str]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0.0 0.0'
end_point = '0.5 0.150080 0.0'
variable = axial_strain
num_points = 21
sort_by = 'y'
[../]
[]
[Postprocessors]
[./end_disp]
type = PointValue
variable = disp_y
point = '0.5 0.150080 0.0'
[../]
[]
(modules/solid_mechanics/test/tests/action/two_block_new.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics/SolidMechanics/QuasiStatic]
# parameters that apply to all subblocks are specified at this level. They
# can be overwritten in the subblocks.
add_variables = true
strain = FINITE
generate_output = 'stress_xx'
[./block1]
# the `block` parameter is only valid insde a subblock.
block = 1
[../]
[./block2]
block = 2
# the `additional_generate_output` parameter is also only valid inside a
# subblock. Values specified here are appended to the `generate_output`
# parameter values.
additional_generate_output = 'strain_yy'
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress1]
type = ComputeFiniteStrainElasticStress
block = 1
[../]
[./_elastic_stress2]
type = ComputeFiniteStrainElasticStress
block = 2
[../]
[]
[BCs]
[./left]
type = DirichletBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[./top]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./right]
type = DirichletBC
boundary = 'right'
variable = disp_x
value = 0.01
[../]
[./bottom]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.01
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
(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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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/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/cyl_4/cyl4_template2.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl4_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 1000
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 = 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 stress_yy stress_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
tangential_tolerance = 1e-3
penalty = 1e+9
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/cp_slip_rate_integ/crysp_linesearch.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
[./disp_z]
block = 0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.0001*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCPSlipRateRes
block = 0
slip_sys_file_name = input_slip_sys.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.01 5 8 0.001 0.01 9 12 0.001 0.01'
hprops = '1.0 541.5 60.8 109.8 2.5'
gprops = '1 4 60.8 5 8 60.8 9 12 60.8'
tan_mod_type = exact
slip_incr_tol = 1
maximum_substep_iteration = 12
use_line_search = true
rtol = 1e-8
abs_tol = 1e-12
line_search_method = 'BISECTION'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 10
dtmin = 0.05
dtmax = 1e4
num_steps = 10
[]
[Outputs]
file_base = crysp_linesearch_out
exodus = true
print_linear_residuals = true
perf_graph = true
[]
(modules/xfem/test/tests/bimaterials/glued_ad_bimaterials_2d.i)
# This test is for two layer materials with different youngs modulus using AD
# The global stress is determined by switching the stress based on level set values
# The material interface is marked by a level set function
# The two layer materials are glued together
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./level_set_cut_uo]
type = LevelSetCutUserObject
level_set_var = ls
[../]
[]
[Mesh]
displacements = 'disp_x disp_y'
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 5
xmin = 0.0
xmax = 5.
ymin = 0.0
ymax = 5.
elem_type = QUAD4
[]
[./left_bottom]
type = ExtraNodesetGenerator
new_boundary = 'left_bottom'
coord = '0.0 0.0'
input = gen
[../]
[./left_top]
type = ExtraNodesetGenerator
new_boundary = 'left_top'
coord = '0.0 5.'
input = left_bottom
[../]
[]
[AuxVariables]
[./ls]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./ls_function]
type = FunctionAux
variable = ls
function = ls_func
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Functions]
[./ls_func]
type = ParsedFunction
expression = 'y-2.5'
[../]
[]
[AuxVariables]
[./a_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
use_automatic_differentiation = true
add_variables = true
generate_output = 'stress_xx stress_yy stress_xy'
[../]
[]
[AuxKernels]
[./a_strain_xx]
type = ADRankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 0
variable = a_strain_xx
[../]
[./a_strain_yy]
type = ADRankTwoAux
rank_two_tensor = A_total_strain
index_i = 1
index_j = 1
variable = a_strain_yy
[../]
[./a_strain_xy]
type = ADRankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 1
variable = a_strain_xy
[../]
[./b_strain_xx]
type = ADRankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 0
variable = b_strain_xx
[../]
[./b_strain_yy]
type = ADRankTwoAux
rank_two_tensor = B_total_strain
index_i = 1
index_j = 1
variable = b_strain_yy
[../]
[./b_strain_xy]
type = ADRankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 1
variable = b_strain_xy
[../]
[]
[Constraints]
[./dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[./dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[]
[BCs]
[./bottomx]
type = ADDirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = ADDirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = ADFunctionDirichletBC
boundary = top
variable = disp_x
function = 0.03*t
[../]
[./topy]
type = ADFunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[../]
[]
[Materials]
[./elasticity_tensor_A]
type = ADComputeIsotropicElasticityTensor
base_name = A
youngs_modulus = 1e9
poissons_ratio = 0.3
[../]
[./strain_A]
type = ADComputeSmallStrain
base_name = A
[../]
[./stress_A]
type = ADComputeLinearElasticStress
base_name = A
[../]
[./elasticity_tensor_B]
type = ADComputeIsotropicElasticityTensor
base_name = B
youngs_modulus = 1e5
poissons_ratio = 0.3
[../]
[./strain_B]
type = ADComputeSmallStrain
base_name = B
[../]
[./stress_B]
type = ADComputeLinearElasticStress
base_name = B
[../]
[./combined_stress]
type = ADLevelSetBiMaterialRankTwo
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = stress
[../]
[./combined_elasticity_tensor]
type = ADLevelSetBiMaterialRankFour
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = elasticity_tensor
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'bt'
# controls for linear iterations
l_max_its = 20
l_tol = 1e-8
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-50
# time control
start_time = 0.0
dt = 0.1
num_steps = 2
max_xfem_update = 1
[]
[Outputs]
exodus = true
file_base = glued_bimaterials_2d_out
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(modules/solid_mechanics/test/tests/generalized_plane_strain/out_of_plane_pressure.i)
# Tests for application of out-of-plane pressure in generalized plane strain.
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
displacements = 'disp_x disp_y'
[]
[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
[../]
[./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
[../]
[]
[Physics]
[SolidMechanics]
[./GeneralizedPlaneStrain]
[./gps]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
out_of_plane_pressure_function = traction_function
pressure_factor = 1e5
[../]
[../]
[../]
[]
[Kernels]
[SolidMechanics]
use_displaced_mesh = false
displacements = 'disp_x disp_y'
save_in = 'saved_x saved_y'
[../]
[]
[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 = 3
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
[../]
[./strain]
type = ComputePlaneSmallStrain
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
# This material is not used for anything in the base verison of this test,
# but is used in a variant of the test with cli_args
[./traction_material]
type = GenericFunctionMaterial
prop_names = traction_material
prop_values = traction_function
[../]
[]
[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/solid_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_newmark_material_dependent.i)
# Test for rayleigh damping implemented using Newmark time integration
# The test is for an 1D bar element of unit length fixed on one end
# with a ramped pressure boundary condition applied to the other end.
# zeta and eta correspond to the stiffness and mass proportional rayleigh damping
# beta and gamma are Newmark time integration parameters
# The equation of motion in terms of matrices is:
#
# M*accel + eta*M*vel + zeta*K*vel + K*disp = P*Area
#
# Here M is the mass matrix, K is the stiffness matrix, P is the applied pressure
#
# This equation is equivalent to:
#
# density*accel + eta*density*vel + zeta*d/dt(Div stress) + Div stress = P
#
# The first two terms on the left are evaluated using the Inertial force kernel
# The next two terms on the left involving zeta are evaluated using the
# DynamicStressDivergenceTensors Kernel
# The residual due to Pressure is evaluated using Pressure boundary condition
#
# The system will come to steady state slowly after the pressure becomes constant.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.1
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[DynamicSolidMechanics]
displacements = 'disp_x disp_y disp_z'
stiffness_damping_coefficient = 'zeta_rayleigh'
[]
[inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25
gamma = 0.5
eta = 'eta_rayleigh'
[]
[inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
eta = 'eta_rayleigh'
[]
[inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
eta = 'eta_rayleigh'
[]
[]
[AuxKernels]
[accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[]
[vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[]
[accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[]
[vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[]
[accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[]
[vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[BCs]
[top_y]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[]
[top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[Pressure]
[Side1]
boundary = bottom
function = pressure
displacements = 'disp_x disp_y disp_z'
factor = 1
[]
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '210e9 0'
[]
[strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[]
[stress]
type = ComputeLinearElasticStress
block = 0
[]
[density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '7750'
[]
[material_zeta]
type = GenericConstantMaterial
block = 0
prop_names = 'zeta_rayleigh'
prop_values = '0.1'
[]
[material_eta]
type = GenericConstantMaterial
block = 0
prop_names = 'eta_rayleigh'
prop_values = '0.1'
[]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dt = 0.1
[]
[Functions]
[pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.1 0.2 1.0 1.0 1.0'
scale_factor = 1e9
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[disp]
type = NodalExtremeValue
variable = disp_y
boundary = bottom
[]
[vel]
type = NodalExtremeValue
variable = vel_y
boundary = bottom
[]
[accel]
type = NodalExtremeValue
variable = accel_y
boundary = bottom
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
file_base = 'rayleigh_newmark_out'
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/karthik-eg-1.i)
[Mesh]
type = GeneratedMesh
elem_type = HEX8
dim = 3
nz = 10
xmax = 10
ymax = 10
zmax = 100
[]
[Variables]
[./x_disp]
block = 0
[../]
[./y_disp]
block = 0
[../]
[./z_disp]
block = 0
[../]
[]
[SolidMechanics]
[./solid]
# disp_x = x_disp
# disp_y = y_disp
# disp_z = z_disp
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Materials]
active = 'fcrysp'
[./felastic]
type = FiniteStrainElasticMaterial
block = 0
fill_method = symmetric9
disp_x = x_disp
disp_y = y_disp
disp_z = z_disp
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
[../]
[./fcrysp]
type = FiniteStrainCrystalPlasticity
block = 0
disp_y = y_disp
disp_x = x_disp
disp_z = z_disp
flowprops = '1 12 0.001 0.1'
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
nss = 12
hprops = '1.0 541.5 60.8 109.8'
gprops = '1 12 60.8'
fill_method = symmetric9
slip_sys_file_name = input_slip_sys.txt
[../]
[]
[Functions]
[./topdisp]
type = ParsedFunction
expression = 0.7*t
[../]
[./tpress]
type = ParsedFunction
expression = -200*t
[../]
[]
[BCs]
[./zbc]
type = DirichletBC
variable = z_disp
boundary = back
value = 0
[../]
[./ybc]
type = DirichletBC
variable = y_disp
boundary = bottom
value = 0
[../]
[./xbc]
type = DirichletBC
variable = x_disp
boundary = left
value = 0
[../]
[./zmove]
type = FunctionDirichletBC
variable = z_disp
boundary = front
function = topdisp
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 3
index_j = 3
execute_on = timestep_end
block = 0
[../]
[./e_zz]
type = RankTwoAux
rank_two_tensor = lage
variable = e_zz
index_i = 3
index_j = 3
execute_on = timestep_end
block = 0
[../]
[]
[Postprocessors]
[./szz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./ezz]
type = ElementAverageValue
variable = e_zz
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
num_steps = 1000
end_time = 1
dt = 0.02
dtmax = 0.02
dtmin = 0.02
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-08
nl_rel_step_tol = 1e-08
nl_abs_step_tol = 1e-08
abort_on_solve_fail = true
n_startup_steps = 0.0
[]
[Outputs]
file_base = out
exodus = true
csv = true
[]
(modules/contact/test/tests/verification/patch_tests/ring_2/ring2_mu_0_2_pen.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring2_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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-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 = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = ring2_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 = ring2_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
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial3_planar.i)
# same as uni_axial2 but with planar mohr-coulomb
[Mesh]
type = FileMesh
file = quarter_hole.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./zmin_zzero]
type = DirichletBC
variable = disp_z
boundary = 'zmin'
value = '0'
[../]
[./xmin_xzero]
type = DirichletBC
variable = disp_x
boundary = 'xmin'
value = '0'
[../]
[./ymin_yzero]
type = DirichletBC
variable = disp_y
boundary = 'ymin'
value = '0'
[../]
[./ymax_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'ymax'
function = '-1E-4*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0.005 0.02 0.002'
variable = yield_fcn
[../]
[]
[UserObjects]
[./coh]
type = SolidMechanicsHardeningConstant
value = 1E7
[../]
[./fric]
type = SolidMechanicsHardeningConstant
value = 40
convert_to_radians = true
[../]
[./dil]
type = SolidMechanicsHardeningConstant
value = 40
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = coh
friction_angle = fric
dilation_angle = dil
yield_function_tolerance = 1.0 # THIS IS HIGHER THAN THE SMOOTH CASE TO AVOID PRECISION-LOSS PROBLEMS!
shift = 1.0
use_custom_returnMap = false
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric_isotropic
C_ijkl = '0 5E9' # young = 10Gpa, poisson = 0.0
[../]
[./strain]
type = ComputeIncrementalStrain
block = 1
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 1
ep_plastic_tolerance = 1E-9
plastic_models = mc
max_NR_iterations = 100
deactivation_scheme = 'safe'
min_stepsize = 1
max_stepsize_for_dumb = 1
debug_fspb = crash
[../]
[]
# Preconditioning and Executioner options kindly provided by Andrea
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
end_time = 1.05
dt = 0.1
solve_type = NEWTON
type = Transient
[]
[Outputs]
file_base = uni_axial3_planar
[./exodus]
type = Exodus
hide = 'stress_xx stress_xy stress_xz stress_yy stress_yz stress_zz yield_fcn s_xx s_xy s_xz s_yy s_yz s_zz f'
[../]
[./csv]
type = CSV
time_step_interval = 1
[../]
[]
(modules/solid_mechanics/test/tests/action/two_block_lagrangian.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics/SolidMechanics/QuasiStatic]
new_system = true
[block1]
strain = FINITE
add_variables = true
block = 1
[]
[block2]
strain = SMALL
add_variables = true
block = 2
[]
[]
[AuxVariables]
[stress_theta]
order = CONSTANT
family = MONOMIAL
[]
[strain_theta]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[]
[strain_theta]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[]
[_elastic_stress1]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[_elastic_stress2]
type = ComputeLinearElasticStress
block = 2
[]
[stress]
type = ComputeLagrangianWrappedStress
[]
[]
[BCs]
[left]
type = DirichletBC
boundary = 'left'
variable = disp_x
value = 0.0
[]
[top]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[]
[right]
type = DirichletBC
boundary = 'right'
variable = disp_x
value = 0.01
[]
[bottom]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.01
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_parabolic.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX27
[]
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[linear_void_strain]
order = CONSTANT
family = MONOMIAL
[]
[e_total_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_total_yy]
order = CONSTANT
family = MONOMIAL
[]
[e_void_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_void_yy]
order = CONSTANT
family = MONOMIAL
[]
[e_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[pk2_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[Functions]
[temperature_ramp]
type = ParsedFunction
expression = '600.0 + t'
[]
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = 'temperature_ramp'
execute_on = timestep_begin
[]
[linear_void_strain]
type = MaterialRealAux
variable = linear_void_strain
property = equivalent_linear_change
execute_on = timestep_end
[]
[e_total_xx]
type = RankTwoAux
variable = e_total_xx
rank_two_tensor = total_lagrangian_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_total_yy]
type = RankTwoAux
variable = e_total_yy
rank_two_tensor = total_lagrangian_strain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[e_void_xx]
type = RankTwoAux
variable = e_void_xx
rank_two_tensor = void_eigenstrain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_void_yy]
type = RankTwoAux
variable = e_void_yy
rank_two_tensor = void_eigenstrain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[e_void_zz]
type = RankTwoAux
variable = e_void_zz
rank_two_tensor = void_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f_void_zz]
type = RankTwoAux
variable = f_void_zz
rank_two_tensor = volumetric_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[pk2_zz]
type = RankTwoAux
variable = pk2_zz
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[hold_front]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.98e5 1.25e5 1.25e5 1.98e5 1.25e5 1.98e5 1.22e5 1.22e5 1.22e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = void_eigenstrain
tan_mod_type = exact
line_search_method = CUT_HALF
use_line_search = true
maximum_substep_iteration = 5
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[void_eigenstrain]
type = ComputeCrystalPlasticityVolumetricEigenstrain
eigenstrain_name = void_eigenstrain
deformation_gradient_name = volumetric_deformation_gradient
mean_spherical_void_radius = void_radius
spherical_void_number_density = void_density
[]
[void_density]
type = ParsedMaterial
property_name = void_density
coupled_variables = temperature
expression = 'if(temperature<601.0, 1.0e6, (-1.0e6 * (temperature - 603)^2.0 + 5.0e6))'
[]
[void_radius]
type = ParsedMaterial
property_name = void_radius
coupled_variables = temperature
expression = 'if(temperature<601.0, 1.0e-6, (-2.25e-6 * (temperature - 603)^2.0 + 1.0e-5))'
[]
[]
[Postprocessors]
[linear_void_strain]
type = ElementAverageValue
variable = linear_void_strain
[]
[e_void_xx]
type = ElementAverageValue
variable = e_void_xx
[]
[e_void_yy]
type = ElementAverageValue
variable = e_void_yy
[]
[e_void_zz]
type = ElementAverageValue
variable = e_void_zz
[]
[f_void_zz]
type = ElementAverageValue
variable = f_void_zz
[]
[void_density]
type = ElementAverageMaterialProperty
mat_prop = void_density
execute_on = TIMESTEP_END
[]
[void_radius]
type = ElementAverageMaterialProperty
mat_prop = void_radius
execute_on = TIMESTEP_END
[]
[pk2_zz]
type = ElementAverageValue
variable = pk2_zz
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_total_xx]
type = ElementAverageValue
variable = e_total_xx
[]
[e_total_yy]
type = ElementAverageValue
variable = e_total_yy
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
line_search = 'none'
nl_abs_tol = 1e-12
nl_rel_tol = 1e-8
nl_forced_its = 1
dt = 1.0
dtmin = 1.0e-4
end_time = 5.0
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/combined/test/tests/phase_field_fracture/crack2d_computeCrackedStress_smallstrain.i)
#This input uses PhaseField-Nonconserved Action to add phase field fracture bulk rate kernels
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 40
ny = 20
ymax = 0.5
[]
[./noncrack]
type = BoundingBoxNodeSetGenerator
new_boundary = noncrack
bottom_left = '0.5 0 0'
top_right = '1 0 0'
input = gen
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./All]
add_variables = true
strain = SMALL
planar_formulation = PLANE_STRAIN
additional_generate_output = 'stress_yy'
strain_base_name = uncracked
[../]
[../]
[../]
[]
[Modules]
[./PhaseField]
[./Nonconserved]
[./c]
free_energy = E_el
kappa = kappa_op
mobility = L
[../]
[../]
[../]
[]
[Kernels]
[./solid_x]
type = PhaseFieldFractureMechanicsOffDiag
variable = disp_x
component = 0
c = c
[../]
[./solid_y]
type = PhaseFieldFractureMechanicsOffDiag
variable = disp_y
component = 1
c = c
[../]
[./off_disp]
type = AllenCahnElasticEnergyOffDiag
variable = c
displacements = 'disp_x disp_y'
mob_name = L
[../]
[]
[AuxKernels]
[./strain_yy]
type = RankTwoAux
variable = strain_yy
rank_two_tensor = uncracked_mechanical_strain
index_i = 1
index_j = 1
[../]
[]
[BCs]
[./ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = 't'
[../]
[./yfix]
type = DirichletBC
variable = disp_y
boundary = noncrack
value = 0
[../]
[./xfix]
type = DirichletBC
variable = disp_x
boundary = right
value = 0
[../]
[]
[Materials]
[./pfbulkmat]
type = GenericConstantMaterial
prop_names = 'gc_prop l visco'
prop_values = '1e-3 0.05 1e-6'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '127.0 70.8 70.8 127.0 70.8 127.0 73.55 73.55 73.55'
fill_method = symmetric9
base_name = uncracked
euler_angle_1 = 30
euler_angle_2 = 0
euler_angle_3 = 0
[../]
[./elastic]
type = ComputeLinearElasticStress
base_name = uncracked
[../]
[./cracked_stress]
type = ComputeCrackedStress
c = c
kdamage = 1e-6
F_name = E_el
use_current_history_variable = true
uncracked_base_name = uncracked
[../]
[]
[Postprocessors]
[./av_stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./av_strain_yy]
type = SideAverageValue
variable = disp_y
boundary = top
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solving_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-8
l_tol = 1e-4
l_max_its = 100
nl_max_its = 10
dt = 5e-5
num_steps = 2
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/cavity_pressure/additional_volume.i)
#
# Cavity Pressure Test
#
# This test is designed to compute an internal pressure based on
# p = n * R * / (V_cavity / T_cavity + V_add / T_add)
# where
# p is the pressure
# n is the amount of material in the volume (moles)
# R is the universal gas constant
# T_cavity is the temperature in the cavity
# T_add is the temperature of the additional volume
#
# The mesh is composed of one block (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7. An additional volume of 2 is added.
#
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V_cavity0 + gamma * t + V_add
# with
# alpha = n0
# beta = T0 / 2
# gamma = -(0.003322259...) * V0
# T0 = 240.54443866068704
# V_cavity0 = 7
# V_add = 2
# T_add = 100
# n0 = f(p0)
# p0 = 100
# R = 8.314472 J * K^(-1) * mol^(-1)
#
# An additional volume of 2 with a temperature of 100.0 is included.
#
# So, n0 = p0 * (V_cavity / T_cavity + V_add / T_add) / R
# = 100 * (7 / 240.544439 + 2 / 100) / 8.314472
# = 0.59054
#
# The parameters combined at t = 1 gives p = 249.647.
#
# This test sets the initial temperature to 500, but the CavityPressure
# is told that that initial temperature is T0. Thus, the final solution
# is unchanged.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = 3d.e
[]
[GlobalParams]
volumetric_locking_correction = true
[]
[Functions]
[displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[]
[displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[]
[temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[]
[material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.59054'
[]
[additional_volume]
type = ConstantFunction
value = 2
[]
[temperature_of_additional_volume]
type = ConstantFunction
value = 100
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temp]
initial_condition = 500
[]
[material_input]
[]
[]
[AuxVariables]
[pressure_residual_x]
[]
[pressure_residual_y]
[]
[pressure_residual_z]
[]
[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
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
[]
[heat]
type = Diffusion
variable = temp
use_displaced_mesh = true
[]
[material_input_dummy]
type = Diffusion
variable = material_input
use_displaced_mesh = true
[]
[]
[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
[]
[]
[BCs]
[no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[]
[no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[]
[no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[]
[prescribed_left]
type = FunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[]
[prescribed_right]
type = FunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[]
[no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[]
[no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[]
[temperatureInterior]
type = FunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[]
[MaterialInput]
type = FunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[]
[CavityPressure]
[1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
initial_temperature = 240.54443866068704
volume = internalVolume
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
additional_volumes = volume1
temperature_of_additional_volumes = temperature1
[]
[]
[]
[Materials]
[elast_tensor1]
type = ComputeElasticityTensor
C_ijkl = '0 5'
fill_method = symmetric_isotropic
block = 1
[]
[strain1]
type = ComputeFiniteStrain
block = 1
[]
[stress1]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[elast_tensor2]
type = ComputeElasticityTensor
C_ijkl = '0 5'
fill_method = symmetric_isotropic
block = 2
[]
[strain2]
type = ComputeFiniteStrain
block = 2
[]
[stress2]
type = ComputeFiniteStrainElasticStress
block = 2
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
snesmf_reuse_base = false
use_pre_SMO_residual = true
[]
[Postprocessors]
[internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[]
[aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[]
[materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[]
[volume1]
type = FunctionValuePostprocessor
function = additional_volume
execute_on = 'initial linear'
[]
[temperature1]
type = FunctionValuePostprocessor
function = temperature_of_additional_volume
execute_on = 'initial linear'
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/multi/paper1.i)
# This runs the models mentioned in the first example of the Multi-Surface paper
#
# Plasticity models:
# SimpleTester with a = 1 and b = 0 and strength = 1E9 (only does elasticity)
# SimpleTester with a = 1 and b = 0 and strength = 0
# SimpleTester with a = 1 and b = 0 and strength = 1E-3
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A line of elements is perturbed randomly, and return to the yield surface at each quadpoint is checked
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 125
nz = 1
xmin = 0
xmax = 1
ymin = 0
ymax = 125
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[ICs]
[./x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = console
[../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = console
[../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = console
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = console
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1E9
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 0
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1E-3
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[]
[Materials]
active = 'elasticity_tensor strain single'
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./elastic_model]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-7
plastic_models = 'simple0'
[../]
[./single]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-7
plastic_models = 'simple1'
[../]
[./double]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-7
plastic_models = 'simple1 simple2'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = paper1
exodus = false
csv = true
[]
(modules/contact/test/tests/verification/patch_tests/cyl_1/cyl1_template1.i)
#
# This input file is a template for both the frictionless and glued test
# variations for the current problem geometry. In order to create an input
# file to run outside the runtest framework, look at the tests file and add the
# appropriate input file lines from the cli_args line.
#
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl1_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 1000
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 = 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/solid_mechanics/examples/coal_mining/cosserat_mc_wp_sticky.i)
# Strata deformation and fracturing around a coal mine
#
# A 2D geometry is used that simulates a transverse section of
# the coal mine. The model is actually 3D, but the "x"
# dimension is only 10m long, meshed with 1 element, and
# there is no "x" displacement. The mine is 400m deep
# and just the roof is studied (0<=z<=400). The model sits
# between 0<=y<=450. The excavation sits in 0<=y<=150. This
# is a "half model": the boundary conditions are such that
# the model simulates an excavation sitting in -150<=y<=150
# inside a model of the region -450<=y<=450. The
# excavation height is 3m (ie, the excavation lies within
# 0<=z<=3).
#
# Time is meaningless in this example
# as quasi-static solutions are sought at each timestep, but
# the number of timesteps controls the resolution of the
# process.
#
# The boundary conditions for this elastic simulation are:
# - disp_x = 0 everywhere
# - disp_y = 0 at y=0 and y=450
# - disp_z = 0 at z=0, but there is a time-dependent
# Young's modulus that simulates excavation
# - wc_x = 0 at y=0 and y=450.
# That is, rollers on the sides, free at top,
# and prescribed at bottom in the unexcavated portion.
#
# The small strain formulation is used.
#
# All stresses are measured in MPa. The initial stress is consistent with
# the weight force from density 2500 kg/m^3, ie, stress_zz = -0.025*(300-z) MPa
# where gravity = 10 m.s^-2 = 1E-5 MPa m^2/kg. The maximum and minimum
# principal horizontal stresses are assumed to be equal to 0.8*stress_zz.
#
# Material properties:
# Young's modulus = 8 GPa
# Poisson's ratio = 0.25
# Cosserat layer thickness = 1 m
# Cosserat-joint normal stiffness = large
# Cosserat-joint shear stiffness = 1 GPa
# MC cohesion = 3 MPa
# MC friction angle = 37 deg
# MC dilation angle = 8 deg
# MC tensile strength = 1 MPa
# MC compressive strength = 100 MPa, varying down to 1 MPa when tensile strain = 1
# WeakPlane cohesion = 0.1 MPa
# WeakPlane friction angle = 30 deg
# WeakPlane dilation angle = 10 deg
# WeakPlane tensile strength = 0.1 MPa
# WeakPlane compressive strength = 100 MPa softening to 1 MPa at strain = 1
#
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
xmin = -5
xmax = 5
nz = 40
zmin = 0
zmax = 403.003
bias_z = 1.1
ny = 30 # make this a multiple of 3, so y=150 is at a node
ymin = 0
ymax = 450
[]
[left]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 11
normal = '0 -1 0'
input = generated_mesh
[]
[right]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 12
normal = '0 1 0'
input = left
[]
[front]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 13
normal = '-1 0 0'
input = right
[]
[back]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 14
normal = '1 0 0'
input = front
[]
[top]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 15
normal = '0 0 1'
input = back
[]
[bottom]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = 16
normal = '0 0 -1'
input = top
[]
[excav]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '-5 0 0'
top_right = '5 150 3'
input = bottom
[]
[roof]
type = SideSetsAroundSubdomainGenerator
block = 1
new_boundary = 18
normal = '0 0 1'
input = excav
[]
[]
[GlobalParams]
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[]
[Kernels]
[./cy_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_x
component = 0
[../]
[./gravity]
type = Gravity
use_displaced_mesh = false
variable = disp_z
value = -10E-6 # remember this is in MPa
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_shear]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_internal_parameter
variable = mc_shear
[../]
[./mc_tensile]
type = MaterialStdVectorAux
index = 1
property = mc_plastic_internal_parameter
variable = mc_tensile
[../]
[./wp_shear]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_internal_parameter
variable = wp_shear
[../]
[./wp_tensile]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_internal_parameter
variable = wp_tensile
[../]
[./mc_shear_f]
type = MaterialStdVectorAux
index = 6
property = mc_plastic_yield_function
variable = mc_shear_f
[../]
[./mc_tensile_f]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_yield_function
variable = mc_tensile_f
[../]
[./wp_shear_f]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_yield_function
variable = wp_shear_f
[../]
[./wp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_yield_function
variable = wp_tensile_f
[../]
[]
[BCs]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = '11 12'
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = '16'
value = 0.0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = '11 12'
value = 0.0
[../]
[./roof]
type = StickyBC
variable = disp_z
min_value = -3.0
boundary = '18'
[../]
[]
[Functions]
[./ini_xx]
type = ParsedFunction
expression = '-0.8*2500*10E-6*(403.003-z)'
[../]
[./ini_zz]
type = ParsedFunction
expression = '-2500*10E-6*(403.003-z)'
[../]
[./excav_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval slope'
symbol_values = '1.0 0 150.0 1E-9 1 15'
# excavation face at ymin+(ymax-ymin)*min(t/end_t,1)
# slope is the distance over which the modulus reduces from maxval to minval
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,if(y<ymin+(ymax-ymin)*min(t/end_t,1)+slope,minval+(maxval-minval)*(y-(ymin+(ymax-ymin)*min(t/end_t,1)))/slope,maxval))'
[../]
[./density_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval'
symbol_values = '1.0 0 150.0 0 2500'
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,maxval)'
[../]
[]
[UserObjects]
[./mc_coh_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 2.99 # MPa
value_residual = 3.01 # MPa
rate = 1.0
[../]
[./mc_fric]
type = SolidMechanicsHardeningConstant
value = 0.65 # 37deg
[../]
[./mc_dil]
type = SolidMechanicsHardeningConstant
value = 0.15 # 8deg
[../]
[./mc_tensile_str_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 1.0 # MPa
value_residual = 1.0 # MPa
rate = 1.0
[../]
[./mc_compressive_str]
type = SolidMechanicsHardeningCubic
value_0 = 100 # Large!
value_residual = 100
internal_limit = 0.1
[../]
[./wp_coh_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_tan_fric]
type = SolidMechanicsHardeningConstant
value = 0.36 # 20deg
[../]
[./wp_tan_dil]
type = SolidMechanicsHardeningConstant
value = 0.18 # 10deg
[../]
[./wp_tensile_str_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_compressive_str_soften]
type = SolidMechanicsHardeningCubic
value_0 = 100
value_residual = 1
internal_limit = 1.0
[../]
[]
[Materials]
[./elasticity_tensor_0]
type = ComputeLayeredCosseratElasticityTensor
block = 0
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
[../]
[./elasticity_tensor_1]
type = ComputeLayeredCosseratElasticityTensor
block = 1
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
elasticity_tensor_prefactor = excav_sideways
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
eigenstrain_name = ini_stress
initial_stress = 'ini_xx 0 0 0 ini_xx 0 0 0 ini_zz'
[../]
[./stress_0]
# this is needed so as to correctly apply the initial stress
type = ComputeMultipleInelasticCosseratStress
block = 0
inelastic_models = 'mc wp'
cycle_models = true
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./stress_1]
type = ComputeMultipleInelasticCosseratStress
block = 1
inelastic_models = ''
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./mc]
type = CappedMohrCoulombCosseratStressUpdate
warn_about_precision_loss = false
host_youngs_modulus = 8E3
host_poissons_ratio = 0.25
base_name = mc
tensile_strength = mc_tensile_str_strong_harden
compressive_strength = mc_compressive_str
cohesion = mc_coh_strong_harden
friction_angle = mc_fric
dilation_angle = mc_dil
max_NR_iterations = 100000
smoothing_tol = 0.1 # MPa # Must be linked to cohesion
yield_function_tol = 1E-9 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[../]
[./wp]
type = CappedWeakPlaneCosseratStressUpdate
warn_about_precision_loss = false
base_name = wp
cohesion = wp_coh_harden
tan_friction_angle = wp_tan_fric
tan_dilation_angle = wp_tan_dil
tensile_strength = wp_tensile_str_harden
compressive_strength = wp_compressive_str_soften
max_NR_iterations = 10000
tip_smoother = 0.1
smoothing_tol = 0.1 # MPa # Note, this must be tied to cohesion, otherwise get no possible return at cone apex
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0E-3
[../]
[./density_0]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 2500
[../]
[./density_1]
type = GenericFunctionMaterial
block = 1
prop_names = density
prop_values = density_sideways
[../]
[]
[Postprocessors]
[./subs_max]
type = PointValue
point = '0 0 403.003'
variable = disp_z
use_displaced_mesh = false
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
line_search = bt
nl_abs_tol = 1e-8
nl_rel_tol = 1e-8
l_max_its = 30
nl_max_its = 1000
start_time = 0.0
dt = 0.01
end_time = 1.0
[]
[Outputs]
file_base = cosserat_mc_wp_sticky
time_step_interval = 1
print_linear_residuals = false
exodus = true
csv = true
console = true
[]
(modules/porous_flow/examples/tutorial/11_2D.i)
# Two-phase borehole injection problem in RZ coordinates
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 10
xmin = 1.0
xmax = 10
bias_x = 1.4
ny = 3
ymin = -6
ymax = 6
[]
[aquifer]
input = gen
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 -2 0'
top_right = '10 2 0'
[]
[injection_area]
type = ParsedGenerateSideset
combinatorial_geometry = 'x<1.0001'
included_subdomains = 1
new_sideset_name = 'injection_area'
input = 'aquifer'
[]
[rename]
type = RenameBlockGenerator
old_block = '0 1'
new_block = 'caps aquifer'
input = 'injection_area'
[]
coord_type = RZ
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pwater pgas T disp_r'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1E-6
m = 0.6
[]
[]
[GlobalParams]
displacements = 'disp_r disp_z'
gravity = '0 0 0'
biot_coefficient = 1.0
PorousFlowDictator = dictator
[]
[Variables]
[pwater]
initial_condition = 20E6
[]
[pgas]
initial_condition = 20.1E6
[]
[T]
initial_condition = 330
scaling = 1E-5
[]
[disp_r]
scaling = 1E-5
[]
[]
[Kernels]
[mass_water_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pwater
[]
[flux_water]
type = PorousFlowAdvectiveFlux
fluid_component = 0
use_displaced_mesh = false
variable = pwater
[]
[vol_strain_rate_water]
type = PorousFlowMassVolumetricExpansion
fluid_component = 0
variable = pwater
[]
[mass_co2_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = pgas
[]
[flux_co2]
type = PorousFlowAdvectiveFlux
fluid_component = 1
use_displaced_mesh = false
variable = pgas
[]
[vol_strain_rate_co2]
type = PorousFlowMassVolumetricExpansion
fluid_component = 1
variable = pgas
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = T
[]
[advection]
type = PorousFlowHeatAdvection
use_displaced_mesh = false
variable = T
[]
[conduction]
type = PorousFlowHeatConduction
use_displaced_mesh = false
variable = T
[]
[vol_strain_rate_heat]
type = PorousFlowHeatVolumetricExpansion
variable = T
[]
[grad_stress_r]
type = StressDivergenceRZTensors
temperature = T
variable = disp_r
eigenstrain_names = thermal_contribution
use_displaced_mesh = false
component = 0
[]
[poro_r]
type = PorousFlowEffectiveStressCoupling
variable = disp_r
use_displaced_mesh = false
component = 0
[]
[]
[AuxVariables]
[disp_z]
[]
[effective_fluid_pressure]
family = MONOMIAL
order = CONSTANT
[]
[mass_frac_phase0_species0]
initial_condition = 1 # all water in phase=0
[]
[mass_frac_phase1_species0]
initial_condition = 0 # no water in phase=1
[]
[sgas]
family = MONOMIAL
order = CONSTANT
[]
[swater]
family = MONOMIAL
order = CONSTANT
[]
[stress_rr]
family = MONOMIAL
order = CONSTANT
[]
[stress_tt]
family = MONOMIAL
order = CONSTANT
[]
[stress_zz]
family = MONOMIAL
order = CONSTANT
[]
[porosity]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[effective_fluid_pressure]
type = ParsedAux
coupled_variables = 'pwater pgas swater sgas'
expression = 'pwater * swater + pgas * sgas'
variable = effective_fluid_pressure
[]
[swater]
type = PorousFlowPropertyAux
variable = swater
property = saturation
phase = 0
execute_on = timestep_end
[]
[sgas]
type = PorousFlowPropertyAux
variable = sgas
property = saturation
phase = 1
execute_on = timestep_end
[]
[stress_rr_aux]
type = RankTwoAux
variable = stress_rr
rank_two_tensor = stress
index_i = 0
index_j = 0
[]
[stress_tt]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_tt
index_i = 2
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 1
index_j = 1
[]
[porosity]
type = PorousFlowPropertyAux
variable = porosity
property = porosity
execute_on = timestep_end
[]
[]
[BCs]
[pinned_top_bottom_r]
type = DirichletBC
variable = disp_r
value = 0
boundary = 'top bottom'
[]
[cavity_pressure_r]
type = Pressure
boundary = injection_area
variable = disp_r
postprocessor = constrained_effective_fluid_pressure_at_wellbore
use_displaced_mesh = false
[]
[cold_co2]
type = DirichletBC
boundary = injection_area
variable = T
value = 290 # injection temperature
use_displaced_mesh = false
[]
[constant_co2_injection]
type = PorousFlowSink
boundary = injection_area
variable = pgas
fluid_phase = 1
flux_function = -1E-4
use_displaced_mesh = false
[]
[outer_water_removal]
type = PorousFlowPiecewiseLinearSink
boundary = right
variable = pwater
fluid_phase = 0
pt_vals = '0 1E9'
multipliers = '0 1E8'
PT_shift = 20E6
use_mobility = true
use_relperm = true
use_displaced_mesh = false
[]
[outer_co2_removal]
type = PorousFlowPiecewiseLinearSink
boundary = right
variable = pgas
fluid_phase = 1
pt_vals = '0 1E9'
multipliers = '0 1E8'
PT_shift = 20.1E6
use_mobility = true
use_relperm = true
use_displaced_mesh = false
[]
[]
[FluidProperties]
[true_water]
type = Water97FluidProperties
[]
[tabulated_water]
type = TabulatedBicubicFluidProperties
fp = true_water
temperature_min = 275
pressure_max = 1E8
fluid_property_output_file = water97_tabulated_11.csv
# Comment out the fp parameter and uncomment below to use the newly generated tabulation
# fluid_property_file = water97_tabulated_11.csv
[]
[true_co2]
type = CO2FluidProperties
[]
[tabulated_co2]
type = TabulatedBicubicFluidProperties
fp = true_co2
temperature_min = 275
pressure_max = 1E8
fluid_property_output_file = co2_tabulated_11.csv
# Comment out the fp parameter and uncomment below to use the newly generated tabulation
# fluid_property_file = co2_tabulated_11.csv
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = T
[]
[saturation_calculator]
type = PorousFlow2PhasePP
phase0_porepressure = pwater
phase1_porepressure = pgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'mass_frac_phase0_species0 mass_frac_phase1_species0'
[]
[water]
type = PorousFlowSingleComponentFluid
fp = tabulated_water
phase = 0
[]
[co2]
type = PorousFlowSingleComponentFluid
fp = tabulated_co2
phase = 1
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 4
s_res = 0.1
sum_s_res = 0.2
phase = 0
[]
[relperm_co2]
type = PorousFlowRelativePermeabilityBC
nw_phase = true
lambda = 2
s_res = 0.1
sum_s_res = 0.2
phase = 1
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
thermal = true
porosity_zero = 0.1
reference_temperature = 330
reference_porepressure = 20E6
thermal_expansion_coeff = 15E-6 # volumetric
solid_bulk = 8E9 # unimportant since biot = 1
[]
[permeability_aquifer]
type = PorousFlowPermeabilityKozenyCarman
block = aquifer
poroperm_function = kozeny_carman_phi0
phi0 = 0.1
n = 2
m = 2
k0 = 1E-12
[]
[permeability_caps]
type = PorousFlowPermeabilityKozenyCarman
block = caps
poroperm_function = kozeny_carman_phi0
phi0 = 0.1
n = 2
m = 2
k0 = 1E-15
k_anisotropy = '1 0 0 0 1 0 0 0 0.1'
[]
[rock_thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '2 0 0 0 2 0 0 0 2'
[]
[rock_internal_energy]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1100
density = 2300
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 5E9
poissons_ratio = 0.0
[]
[strain]
type = ComputeAxisymmetricRZSmallStrain
eigenstrain_names = 'thermal_contribution initial_stress'
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = T
thermal_expansion_coeff = 5E-6 # this is the linear thermal expansion coefficient
eigenstrain_name = thermal_contribution
stress_free_temperature = 330
[]
[initial_strain]
type = ComputeEigenstrainFromInitialStress
initial_stress = '20E6 0 0 0 20E6 0 0 0 20E6'
eigenstrain_name = initial_stress
[]
[stress]
type = ComputeLinearElasticStress
[]
[effective_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[volumetric_strain]
type = PorousFlowVolumetricStrain
[]
[]
[Postprocessors]
[effective_fluid_pressure_at_wellbore]
type = PointValue
variable = effective_fluid_pressure
point = '1 0 0'
execute_on = timestep_begin
use_displaced_mesh = false
[]
[constrained_effective_fluid_pressure_at_wellbore]
type = FunctionValuePostprocessor
function = constrain_effective_fluid_pressure
execute_on = timestep_begin
[]
[]
[Functions]
[constrain_effective_fluid_pressure]
type = ParsedFunction
symbol_names = effective_fluid_pressure_at_wellbore
symbol_values = effective_fluid_pressure_at_wellbore
expression = 'max(effective_fluid_pressure_at_wellbore, 20E6)'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1E3
[TimeStepper]
type = IterationAdaptiveDT
dt = 1E3
growth_factor = 1.2
optimal_iterations = 10
[]
nl_abs_tol = 1E-7
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_twinning/demonstration_combined_hcp_slip_twins.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[single_xtal]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[temperature]
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_9]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_9]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_9]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[temperature]
type = ConstantAux
variable = temperature
value= 300
[]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = twin_total_volume_fraction_twins
execute_on = timestep_end
[]
[slip_increment_0]
type = MaterialStdVectorAux
variable = slip_increment_0
property = slip_increment
index = 0
execute_on = timestep_end
[]
[slip_increment_3]
type = MaterialStdVectorAux
variable = slip_increment_3
property = slip_increment
index = 3
execute_on = timestep_end
[]
[slip_increment_9]
type = MaterialStdVectorAux
variable = slip_increment_9
property = slip_increment
index = 9
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[tau_9]
type = MaterialStdVectorAux
variable = resolved_shear_stress_9
property = applied_shear_stress
index = 9
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_3]
type = MaterialStdVectorAux
variable = slip_resistance_3
property = slip_resistance
index = 3
execute_on = timestep_end
[]
[slip_resistance_9]
type = MaterialStdVectorAux
variable = slip_resistance_9
property = slip_resistance
index = 9
execute_on = timestep_end
[]
[twin_tau_0]
type = MaterialStdVectorAux
variable = resolved_twin_stress_0
property = twin_applied_shear_stress
index = 0
execute_on = timestep_end
[]
[twin_resistance_0]
type = MaterialStdVectorAux
variable = twin_resistance_0
property = twin_slip_resistance
index = 0
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
preset = true
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.005*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'slip_xtalpl twin_xtalpl'
tan_mod_type = exact
[]
[slip_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = 'hcp_aprismatic_capyramidal_slip_sys.txt'
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
zero_tol = 5e-10
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '98 224' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
total_twin_volume_fraction = twin_total_volume_fraction_twins
[]
[twin_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
base_name = twin
crystal_lattice_type = HCP
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
number_slip_systems = 6
slip_sys_file_name = 'hcp_tensile_twin_systems.txt'
initial_twin_lattice_friction = 1140.0
non_coplanar_coefficient_twin_hardening = 10000
coplanar_coefficient_twin_hardening = 1000
characteristic_twin_shear = 0.167
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[slip_increment_0]
type = ElementAverageValue
variable = slip_increment_0
[]
[slip_increment_3]
type = ElementAverageValue
variable = slip_increment_3
[]
[slip_increment_9]
type = ElementAverageValue
variable = slip_increment_9
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[tau_9]
type = ElementAverageValue
variable = resolved_shear_stress_9
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_3]
type = ElementAverageValue
variable = slip_resistance_3
[]
[slip_resistance_9]
type = ElementAverageValue
variable = slip_resistance_9
[]
[twin_tau_0]
type = ElementAverageValue
variable = resolved_twin_stress_0
[]
[twin_resistance_0]
type = ElementAverageValue
variable = twin_resistance_0
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_rel_tol = 1e-12
nl_abs_step_tol = 1e-10
dt = 0.5
dtmin = 1.0e-2
dtmax = 10.0
end_time = 2.25
[]
[Outputs]
csv = true
perf_graph = true
[]
(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'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[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/solid_mechanics/test/tests/elem_prop_read_user_object/prop_elem_read.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD4
displacements = 'disp_x disp_y'
nx = 2
ny = 2
[]
[Variables]
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.05*t
[../]
[]
[UserObjects]
[./prop_read]
type = PropertyReadFile
prop_file_name = 'input_file.txt'
# Enter file data as prop#1, prop#2, .., prop#nprop
nprop = 4
read_type = element
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[./e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = elastic_strain
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[Materials]
[./elasticity_tensor_with_Euler]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 0.176e5 0.176e5 1.684e5 0.176e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
read_prop_user_object = prop_read
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Postprocessors]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
block = 'ANY_BLOCK_ID 0'
[../]
[./e_yy]
type = ElementAverageValue
variable = e_yy
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.05
num_steps = 1
nl_abs_step_tol = 1e-10
[]
[Outputs]
file_base = prop_elem_read_out
exodus = true
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y'
use_displaced_mesh = true
[../]
[]
(modules/solid_mechanics/test/tests/mean_cap_TC/small_deform1.i)
# apply uniform stretch in x, y and z directions.
# trial_stress(0, 0) = -2
# trial_stress(1, 1) = 6
# trial_stress(2, 2) = 10
# With tensile_strength = 2, the algorithm should return to trace(stress) = 2, or
# stress(0, 0) = -6
# stress(1, 1) = 2
# stress(2, 2) = 6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = SolidMechanicsHardeningConstant
value = 2
[../]
[./compressive_strength]
type = SolidMechanicsHardeningConstant
value = -1
[../]
[./cap]
type = SolidMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/small_deform4.i)
# apply repeated stretches in z direction, and smaller stretches in the x and y directions
# so that sigma_II = sigma_III,
# which means that lode angle = -30deg.
# The allows yield surface in meridional plane to be mapped out
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0.25E-6*x*sin(t)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.25E-6*y*sin(t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 50
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningExponential
value_0 = 0
value_residual = 0.8726646 # 50deg
rate = 3000.0
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4
mc_edge_smoother = 20
yield_function_tolerance = 1E-8
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 30
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform4
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/poro/vol_expansion_action.i)
# This is identical to vol_expansion.i, but uses the PoroMechanics action
#
# Apply an increasing porepressure, with zero mechanical forces,
# and observe the corresponding volumetric expansion
#
# P = t
# With the Biot coefficient being 2.0, the effective stresses should be
# stress_xx = stress_yy = stress_zz = 2t
# With bulk modulus = 1 then should have
# vol_strain = strain_xx + strain_yy + strain_zz = 2t.
# I use a single element lying 0<=x<=1, 0<=y<=1 and 0<=z<=1, and
# fix the left, bottom and back boundaries appropriately,
# so at the point x=y=z=1, the displacements should be
# disp_x = disp_y = disp_z = 2t/3 (small strain physics is used)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./p]
[../]
[]
[BCs]
[./p]
type = FunctionDirichletBC
boundary = 'bottom top'
variable = p
function = t
[../]
[./xmin]
type = DirichletBC
boundary = left
variable = disp_x
value = 0
[../]
[./ymin]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
[../]
[./zmin]
type = DirichletBC
boundary = back
variable = disp_z
value = 0
[../]
[]
[Kernels]
[./PoroMechanics]
porepressure = p
displacements = 'disp_x disp_y disp_z'
[../]
[./unimportant_p]
type = Diffusion
variable = p
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./corner_x]
type = PointValue
point = '1 1 1'
variable = disp_x
[../]
[./corner_y]
type = PointValue
point = '1 1 1'
variable = disp_y
[../]
[./corner_z]
type = PointValue
point = '1 1 1'
variable = disp_z
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
# bulk modulus = 1, poisson ratio = 0.2
C_ijkl = '0.5 0.75'
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./biot]
type = GenericConstantMaterial
prop_names = biot_coefficient
prop_values = 2.0
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol'
petsc_options_value = 'gmres bjacobi 1E-10 1E-10 10 1E-15 1E-10'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
dt = 0.1
end_time = 1
[]
[Outputs]
file_base = vol_expansion_action
exodus = true
[]
(modules/solid_mechanics/test/tests/stress_recovery/patch/patch.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
elem_type = QUAD9
uniform_refine = 0
[]
[Variables]
[disp_x]
order = SECOND
family = LAGRANGE
[]
[disp_y]
order = SECOND
family = LAGRANGE
[]
[]
[AuxVariables]
[stress_xx]
order = FIRST
family = MONOMIAL
[]
[stress_yy]
order = FIRST
family = MONOMIAL
[]
[stress_xx_recovered]
order = SECOND
family = LAGRANGE
[]
[stress_yy_recovered]
order = SECOND
family = LAGRANGE
[]
[]
[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_xx_recovered]
type = NodalPatchRecoveryAux
variable = stress_xx_recovered
nodal_patch_recovery_uo = stress_xx_patch
execute_on = 'TIMESTEP_END'
[]
[stress_yy_recovered]
type = NodalPatchRecoveryAux
variable = stress_yy_recovered
nodal_patch_recovery_uo = stress_yy_patch
execute_on = 'TIMESTEP_END'
[]
[]
[Kernels]
[solid_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[solid_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[]
[Materials]
[strain]
type = ComputeSmallStrain
[]
[Cijkl]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 2.1e+5
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[BCs]
[top_xdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 0
[]
[top_ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = t
[]
[bottom_xdisp]
type = FunctionDirichletBC
variable = disp_x
boundary = 'bottom'
function = 0
[]
[bottom_ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'bottom'
function = 0
[]
[]
[UserObjects]
[stress_xx_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = SECOND
property = 'stress'
component = '0 0'
execute_on = 'TIMESTEP_END'
[]
[stress_yy_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = SECOND
property = 'stress'
component = '1 1'
execute_on = 'TIMESTEP_END'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = default
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type'
petsc_options_value = 'preonly lu'
nl_abs_tol = 1e-8
nl_rel_tol = 1e-8
l_max_its = 100
nl_max_its = 30
dt = 0.01
dtmin = 1e-11
start_time = 0
end_time = 0.05
[]
[Outputs]
time_step_interval = 1
exodus = true
print_linear_residuals = false
[]
(modules/combined/test/tests/DiffuseCreep/variable_base_eigen_strain.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.01*v'
[../]
[../]
[./mu]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./eigen_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./eigen_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./eigenstrain_xx]
type = RankTwoAux
variable = eigen_strain_xx
rank_two_tensor = eigenstrain
index_i = 0
index_j = 0
[../]
[./eigenstrain_yy]
type = RankTwoAux
variable = eigen_strain_yy
rank_two_tensor = eigenstrain
index_i = 1
index_j = 1
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
args = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./eigenstrain_prefactor]
type = DerivativeParsedMaterial
block = 0
expression = 'c-0.1'
coupled_variables = c
property_name = eigenstrain_prefactor
derivative_order = 1
[../]
[./eigenstrain]
type = ComputeVariableBaseEigenStrain
base_tensor_property_name = aniso_tensor
prefactor = eigenstrain_prefactor
eigenstrain_name = eigenstrain
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/drucker_prager/small_deform3_inner_edge.i)
# apply repeated stretches in x z directions, and smaller stretches along the y direction,
# so that sigma_I = sigma_II,
# which means that lode angle = 30deg.
# The allows yield surface in meridional plane to be mapped out
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '-1.7E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
smoother = 8
mc_interpolation_scheme = inner_edge
yield_function_tolerance = 1E-7
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-13
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform3_inner_edge
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/2D_geometries/2D-RZ_finiteStrain_resid.i)
# This tests the save_in_disp residual aux-variables for
# ComputeAxisymmetricRZFiniteStrain, which is generated through the use of the
# SolidMechanics QuasiStatic Physics. The GeneratedMesh is 1x1, rotated via axisym to
# create a cylinder of height 1, radius 1.
#
# PostProcessor force_z plots the force on the top surface of the cylinder.
#
# Displacement of 0.1 is applied to top of cylinder while other surfaces are
# constrained. Plotting force_z vs stress_z will show a slope of 3.14159 (pi),
# consistent with formula for normal stress:
#
# Stress = force / area
#
# where area is A = pi * r^2 for a circle.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
save_in = 'force_r force_z'
[../]
[]
[AuxVariables]
[./stress_r]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_r]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_z]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_z]
order = CONSTANT
family = MONOMIAL
[../]
[./force_r]
order = FIRST
family = LAGRANGE
[../]
[./force_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./stress_r]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_r
execute_on = timestep_end
[../]
[./strain_r]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 0
variable = strain_r
execute_on = timestep_end
[../]
[./stress_z]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_z
execute_on = timestep_end
[../]
[./strain_z]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 1
index_j = 1
variable = strain_z
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./_elastic_strain]
type = ComputeFiniteStrainElasticStress
[../]
[]
[BCs]
[./no_disp_r_left]
type = DirichletBC
variable = disp_r
boundary = left
value = 0.0
[../]
[./no_disp_r_right]
type = DirichletBC
variable = disp_r
boundary = right
value = 0.0
[../]
[./no_disp_z_bottom]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./top]
type = FunctionDirichletBC
variable = disp_z
boundary = top
function = 't'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 0.1
dt = 0.01
[]
[Postprocessors]
[./strainR]
type = ElementAverageValue
variable = strain_r
[../]
[./stressR]
type = ElementAverageValue
variable = stress_r
[../]
[./strainZ]
type = ElementAverageValue
variable = strain_z
[../]
[./stressZ]
type = ElementAverageValue
variable = stress_z
[../]
[./force_r]
type = NodalSum
variable = force_r
boundary = top
[../]
[./force_z]
type = NodalSum
variable = force_z
boundary = top
[../]
[]
[Outputs]
exodus = true
#csv = true
print_linear_residuals = false
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_aprismatic_capyramidal.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[AuxVariables]
[temperature]
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_4]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_5]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_6]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental= true
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[temperature]
type = ConstantAux
variable = temperature
value= 300
[]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[tau_4]
type = MaterialStdVectorAux
variable = resolved_shear_stress_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[tau_5]
type = MaterialStdVectorAux
variable = resolved_shear_stress_5
property = applied_shear_stress
index = 5
execute_on = timestep_end
[]
[tau_6]
type = MaterialStdVectorAux
variable = resolved_shear_stress_6
property = applied_shear_stress
index = 6
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_3]
type = MaterialStdVectorAux
variable = slip_resistance_3
property = slip_resistance
index = 3
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
preset = true
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '98 224' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[tau_4]
type = ElementAverageValue
variable = resolved_shear_stress_4
[]
[tau_5]
type = ElementAverageValue
variable = resolved_shear_stress_5
[]
[tau_6]
type = ElementAverageValue
variable = resolved_shear_stress_6
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_3]
type = ElementAverageValue
variable = slip_resistance_3
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.5
dtmin = 1.0e-2
dtmax = 10.0
end_time = 5
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/ad_uniaxial_x.i)
# This test simulates uniaxial tensile loading in x-direction.
# The slope of the stress vs. plastic strain is evaluated from
# the simulation and compared with the value calculated using
# the analytical expression. This test uses a material with li-
# near strain hardening.
# For uniaxial tensile loading in y-direction, the slope of the
# stress vs. plastic strain is (2K / (G + H)) where K is the ha-
# rdening constant, and G & H are the Hill's constant. For deta-
# ils on the derivation of the expression for slope please refer
# the documentation of this material.
# Slope obtained from this MOOSE test simulation:
# = 1.791 x 10^9
# Slope obtained from analytical expression:
# = 2 x 10^9 / (0.4 + 0.7) = 1.818 x 10^9
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[sigma_xx]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1e1'
y = '0 -2e8'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx strain_xx plastic_strain_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeElasticityTensor
fill_method = orthotropic
C_ijkl = '10.0e10 15.0e10 20.0e10 2.0e10 2.0e10 2.0e10 0.2 0.2 0.2 0.13333333333333333 0.1 0.15'
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_plasticity"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.6 0.4 0.7 1.5 1.5 1.5"
[]
[trial_plasticity]
type = ADHillElastoPlasticityStressUpdate
hardening_constant = 10e9
yield_stress = 60e6
absolute_tolerance = 1e-15 # 1e-8
relative_tolerance = 1e-13 # 1e-15
# internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-5
# internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-12
nl_abs_tol = 1.0e-14
l_max_its = 90
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 0.1
time_t = '0 2.5 10'
time_dt = '0.1 1.0e-2 1.0e-2'
[]
start_time = 0
end_time = 10.0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[plasticity_strain_xx]
type = ElementalVariableValue
variable = plastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[strain_xx]
type = ElementalVariableValue
variable = strain_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_01.i)
# Beam bending. One end is clamped and the other end is subjected to
# a surface traction.
# The joint normal and shear stiffnesses are set very large, so
# that this situation should be identical to the standard (non-Cosserat)
# isotropic elasticity case.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 40
xmax = 10
ny = 1
nz = 4
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./no_dispy]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = 'bottom top back front left right'
value = 0.0
[../]
[./clamp_z]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./clamp_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./end_traction]
type = VectorNeumannBC
variable = disp_z
vector_value = '-2E-4 0 0'
boundary = right
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_z stress_xx stress_xz stress_zx stress_zz wc_x wc_y couple_stress_xx couple_stress_xz couple_stress_zx couple_stress_zz'
start_point = '0 0 0.5'
end_point = '10 0 0.5'
num_points = 11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 1.2
poisson = 0.3
layer_thickness = 1
joint_normal_stiffness = 1E16
joint_shear_stiffness = 1E16
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol -sub_pc_factor_shift_type'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10 NONZERO'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = beam_cosserat_01
csv = true
exodus = true
[]
(modules/solid_mechanics/test/tests/umat/print_c/print_c.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t
[]
[]
[AuxVariables]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[Pressure]
[bc_presssure]
boundary = top
function = top_pull
[]
[]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.0
[]
[]
[Materials]
[umat]
type = AbaqusUMATStress
constant_properties = '210000 0.3'
plugin = '../../../plugins/elastic_print_c'
num_state_vars = 0
external_fields = 'strain_yy'
use_one_based_indexing = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 10
dt = 10.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/poro_mechanics/undrained_oedometer.i)
# An undrained oedometer test on a saturated poroelastic sample.
#
# The sample is a single unit element, with roller BCs on the sides
# and bottom. A constant displacement is applied to the top: disp_z = -0.01*t.
# There is no fluid flow.
#
# Under these conditions
# porepressure = -(Biot coefficient)*(Biot modulus)*disp_z/L
# stress_xx = (bulk - 2*shear/3)*disp_z/L (remember this is effective stress)
# stress_zz = (bulk + 4*shear/3)*disp_z/L (remember this is effective stress)
# where L is the height of the sample (L=1 in this test)
#
# Parameters:
# Biot coefficient = 0.3
# Porosity = 0.1
# Bulk modulus = 2
# Shear modulus = 1.5
# fluid bulk modulus = 1/0.3 = 3.333333
# 1/Biot modulus = (1 - 0.3)*(0.3 - 0.1)/2 + 0.1*0.3 = 0.1. BiotModulus = 10
#
# Desired output:
# zdisp = -0.01*t
# p0 = 0.03*t
# stress_xx = stress_yy = -0.01*t
# stress_zz = -0.04*t
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./porepressure]
[../]
[]
[BCs]
[./confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[../]
[./confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[../]
[./basefixed]
type = DirichletBC
variable = disp_z
value = 0
boundary = back
[../]
[./top_velocity]
type = FunctionDirichletBC
variable = disp_z
function = -0.01*t
boundary = front
[../]
[]
[Kernels]
[./grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[../]
[./grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[../]
[./grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[../]
[./poro_x]
type = PoroMechanicsCoupling
variable = disp_x
component = 0
[../]
[./poro_y]
type = PoroMechanicsCoupling
variable = disp_y
component = 1
[../]
[./poro_z]
type = PoroMechanicsCoupling
variable = disp_z
component = 2
[../]
[./poro_timederiv]
type = PoroFullSatTimeDerivative
variable = porepressure
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./poro_material]
type = PoroFullSatMaterial
porosity0 = 0.1
biot_coefficient = 0.3
solid_bulk_compliance = 0.5
fluid_bulk_compliance = 0.3
constant_porosity = true
[../]
[]
[Postprocessors]
[./p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[../]
[./zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
variable = disp_z
[../]
[./stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[../]
[./stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[../]
[./stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 10000'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = undrained_oedometer
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/umat/print/print_shear.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t/1000
[]
[]
[AuxVariables]
[strain_xy]
family = MONOMIAL
order = SECOND
[]
[strain_yy]
family = MONOMIAL
order = SECOND
[]
[]
[AuxKernels]
[strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 1
index_j = 0
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[]
[NodalKernels]
[force_x]
type = ConstantRate
variable = disp_x
boundary = top
rate = 1.0e0
[]
[]
[Materials]
# 1. Active for UMAT verification
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_print_multiple_fields'
num_state_vars = 0
external_fields = 'strain_yy strain_xy'
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
base_name = 'base'
youngs_modulus = 1e3
poissons_ratio = 0.3
[]
[strain_dependent_elasticity_tensor]
type = CompositeElasticityTensor
args = 'strain_yy strain_xy'
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
property_name = prefactor_material
coupled_variables = 'strain_yy strain_xy'
expression = '1.0/(1.0 + strain_yy + strain_xy)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 10
dt = 10.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_temperature_coefficients_function_variation.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[temperature]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_f]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_g]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_h]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = time_temperature
[]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[creep_strain_zz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
[]
[creep_strain_xz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xz
index_i = 0
index_j = 2
[]
[creep_strain_yz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yz
index_i = 1
index_j = 2
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[hill_constant_f]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_f
index = 0
[]
[hill_constant_g]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_g
index = 1
[]
[hill_constant_h]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_h
index = 2
[]
[]
[ICs]
[temp]
type = ConstantIC
variable = temperature
value = 50.0
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0e-9 1.0'
y = '0 -4e1 -4e1'
[]
[F]
type = PiecewiseLinear
x = '50 200'
y = '0.2 0.5'
[]
[G]
type = PiecewiseLinear
x = '50 200'
y = '0.9 0.6'
[]
[H]
type = PiecewiseLinear
x = '50 200'
y = '0.5 0.3'
[]
[L]
type = PiecewiseLinear
x = '50 200'
y = '1.5 1.5'
[]
[M]
type = PiecewiseLinear
x = '50 200'
y = '1.5 1.5'
[]
[N]
type = PiecewiseLinear
x = '50 200'
y = '1.5 1.5'
[]
[time_temperature]
type = PiecewiseLinear
x = '0 1.0e-2'
y = '50 200'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = 'trial_creep_aniso_iso'
max_iterations = 50
[]
[hill_constants]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.5 0.5 1.5 1.5 1.5"
function_names = 'F G H L M N'
temperature = temperature
[]
[trial_creep_aniso_iso]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
relative_tolerance = 1e-20
absolute_tolerance = 1e-20
internal_solve_output_on = never
# Force it to not use integration error
max_integration_error = 1.0
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-13
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 20
dt = 5.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_yy]
type = ElementalVariableValue
variable = creep_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_zz]
type = ElementalVariableValue
variable = creep_strain_zz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_xy]
type = ElementalVariableValue
variable = creep_strain_xy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_yz]
type = ElementalVariableValue
variable = creep_strain_yz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_xz]
type = ElementalVariableValue
variable = creep_strain_xz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/user_object_011orientation.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[./pk2]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./lagrangian_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./lagrangian_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./slip_increment]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[./pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = pk2
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./lagrangian_strain_zz]
type = RankTwoAux
variable = lagrangian_strain_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./lagrangian_strain_yy]
type = RankTwoAux
rank_two_tensor = lage
variable = lagrangian_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_rate_gss
index = 0
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[../]
[]
[UserObjects]
[./slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
groups = '0 4 8 12'
group_values = '60.8 60.8 60.8'
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
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'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
euler_angle_1 = 120.0
euler_angle_2 = 125.264
euler_angle_3 = 45.0
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./pk2]
type = ElementAverageValue
variable = pk2
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./lagrangian_strain_yy]
type = ElementAverageValue
variable = lagrangian_strain_yy
[../]
[./lagrangian_strain_zz]
type = ElementAverageValue
variable = lagrangian_strain_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[./slip_increment]
type = ElementAverageValue
variable = slip_increment
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
dtmin = 0.05
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_x_3d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0e-9 1.0'
y = '0 -4e1 -4e1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_creep_two"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.25 0.3866 1.6413 1.6413 1.2731"
[]
[trial_creep_two]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
absolute_tolerance = 1e-20
relative_tolerance = 1e-20
# Force it to not use integration error
max_integration_error = 100.0
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err'
petsc_options_value = 'lu superlu_dist 1e-5'
nl_rel_tol = 1.0e-14
nl_abs_tol = 1.0e-14
l_max_its = 10
num_steps = 10
dt = 1.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/hcp_thermal_eigenstrain.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[e_xtalpl_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_xtalpl_yy]
order = CONSTANT
family = MONOMIAL
[]
[eth_zz]
order = CONSTANT
family = MONOMIAL
[]
[fth_xx]
order = CONSTANT
family = MONOMIAL
[]
[fth_yy]
order = CONSTANT
family = MONOMIAL
[]
[fth_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_yy]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_xx]
order = CONSTANT
family = MONOMIAL
[]
[f_yy]
order = CONSTANT
family = MONOMIAL
[]
[f_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = '300+400*t' # temperature increases at a constant rate
execute_on = timestep_begin
[]
[e_xtalpl_xx]
type = RankTwoAux
variable = e_xtalpl_xx
rank_two_tensor = total_lagrangian_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_xtalpl_yy]
type = RankTwoAux
variable = e_xtalpl_yy
rank_two_tensor = total_lagrangian_strain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[eth_zz]
type = RankTwoAux
variable = eth_zz
rank_two_tensor = thermal_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fth_xx]
type = RankTwoAux
variable = fth_xx
rank_two_tensor = thermal_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fth_yy]
type = RankTwoAux
variable = fth_yy
rank_two_tensor = thermal_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fth_zz]
type = RankTwoAux
variable = fth_zz
rank_two_tensor = thermal_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = plastic_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f_xx]
type = RankTwoAux
variable = f_xx
rank_two_tensor = deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[f_yy]
type = RankTwoAux
variable = f_yy
rank_two_tensor = deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[f_zz]
type = RankTwoAux
variable = f_zz
rank_two_tensor = deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = thermal_eigenstrain
tan_mod_type = exact
maximum_substep_iteration = 10
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e3
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '9 22' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e2 4.7e2' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
[]
[thermal_eigenstrain]
type = ComputeCrystalPlasticityThermalEigenstrain
eigenstrain_name = thermal_eigenstrain
deformation_gradient_name = thermal_deformation_gradient
temperature = temperature
thermal_expansion_coefficients = '1e-05 1e-05 1e-05' # thermal expansion coefficients along three directions
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[e_xtalpl_xx]
type = ElementAverageValue
variable = e_xtalpl_xx
[]
[e_xtalpl_yy]
type = ElementAverageValue
variable = e_xtalpl_yy
[]
[eth_zz]
type = ElementAverageValue
variable = eth_zz
[]
[fth_xx]
type = ElementAverageValue
variable = fth_xx
[]
[fth_yy]
type = ElementAverageValue
variable = fth_yy
[]
[fth_zz]
type = ElementAverageValue
variable = fth_zz
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_yy]
type = ElementAverageValue
variable = fp_yy
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[f_xx]
type = ElementAverageValue
variable = f_xx
[]
[f_yy]
type = ElementAverageValue
variable = f_yy
[]
[f_zz]
type = ElementAverageValue
variable = f_zz
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-6
nl_abs_step_tol = 1e-10
dt = 0.1
dtmin = 1e-4
num_steps = 10
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/jacobian/cto18.i)
# Jacobian check for nonlinear, multi-surface plasticity.
# Returns to the edge of the tensile yield surface
#
# Plasticity models:
# Tensile with strength = 1MPa softening to 0.5MPa in 2E-2 strain
#
# Lame lambda = 0.5GPa. Lame mu = 1GPa
#
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int0
index = 0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int1
index = 1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int2
index = 2
[../]
[]
[Postprocessors]
[./max_int0]
type = ElementExtremeValue
variable = int0
outputs = console
[../]
[./max_int1]
type = ElementExtremeValue
variable = int1
outputs = console
[../]
[./max_int2]
type = ElementExtremeValue
variable = int2
outputs = console
[../]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console' [../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console' [../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console' [../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console' [../]
[]
[UserObjects]
[./ts]
type = SolidMechanicsHardeningCubic
value_0 = 1
value_residual = 0.5
internal_limit = 2E-2
[../]
[./tensile]
type = SolidMechanicsPlasticTensileMulti
tensile_strength = ts
yield_function_tolerance = 1.0E-6 # Note larger value
shift = 1.0E-6 # Note larger value
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0.5E3 1E3'
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '-1 0.1 0.2 0.1 15 -0.3 0.2 -0.3 14'
eigenstrain_name = ini_stress
[../]
[./multi]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1E-7
plastic_models = 'tensile'
max_NR_iterations = 5
deactivation_scheme = 'safe'
min_stepsize = 1
tangent_operator = nonlinear
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
#petsc_options = '-snes_test_display'
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_type'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000 test'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
[]
[Outputs]
file_base = cto18
exodus = false
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_twinning/modified_kalidindi_for_hcp.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[single_xtal]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_5]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_2]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_4]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_5]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = twin_total_volume_fraction_twins
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_resistance_0]
type = MaterialStdVectorAux
variable = twin_resistance_0
property = twin_slip_resistance
index = 0
execute_on = timestep_end
[]
[twin_resistance_1]
type = MaterialStdVectorAux
variable = twin_resistance_1
property = twin_slip_resistance
index = 1
execute_on = timestep_end
[]
[twin_resistance_2]
type = MaterialStdVectorAux
variable = twin_resistance_2
property = twin_slip_resistance
index = 2
execute_on = timestep_end
[]
[twin_resistance_3]
type = MaterialStdVectorAux
variable = twin_resistance_3
property = twin_slip_resistance
index = 3
execute_on = timestep_end
[]
[twin_resistance_4]
type = MaterialStdVectorAux
variable = twin_resistance_4
property = twin_slip_resistance
index = 4
execute_on = timestep_end
[]
[twin_resistance_5]
type = MaterialStdVectorAux
variable = twin_resistance_5
property = twin_slip_resistance
index = 5
execute_on = timestep_end
[]
[twin_increment_0]
type = MaterialStdVectorAux
variable = twin_increment_0
property = twin_slip_increment
index = 0
execute_on = timestep_end
[]
[twin_increment_1]
type = MaterialStdVectorAux
variable = twin_increment_1
property = twin_slip_increment
index = 1
execute_on = timestep_end
[]
[twin_increment_2]
type = MaterialStdVectorAux
variable = twin_increment_2
property = twin_slip_increment
index = 2
execute_on = timestep_end
[]
[twin_increment_3]
type = MaterialStdVectorAux
variable = twin_increment_3
property = twin_slip_increment
index = 3
execute_on = timestep_end
[]
[twin_increment_4]
type = MaterialStdVectorAux
variable = twin_increment_4
property = twin_slip_increment
index = 4
execute_on = timestep_end
[]
[twin_increment_5]
type = MaterialStdVectorAux
variable = twin_increment_5
property = twin_slip_increment
index = 5
execute_on = timestep_end
[]
[twin_tau_0]
type = MaterialStdVectorAux
variable = resolved_twin_stress_0
property = twin_applied_shear_stress
index = 0
execute_on = timestep_end
[]
[twin_tau_1]
type = MaterialStdVectorAux
variable = resolved_twin_stress_1
property = twin_applied_shear_stress
index = 1
execute_on = timestep_end
[]
[twin_tau_2]
type = MaterialStdVectorAux
variable = resolved_twin_stress_2
property = twin_applied_shear_stress
index = 2
execute_on = timestep_end
[]
[twin_tau_3]
type = MaterialStdVectorAux
variable = resolved_twin_stress_3
property = twin_applied_shear_stress
index = 3
execute_on = timestep_end
[]
[twin_tau_4]
type = MaterialStdVectorAux
variable = resolved_twin_stress_4
property = twin_applied_shear_stress
index = 4
execute_on = timestep_end
[]
[twin_tau_5]
type = MaterialStdVectorAux
variable = resolved_twin_stress_5
property = twin_applied_shear_stress
index = 5
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
preset = true
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_xtalpl'
tan_mod_type = exact
[]
[twin_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
base_name = twin
crystal_lattice_type = HCP
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
number_slip_systems = 6
slip_sys_file_name = 'hcp_tensile_twin_systems.txt'
initial_twin_lattice_friction = 1140
non_coplanar_coefficient_twin_hardening = 10000
coplanar_coefficient_twin_hardening = 1000
characteristic_twin_shear = 0.167
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_resistance_0]
type = ElementAverageValue
variable = twin_resistance_0
[]
[twin_resistance_1]
type = ElementAverageValue
variable = twin_resistance_1
[]
[twin_resistance_2]
type = ElementAverageValue
variable = twin_resistance_2
[]
[twin_resistance_3]
type = ElementAverageValue
variable = twin_resistance_3
[]
[twin_resistance_4]
type = ElementAverageValue
variable = twin_resistance_4
[]
[twin_resistance_5]
type = ElementAverageValue
variable = twin_resistance_5
[]
[twin_increment_0]
type = ElementAverageValue
variable = twin_increment_0
[]
[twin_increment_1]
type = ElementAverageValue
variable = twin_increment_1
[]
[twin_increment_2]
type = ElementAverageValue
variable = twin_increment_2
[]
[twin_increment_3]
type = ElementAverageValue
variable = twin_increment_3
[]
[twin_increment_4]
type = ElementAverageValue
variable = twin_increment_4
[]
[twin_increment_5]
type = ElementAverageValue
variable = twin_increment_5
[]
[twin_tau_0]
type = ElementAverageValue
variable = resolved_twin_stress_0
[]
[twin_tau_1]
type = ElementAverageValue
variable = resolved_twin_stress_1
[]
[twin_tau_2]
type = ElementAverageValue
variable = resolved_twin_stress_2
[]
[twin_tau_3]
type = ElementAverageValue
variable = resolved_twin_stress_3
[]
[twin_tau_4]
type = ElementAverageValue
variable = resolved_twin_stress_4
[]
[twin_tau_5]
type = ElementAverageValue
variable = resolved_twin_stress_5
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.5
dtmin = 1.0e-2
dtmax = 10.0
end_time = 2.5
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/except3.i)
# checking for exception error messages on the edge smoothing
# here edge_smoother=5deg, which means the friction_angle must be <= 35.747
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 36
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 1
mc_edge_smoother = 5
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = except3
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/user_object.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD4
displacements = 'disp_x disp_y'
nx = 2
ny = 2
[]
[GlobalParams]
volumetric_locking_correction = true
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y'
use_displaced_mesh = true
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./e_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[UserObjects]
[./prop_read]
type = PropertyReadFile
prop_file_name = 'euler_ang_file.txt'
# Enter file data as prop#1, prop#2, .., prop#nprop
nprop = 3
read_type = element
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = lage
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = fp
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[UserObjects]
[./slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
groups = '0 4 8 12'
group_values = '60.8 60.8 60.8'
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
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'
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
read_prop_user_object = prop_read
[../]
[]
[Postprocessors]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./e_yy]
type = ElementAverageValue
variable = e_yy
[../]
[./fp_yy]
type = ElementAverageValue
variable = fp_yy
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.01
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.01
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/stress_recovery/patch/patch_finite_stress.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
elem_type = QUAD4
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[stress_xx]
order = FIRST
family = MONOMIAL
[]
[stress_yy]
order = FIRST
family = MONOMIAL
[]
[stress_xx_recovered]
order = FIRST
family = LAGRANGE
[]
[stress_yy_recovered]
order = FIRST
family = LAGRANGE
[]
[]
[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_xx_recovered]
type = NodalPatchRecoveryAux
variable = stress_xx_recovered
nodal_patch_recovery_uo = stress_xx_patch
execute_on = 'TIMESTEP_END'
[]
[stress_yy_recovered]
type = NodalPatchRecoveryAux
variable = stress_yy_recovered
nodal_patch_recovery_uo = stress_yy_patch
execute_on = 'TIMESTEP_END'
[]
[]
[Kernels]
[solid_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[solid_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[]
[Materials]
[strain]
type = ComputeFiniteStrain
[]
[Cijkl]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 2.1e+5
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[BCs]
[top_xdisp]
type = FunctionDirichletBC
variable = disp_x
boundary = 'top'
function = 0
[]
[top_ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = t
[]
[bottom_xdisp]
type = FunctionDirichletBC
variable = disp_x
boundary = 'bottom'
function = 0
[]
[bottom_ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'bottom'
function = 0
[]
[]
[UserObjects]
[stress_xx_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '0 0'
execute_on = 'TIMESTEP_END'
[]
[stress_yy_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '1 1'
execute_on = 'TIMESTEP_END'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = default
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type'
petsc_options_value = 'preonly lu'
nl_abs_tol = 1e-8
nl_rel_tol = 1e-8
l_max_its = 100
nl_max_its = 30
dt = 0.01
dtmin = 1e-11
start_time = 0
end_time = 0.05
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(modules/solid_mechanics/test/tests/jacobian_damper/cube_load.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
displacements = 'disp_x disp_y disp_z'
# This test uses ElementalVariableValue postprocessors on specific
# elements, so element numbering needs to stay unchanged
allow_renumbering = false
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./total_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./top_pull]
type = PiecewiseLinear
x = '0 1 2'
y = '0 0.025 0.05'
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./total_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yy
index_i = 1
index_j = 1
[../]
[]
[BCs]
[./y_pull_function]
type = FunctionDirichletBC
variable = disp_y
boundary = 3
function = top_pull
[../]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./z_bot]
type = DirichletBC
variable = disp_z
boundary = 0
value = 0.0
[../]
[]
[Postprocessors]
[./stress_yy_el]
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 2e5
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Dampers]
[./disp_x_damp]
type = ElementJacobianDamper
max_increment = 0.002
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 2
dt = 1
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/ring_3/ring3_template1.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring3_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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'
petsc_options = '-mat_superlu_dist_iterrefine -mat_superlu_dist_replacetinypivot'
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-5
[]
[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/solid_mechanics/test/tests/mohr_coulomb/small_deform3.i)
# apply repeated stretches in x z directions, and smaller stretches along the y direction,
# so that sigma_I = sigma_II,
# which means that lode angle = 30deg.
# The allows yield surface in meridional plane to be mapped out
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.25E-6*y*sin(t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 50
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningExponential
value_0 = 0
value_residual = 0.8726646 # 50deg
rate = 3000.0
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4
mc_edge_smoother = 20
yield_function_tolerance = 1E-8
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 30
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform3
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/multi/two_surface01.i)
# Plasticit models:
# SimpleTester with a = 0 and b = 1 and strength = 1
# SimpleTester with a = 1 and b = 1 and strength = 2
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 1.5E-6m in the z directions.
# stress_zz = 1.5
#
# Then only the first SimpleTester should activate, and the final stress
# should have have only nonzero component stress_zz = 1
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.5E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[]
[UserObjects]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 2
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = two_surface01
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_02_apply_disps.i)
# Beam bending.
# Displacements are applied to a beam and stresses and moment-stresses
# are measured. Note that since these quantities are averaged over
# elements, to get a good agreement with the analytical solution the
# number of elements (nz) should be increased. Using nx=10
# and nz=10 yields roughly 1% error.
# The displacements applied are a pure-bend around the y axis
# with an additional displacement in the y direction so that
# the result (below) will end up being plane stress (stress_yy=0):
# u_x = Axz
# u_y = Dzy
# u_z = -(A/2)x^2 + (D/2)(z^2-y^2)
# wc_x = -Dy
# wc_y = Ax
# wc_z = 0
# Here A and D are arbitrary constants.
# This results in strains being symmetric, and the only
# nonzero ones are
# ep_xx = Az
# ep_yy = Dz
# ep_zz = Dz
# kappa_xy = -D
# kappa_yx = A
# Then choosing D = -poisson*A gives, for layered Cosserat:
# stress_xx = EAz
# m_yx = (1-poisson^2)*A*B = (1/12)EAh^2 (last equality for joint_shear_stiffness=0)
# where h is the layer thickness. All other stress and moment-stress
# components are zero.
# The test uses: E=1.2, poisson=0.3, A=1.11E-2, h=2
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
xmax = 10
ny = 1
nz = 10
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./clamp_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'left right top bottom front back'
function = '-1.11E-2*x*x/2-0.3*(z*z-y*y)/2.0*1.11E-2'
[../]
[./clamp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'left right top bottom front back'
function = '-0.3*z*y*1.11E-2'
[../]
[./clamp_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'left right top bottom front back'
function = '1.11E-2*x*z'
[../]
[./clamp_wc_x]
type = FunctionDirichletBC
variable = wc_x
boundary = 'left right top bottom front back'
function = '0.3*y*1.11E-2'
[../]
[./clamp_wc_y]
type = FunctionDirichletBC
variable = wc_y
boundary = 'left right top bottom front back'
function = '1.11E-2*x'
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 1.2
poisson = 0.3
layer_thickness = 2.0
joint_normal_stiffness = 1E16
joint_shear_stiffness = 1E-15
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol -sub_pc_factor_shift_type'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10 NONZERO'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = beam_cosserat_02_apply_disps
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/hcp_volumetric_eigenstrain_decrease.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[e_void_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_void_yy]
order = CONSTANT
family = MONOMIAL
[]
[e_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_4]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_9]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_14]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = '300+400*t' # temperature increases at a constant rate
execute_on = timestep_begin
[]
[e_void_xx]
type = RankTwoAux
variable = e_void_xx
rank_two_tensor = void_eigenstrain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_void_yy]
type = RankTwoAux
variable = e_void_yy
rank_two_tensor = void_eigenstrain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[e_void_zz]
type = RankTwoAux
variable = e_void_zz
rank_two_tensor = void_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f_void_zz]
type = RankTwoAux
variable = f_void_zz
rank_two_tensor = volumetric_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[tau_4]
type = MaterialStdVectorAux
variable = resolved_shear_stress_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[tau_9]
type = MaterialStdVectorAux
variable = resolved_shear_stress_9
property = applied_shear_stress
index = 9
execute_on = timestep_end
[]
[tau_14]
type = MaterialStdVectorAux
variable = resolved_shear_stress_14
property = applied_shear_stress
index = 14
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = void_eigenstrain
tan_mod_type = exact
maximum_substep_iteration = 5
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e3
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '9 22' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e2 4.7e2' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
[]
[void_eigenstrain]
type = ComputeCrystalPlasticityVolumetricEigenstrain
eigenstrain_name = void_eigenstrain
deformation_gradient_name = volumetric_deformation_gradient
mean_spherical_void_radius = void_radius
spherical_void_number_density = void_density
[]
[void_radius]
type = ParsedMaterial
property_name = void_radius
coupled_variables = temperature
expression = 'if(temperature<321.0, 1.0e-5, (1.0e-5 - 5.0e-8 * (temperature - 320)))' #mm
[]
[void_density]
type = GenericConstantMaterial
prop_names = void_density
prop_values = '1.0e8' ###1/mm^3
[]
[]
[Postprocessors]
[e_void_xx]
type = ElementAverageValue
variable = e_void_xx
[]
[e_void_yy]
type = ElementAverageValue
variable = e_void_yy
[]
[e_void_zz]
type = ElementAverageValue
variable = e_void_zz
[]
[f_void_zz]
type = ElementAverageValue
variable = f_void_zz
[]
[void_density]
type = ElementAverageMaterialProperty
mat_prop = void_density
execute_on = TIMESTEP_END
[]
[void_radius]
type = ElementAverageMaterialProperty
mat_prop = void_radius
execute_on = TIMESTEP_END
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[tau_4]
type = ElementAverageValue
variable = resolved_shear_stress_4
[]
[tau_9]
type = ElementAverageValue
variable = resolved_shear_stress_9
[]
[tau_14]
type = ElementAverageValue
variable = resolved_shear_stress_14
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-8
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 1e-4
num_steps = 10
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/hoop_strain_comparison_coarse_xaxis.i)
# This test compares the hoop strain at two different elements in an internally
# pressurized cylinder with anisotropic plasticity: different yield condition
# for hoop and axial directions. The elements are located circumferentially
# apart but at same axial position. It is expected that due to pressurization
# hoop strains will develop with uniform magnitude along hoop direction. The
# test verifies that the plastic hoop strain is uniform in hoop direction.
# For 3D simulations with material properties oriented along the curved
# geometry such as cylinder or sphere, the stresses and strains are rotated to
# the local coordinate system from the global coordinate system. The plastic
# strain is calculated in the local coordinate system and then transformed to
# the global coordinate system. This test involves a 3D cylindrical geometry,
# and helps in indirectly verifying that this transformation of stresses and
# strains back and forth between the local and global coordinate system is
# correctly implemented.
[Mesh]
file = quarter_cylinder_coarse_xaxis.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[plasticity_strain_zz]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_zz
index_i = 2
index_j = 2
[]
[stress_zz]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[stress_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[push]
type = PiecewiseLinear
x = '0 1e2'
y = '0 200e6'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_zz elastic_strain_xx elastic_strain_yy stress_xx stress_yy stress_zz strain_zz plastic_strain_zz plastic_strain_xx plastic_strain_yy hoop_stress hoop_strain'
use_automatic_differentiation = true
add_variables = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '1 0 0'
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_x
secondary = top # boundary
penalty = 1.0e+10
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 200.0e9
poissons_ratio = 0.2
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "plasticity"
max_iterations = 50
absolute_tolerance = 1e-30 #1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
# hill_constants = "0.5 0.5 0.5 1.5 1.5 1.5"
hill_constants = "0.25 0.5 0.5 1.5 1.5 1.5"
[]
[plasticity]
type = ADHillElastoPlasticityStressUpdate
hardening_constant = 1.5e10
hardening_exponent = 1.0
yield_stress = 0.0 # 60e6
local_cylindrical_csys = true
axis = x
absolute_tolerance = 1e-15 # 1e-8
relative_tolerance = 1e-13 # 1e-15
internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-6
internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = z_face
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = y_face
value = 0.0
[]
[Pressure]
[Side1]
boundary = inner
function = push
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-12
nl_abs_tol = 1e-14
# nl_abs_tol = 1e-10
l_max_its = 90
nl_max_its = 30
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 0.1e-4
time_t = '0 6.23 10'
time_dt = '0.1 1.0e-2 1.0e-2'
[]
num_steps = 1
start_time = 0
end_time = 200.0
automatic_scaling = true
dtmax = 0.1e-4
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[hoop_strain_elementA]
type = ElementalVariableValue
elementid = 10
variable = hoop_strain
[]
[hoop_strain_elementB]
type = ElementalVariableValue
elementid = 4
variable = hoop_strain
[]
[hoop_strain_diff]
type = DifferencePostprocessor
value1 = hoop_strain_elementA
value2 = hoop_strain_elementB
[]
[]
[Outputs]
csv = true
exodus = false
perf_graph = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/except1.i)
# checking for exception error messages
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 30
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 45
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 1
mc_edge_smoother = 25
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = except1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/ad_cavity_pressure/multiple_postprocessors.i)
#
# Cavity Pressure Test (Volume input as a vector of postprocessors)
#
# 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 (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V0 + gamma * t
# with
# alpha = n0
# beta = T0 / 2
# gamma = - (0.003322259...) * V0
# 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
#
# In this test the internal volume is calculated as the sum of two Postprocessors
# internalVolumeInterior and internalVolumeExterior. This sum equals the value
# reported by the internalVolume postprocessor.
#
# The parameters combined at t = 1 gives p = 301.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
file = 3d.e
[]
[Functions]
[displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[]
[displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[]
[temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[]
[material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.35'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temp]
initial_condition = 240.54443866068704
[]
[material_input]
[]
[]
[AuxVariables]
[pressure_residual_x]
[]
[pressure_residual_y]
[]
[pressure_residual_z]
[]
[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
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
use_automatic_differentiation = true
[]
[heat]
type = ADDiffusion
variable = temp
use_displaced_mesh = true
[]
[material_input_dummy]
type = ADDiffusion
variable = material_input
use_displaced_mesh = true
[]
[]
[AuxKernels]
[stress_xx]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_xx
[]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_yy
[]
[stress_zz]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
[]
[stress_xy]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[]
[stress_yz]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 2
variable = stress_yz
[]
[stress_zx]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 0
variable = stress_zx
[]
[]
[BCs]
[no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[]
[no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[]
[no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[]
[prescribed_left]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[]
[prescribed_right]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[]
[no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[]
[no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[]
[temperatureInterior]
type = ADFunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[]
[MaterialInput]
type = ADFunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[]
[CavityPressure]
[1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
volume = 'internalVolumeInterior internalVolumeExterior'
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[elast_tensor1]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e1
poissons_ratio = 0
block = 1
[]
[strain1]
type = ADComputeFiniteStrain
block = 1
[]
[stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[]
[elast_tensor2]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
block = 2
[]
[strain2]
type = ADComputeFiniteStrain
block = 2
[]
[stress2]
type = ADComputeFiniteStrainElasticStress
block = 2
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
use_pre_SMO_residual = true
[]
[Postprocessors]
[internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[]
[aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[]
[internalVolumeInterior]
type = InternalVolume
boundary = '1 2 3 4 5 6'
execute_on = 'initial linear'
[]
[internalVolumeExterior]
type = InternalVolume
boundary = '13 14 15 16 17 18'
execute_on = 'initial linear'
[]
[materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[]
[]
[Outputs]
exodus = true
[]
(modules/xfem/test/tests/moving_interface/moving_bimaterial_finite_strain.i)
# This test is for two layer materials with different youngs modulus with AD
# The global stress is determined by switching the stress based on level set values
# The material interface is marked by a level set function
# The two layer materials are glued together
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[XFEM]
output_cut_plane = true
[]
[UserObjects]
[level_set_cut_uo]
type = LevelSetCutUserObject
level_set_var = ls
heal_always = true
[]
[]
[Mesh]
use_displaced_mesh = true
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmin = 0
xmax = 5
ymin = 0
ymax = 5
elem_type = QUAD4
[]
[left_bottom]
type = ExtraNodesetGenerator
new_boundary = 'left_bottom'
coord = '0 0'
input = generated_mesh
[]
[left_top]
type = ExtraNodesetGenerator
new_boundary = 'left_top'
coord = '0 5'
input = left_bottom
[]
[]
[Functions]
[ls_func]
type = ParsedFunction
expression = 'y-2.73+t'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[ls]
[]
[a_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[a_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[a_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[b_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[b_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[b_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[ls_function]
type = FunctionAux
variable = ls
function = ls_func
[]
[a_strain_xx]
type = RankTwoAux
variable = a_strain_xx
rank_two_tensor = A_total_strain
index_i = 0
index_j = 0
[]
[a_strain_yy]
type = RankTwoAux
variable = a_strain_yy
rank_two_tensor = A_total_strain
index_i = 1
index_j = 1
[]
[a_strain_xy]
type = RankTwoAux
variable = a_strain_xy
rank_two_tensor = A_total_strain
index_i = 0
index_j = 1
[]
[b_strain_xx]
type = RankTwoAux
variable = b_strain_xx
rank_two_tensor = B_total_strain
index_i = 0
index_j = 0
[]
[b_strain_yy]
type = RankTwoAux
variable = b_strain_yy
rank_two_tensor = B_total_strain
index_i = 1
index_j = 1
[]
[b_strain_xy]
type = RankTwoAux
variable = b_strain_xy
rank_two_tensor = B_total_strain
index_i = 0
index_j = 1
[]
[stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[]
[stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[]
[Constraints]
[dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[]
[dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[]
[]
[BCs]
[bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[]
[bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[]
[topx]
type = FunctionDirichletBC
boundary = top
variable = disp_x
function = 0.03*t
[]
[topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[]
[]
[Materials]
[elasticity_tensor_A]
type = ComputeIsotropicElasticityTensor
base_name = A
youngs_modulus = 1e9
poissons_ratio = 0.3
[]
[strain_A]
type = ComputeFiniteStrain
base_name = A
[]
[stress_A]
type = ComputeFiniteStrainElasticStress
base_name = A
[]
[elasticity_tensor_B]
type = ComputeIsotropicElasticityTensor
base_name = B
youngs_modulus = 1e7
poissons_ratio = 0.3
[]
[strain_B]
type = ComputeFiniteStrain
base_name = B
[]
[stress_B]
type = ComputeFiniteStrainElasticStress
base_name = B
[]
[combined_stress]
type = LevelSetBiMaterialRankTwo
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = stress
[]
[combined_jacob_mult]
type = LevelSetBiMaterialRankFour
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = Jacobian_mult
[]
[]
[Postprocessors]
[disp_x_norm]
type = ElementL2Norm
variable = disp_x
[]
[disp_y_norm]
type = ElementL2Norm
variable = disp_y
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
automatic_scaling = true
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-13
nl_abs_tol = 1e-50
# time control
start_time = 0.0
dt = 0.1
num_steps = 4
max_xfem_update = 1
[]
[Outputs]
print_linear_residuals = false
exodus = true
[]
(modules/combined/test/tests/inelastic_strain/elas_plas/elas_plas_nl1.i)
#
# Test for effective strain calculation.
# Boundary conditions from NAFEMS test NL1
#
# This is not a verification test. The boundary conditions are applied such
# that the first step generates only elastic stresses. The second and third
# steps generate plastic deformation and the effective strain should be
# increasing throughout the run.
#
[GlobalParams]
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = one_elem2.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
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
[../]
[./plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./eff_plastic_strain]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[]
[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_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
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
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[./pressure]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = pressure
scalar_type = Hydrostatic
execute_on = timestep_end
[../]
[./elastic_strain_xx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./elastic_strain_zz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./plastic_strain_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./plastic_strain_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./plastic_strain_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./tot_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./tot_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./tot_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./eff_plastic_strain]
type = MaterialRealAux
property = effective_plastic_strain
variable = eff_plastic_strain
[../]
[]
[Functions]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0.0 0.208e-4 0.50e-4 1.00e-4'
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
[../]
[./strain]
type = ComputePlaneFiniteStrain
block = 1
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'isoplas'
block = 1
[../]
[./isoplas]
type = IsotropicPlasticityStressUpdate
yield_stress = 5e6
hardening_constant = 0.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-4
l_max_its = 100
nl_max_its = 20
dt = 1.0
start_time = 0.0
num_steps = 100
end_time = 3.0
[] # Executioner
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./stress_xy]
type = ElementAverageValue
variable = stress_xy
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./pressure]
type = ElementAverageValue
variable = pressure
[../]
[./el_strain_xx]
type = ElementAverageValue
variable = elastic_strain_xx
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./el_strain_zz]
type = ElementAverageValue
variable = elastic_strain_zz
[../]
[./pl_strain_xx]
type = ElementAverageValue
variable = plastic_strain_xx
[../]
[./pl_strain_yy]
type = ElementAverageValue
variable = plastic_strain_yy
[../]
[./pl_strain_zz]
type = ElementAverageValue
variable = plastic_strain_zz
[../]
[./eff_plastic_strain]
type = ElementAverageValue
variable = eff_plastic_strain
[../]
[./tot_strain_xx]
type = ElementAverageValue
variable = tot_strain_xx
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./tot_strain_zz]
type = ElementAverageValue
variable = tot_strain_zz
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[] # Outputs
(modules/porous_flow/test/tests/poro_elasticity/mandel_fully_saturated_volume.i)
# Mandel's problem of consolodation of a drained medium
# Using the FullySaturatedDarcyBase and FullySaturatedFullySaturatedMassTimeDerivative kernels
# with multiply_by_density = false, so that this problem becomes linear
#
# A sample is in plane strain.
# -a <= x <= a
# -b <= y <= b
# It is squashed with constant force by impermeable, frictionless plattens on its top and bottom surfaces (at y=+/-b)
# Fluid is allowed to leak out from its sides (at x=+/-a)
# The porepressure within the sample is monitored.
#
# As is common in the literature, this is simulated by
# considering the quarter-sample, 0<=x<=a and 0<=y<=b, with
# impermeable, roller BCs at x=0 and y=0 and y=b.
# Porepressure is fixed at zero on x=a.
# Porepressure and displacement are initialised to zero.
# Then the top (y=b) is moved downwards with prescribed velocity,
# so that the total force that is inducing this downwards velocity
# is fixed. The velocity is worked out by solving Mandel's problem
# analytically, and the total force is monitored in the simulation
# to check that it indeed remains constant.
#
# Here are the problem's parameters, and their values:
# Soil width. a = 1
# Soil height. b = 0.1
# Soil's Lame lambda. la = 0.5
# Soil's Lame mu, which is also the Soil's shear modulus. mu = G = 0.75
# Soil bulk modulus. K = la + 2*mu/3 = 1
# Drained Poisson ratio. nu = (3K - 2G)/(6K + 2G) = 0.2
# Soil bulk compliance. 1/K = 1
# Fluid bulk modulus. Kf = 8
# Fluid bulk compliance. 1/Kf = 0.125
# Soil initial porosity. phi0 = 0.1
# Biot coefficient. alpha = 0.6
# Biot modulus. M = 1/(phi0/Kf + (alpha - phi0)(1 - alpha)/K) = 4.705882
# Undrained bulk modulus. Ku = K + alpha^2*M = 2.694118
# Undrained Poisson ratio. nuu = (3Ku - 2G)/(6Ku + 2G) = 0.372627
# Skempton coefficient. B = alpha*M/Ku = 1.048035
# Fluid mobility (soil permeability/fluid viscosity). k = 1.5
# Consolidation coefficient. c = 2*k*B^2*G*(1-nu)*(1+nuu)^2/9/(1-nuu)/(nuu-nu) = 3.821656
# Normal stress on top. F = 1
#
# The solution for porepressure and displacements is given in
# AHD Cheng and E Detournay "A direct boundary element method for plane strain poroelasticity" International Journal of Numerical and Analytical Methods in Geomechanics 12 (1988) 551-572.
# The solution involves complicated infinite series, so I shall not write it here
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 1
nz = 1
xmin = 0
xmax = 1
ymin = 0
ymax = 0.1
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[roller_xmin]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[]
[roller_ymin]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[]
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back front'
[]
[xmax_drained]
type = DirichletBC
variable = porepressure
value = 0
boundary = right
[]
[top_velocity]
type = FunctionDirichletBC
variable = disp_y
function = top_velocity
boundary = top
[]
[]
[Functions]
[top_velocity]
type = PiecewiseLinear
x = '0 0.002 0.006 0.014 0.03 0.046 0.062 0.078 0.094 0.11 0.126 0.142 0.158 0.174 0.19 0.206 0.222 0.238 0.254 0.27 0.286 0.302 0.318 0.334 0.35 0.366 0.382 0.398 0.414 0.43 0.446 0.462 0.478 0.494 0.51 0.526 0.542 0.558 0.574 0.59 0.606 0.622 0.638 0.654 0.67 0.686 0.702'
y = '-0.041824842 -0.042730269 -0.043412712 -0.04428867 -0.045509181 -0.04645965 -0.047268246 -0.047974749 -0.048597109 -0.0491467 -0.049632388 -0.050061697 -0.050441198 -0.050776675 -0.051073238 -0.0513354 -0.051567152 -0.051772022 -0.051953128 -0.052113227 -0.052254754 -0.052379865 -0.052490464 -0.052588233 -0.052674662 -0.052751065 -0.052818606 -0.052878312 -0.052931093 -0.052977751 -0.053018997 -0.053055459 -0.053087691 -0.053116185 -0.053141373 -0.05316364 -0.053183324 -0.053200724 -0.053216106 -0.053229704 -0.053241725 -0.053252351 -0.053261745 -0.053270049 -0.053277389 -0.053283879 -0.053289615'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[tot_force]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[tot_force]
type = ParsedAux
coupled_variables = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
expression = '-stress_yy+0.6*porepressure'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
component = 2
variable = disp_z
[]
[mass0]
type = PorousFlowFullySaturatedMassTimeDerivative
biot_coefficient = 0.6
multiply_by_density = false
coupling_type = HydroMechanical
variable = porepressure
[]
[flux]
type = PorousFlowFullySaturatedDarcyBase
multiply_by_density = false
variable = porepressure
gravity = '0 0 0'
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 8
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '0.5 0.75'
# bulk modulus is lambda + 2*mu/3 = 0.5 + 2*0.75/3 = 1
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure_qp]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseFullySaturated
porepressure = porepressure
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid_qp]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst # only the initial value of this is ever used
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
biot_coefficient = 0.6
solid_bulk_compliance = 1
fluid_bulk_modulus = 8
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.5 0 0 0 1.5 0 0 0 1.5'
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = csv
point = '0.0 0 0'
variable = porepressure
[]
[p1]
type = PointValue
outputs = csv
point = '0.1 0 0'
variable = porepressure
[]
[p2]
type = PointValue
outputs = csv
point = '0.2 0 0'
variable = porepressure
[]
[p3]
type = PointValue
outputs = csv
point = '0.3 0 0'
variable = porepressure
[]
[p4]
type = PointValue
outputs = csv
point = '0.4 0 0'
variable = porepressure
[]
[p5]
type = PointValue
outputs = csv
point = '0.5 0 0'
variable = porepressure
[]
[p6]
type = PointValue
outputs = csv
point = '0.6 0 0'
variable = porepressure
[]
[p7]
type = PointValue
outputs = csv
point = '0.7 0 0'
variable = porepressure
[]
[p8]
type = PointValue
outputs = csv
point = '0.8 0 0'
variable = porepressure
[]
[p9]
type = PointValue
outputs = csv
point = '0.9 0 0'
variable = porepressure
[]
[p99]
type = PointValue
outputs = csv
point = '1 0 0'
variable = porepressure
[]
[xdisp]
type = PointValue
outputs = csv
point = '1 0.1 0'
variable = disp_x
[]
[ydisp]
type = PointValue
outputs = csv
point = '1 0.1 0'
variable = disp_y
[]
[total_downwards_force]
type = ElementAverageValue
outputs = csv
variable = tot_force
[]
[dt]
type = FunctionValuePostprocessor
outputs = console
function = if(0.15*t<0.01,0.15*t,0.01)
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu 1E-14 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 0.7
[TimeStepper]
type = PostprocessorDT
postprocessor = dt
dt = 0.001
[]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = mandel_fully_saturated_volume
[csv]
time_step_interval = 3
type = CSV
[]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[./pk2]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./slip_increment]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[./pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = pk2
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_rate_gss
index = 0
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[../]
[]
[UserObjects]
[./slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
groups = '0 4 8 12'
group_values = '60.8 60.8 60.8'
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
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'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./pk2]
type = ElementAverageValue
variable = pk2
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[./slip_increment]
type = ElementAverageValue
variable = slip_increment
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
dtmin = 0.05
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/use_substep_dt.i)
[GlobalParams]
displacements = 'ux uy uz'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
elem_type = HEX8
displacements = 'ux uy uz'
[]
[AuxVariables]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[rotout]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[gss]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[]
[pushy]
type = FunctionDirichletBC
variable = uy
boundary = top
function = '-0.1*t'
[]
[pullz]
type = FunctionDirichletBC
variable = uz
boundary = front
function = '0.1*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 1
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[gss]
type = ElementAverageValue
variable = gss
[]
[slip_increment]
type = ElementAverageValue
variable = slip_increment
[]
[uy_avg_top]
type = SideAverageValue
variable = uy
boundary = top
[]
[uz_avg_front]
type = SideAverageValue
variable = uz
boundary = front
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1.0
num_steps = 5
dtmin = 0.001
nl_abs_step_tol = 1e-10
[]
[Outputs]
csv = true
[]
(modules/xfem/test/tests/moving_interface/moving_bimaterial_finite_strain_esm.i)
# This test is for two layer materials with different youngs modulus with AD
# The global stress is determined by switching the stress based on level set values
# The material interface is marked by a level set function
# The two layer materials are glued together
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[XFEM]
output_cut_plane = true
[]
[UserObjects]
[level_set_cut_uo]
type = LevelSetCutUserObject
level_set_var = ls
heal_always = true
[]
[esm]
type = CutElementSubdomainModifier
geometric_cut_userobject = level_set_cut_uo
reinitialize_subdomains = '' #no reinitialization of variables or material properties
[]
[]
[Mesh]
use_displaced_mesh = true
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmin = 0
xmax = 5
ymin = 0
ymax = 5
elem_type = QUAD4
[]
[bottom]
type = SubdomainBoundingBoxGenerator
input = generated_mesh
block_id = 0
bottom_left = '0 0 0'
top_right = '5 2.5 0'
[]
[top]
type = SubdomainBoundingBoxGenerator
input = bottom
block_id = 1
bottom_left = '0 2.5 0'
top_right = '5 5 0'
[]
[]
[Functions]
[ls_func]
type = ParsedFunction
expression = 'y-2.73+t'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[ls]
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[ls_function]
type = FunctionAux
variable = ls
function = ls_func
[]
[strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[]
[strain_yy]
type = RankTwoAux
variable = strain_yy
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[]
[strain_xy]
type = RankTwoAux
variable = strain_xy
rank_two_tensor = total_strain
index_i = 0
index_j = 1
[]
[stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[]
[stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[]
[Constraints]
[dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[]
[dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[]
[]
[BCs]
[bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[]
[bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[]
[topx]
type = FunctionDirichletBC
boundary = top
variable = disp_x
function = 0.03*t
[]
[topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[]
[]
[Materials]
[elasticity_tensor_A]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1e9
poissons_ratio = 0.3
[]
[strain_A]
type = ComputeFiniteStrain
block = 1
[]
[stress_A]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[elasticity_tensor_B]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1e7
poissons_ratio = 0.3
[]
[strain_B]
type = ComputeFiniteStrain
block = 0
[]
[stress_B]
type = ComputeFiniteStrainElasticStress
block = 0
[]
[]
[Postprocessors]
[disp_x_norm]
type = ElementL2Norm
variable = disp_x
[]
[disp_y_norm]
type = ElementL2Norm
variable = disp_y
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
automatic_scaling = true
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-13
nl_abs_tol = 1e-50
# time control
start_time = 0.0
dt = 0.1
num_steps = 4
max_xfem_update = 1
[]
[Outputs]
print_linear_residuals = false
exodus = true
[]
(modules/combined/test/tests/generalized_plane_strain_tm_contact/generalized_plane_strain_tm_contact.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
temperature = temp
[]
[Mesh]
file = 2squares.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
[../]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./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
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[Physics]
[./SolidMechanics]
[./GeneralizedPlaneStrain]
[./gps]
use_displaced_mesh = true
[../]
[../]
[../]
[]
[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]
[./tempramp]
type = ParsedFunction
expression = 't'
[../]
[]
[BCs]
[./x]
type = DirichletBC
boundary = '4 6'
variable = disp_x
value = 0.0
[../]
[./y]
type = DirichletBC
boundary = '4 6'
variable = disp_y
value = 0.0
[../]
[./t]
type = DirichletBC
boundary = '4'
variable = temp
value = 0.0
[../]
[./tramp]
type = FunctionDirichletBC
variable = temp
boundary = '6'
function = tempramp
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[../]
[]
[Contact]
[./mech]
primary = 8
secondary = 2
penalty = 1e+10
normalize_penalty = true
tangential_tolerance = .1
normal_smoothing_distance = .1
model = frictionless
formulation = kinematic
[../]
[]
[ThermalContact]
[./thermal]
type = GapHeatTransfer
primary = 8
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
variable = temp
tangential_tolerance = .1
normal_smoothing_distance = .1
gap_conductivity = 0.01
min_gap = 0.001
quadrature = true
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
block = '1 2'
[../]
[./strain]
type = ComputePlaneSmallStrain
eigenstrain_names = eigenstrain
block = '1 2'
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.0
eigenstrain_name = eigenstrain
block = '1 2'
[../]
[./stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[./heatcond]
type = HeatConductionMaterial
thermal_conductivity = 3.0
specific_heat = 300.0
block = '1 2'
[../]
[./density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = '1'
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
petsc_options_iname = '-pc_type -ps_sub_type -pc_factor_mat_solver_package'
petsc_options_value = 'asm lu superlu_dist'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4
# controls for nonlinear iterations
nl_max_its = 20
nl_rel_tol = 1e-9
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/phase_field_fracture/crack2d_computeCrackedStress_finitestrain_plastic.i)
#This input uses PhaseField-Nonconserved Action to add phase field fracture bulk rate kernels
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 40
ny = 20
ymax = 0.5
[]
[./noncrack]
type = BoundingBoxNodeSetGenerator
new_boundary = noncrack
bottom_left = '0.5 0 0'
top_right = '1 0 0'
input = gen
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./elastic_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./plastic_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./uncracked_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./All]
add_variables = true
strain = FINITE
planar_formulation = PLANE_STRAIN
additional_generate_output = 'stress_yy vonmises_stress'
strain_base_name = uncracked
[../]
[../]
[../]
[]
[Modules]
[./PhaseField]
[./Nonconserved]
[./c]
free_energy = E_el
kappa = kappa_op
mobility = L
[../]
[../]
[../]
[]
[Kernels]
[./solid_x]
type = PhaseFieldFractureMechanicsOffDiag
variable = disp_x
component = 0
c = c
[../]
[./solid_y]
type = PhaseFieldFractureMechanicsOffDiag
variable = disp_y
component = 1
c = c
[../]
[./off_disp]
type = AllenCahnElasticEnergyOffDiag
variable = c
displacements = 'disp_x disp_y'
mob_name = L
[../]
[]
[AuxKernels]
[./strain_yy]
type = RankTwoAux
variable = strain_yy
rank_two_tensor = uncracked_mechanical_strain
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[../]
[./elastic_strain_yy]
type = RankTwoAux
variable = elastic_strain_yy
rank_two_tensor = uncracked_elastic_strain
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[../]
[./plastic_strain_yy]
type = RankTwoAux
variable = plastic_strain_yy
rank_two_tensor = uncracked_plastic_strain
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[../]
[./uncracked_stress_yy]
type = RankTwoAux
variable = uncracked_stress_yy
rank_two_tensor = uncracked_stress
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[../]
[]
[BCs]
[./ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = 't'
[../]
[./yfix]
type = DirichletBC
variable = disp_y
boundary = noncrack
value = 0
[../]
[./xfix]
type = DirichletBC
variable = disp_x
boundary = right
value = 0
[../]
[]
[Functions]
[./hf]
type = PiecewiseLinear
x = '0 0.001 0.003 0.023'
y = '0.85 1.0 1.25 1.5'
[../]
[]
[Materials]
[./pfbulkmat]
type = GenericConstantMaterial
prop_names = 'gc_prop l visco'
prop_values = '1e-3 0.05 5e-3'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
base_name = uncracked
[../]
[./isotropic_plasticity]
type = IsotropicPlasticityStressUpdate
yield_stress = 0.85
hardening_function = hf
base_name = uncracked
[../]
[./radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'isotropic_plasticity'
base_name = uncracked
[../]
[./cracked_stress]
type = ComputeCrackedStress
c = c
F_name = E_el
use_current_history_variable = true
uncracked_base_name = uncracked
finite_strain_model = true
[../]
[]
[Postprocessors]
[./av_stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./av_strain_yy]
type = SideAverageValue
variable = disp_y
boundary = top
[../]
[./av_uncracked_stress_yy]
type = ElementAverageValue
variable = uncracked_stress_yy
[../]
[./max_c]
type = ElementExtremeValue
variable = c
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solving_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-8
l_tol = 1e-4
l_max_its = 100
nl_max_its = 10
dt = 2.0e-5
num_steps = 2
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/lagrangian/materials/correctness/stvenantkirchhoff.i)
# Simple 3D test
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[Functions]
[strain]
type = ParsedFunction
expression = 't'
[]
[]
[BCs]
[leftx]
type = DirichletBC
preset = true
boundary = left
variable = disp_x
value = 0.0
[]
[boty]
type = DirichletBC
preset = true
boundary = bottom
variable = disp_y
value = 0.0
[]
[backz]
type = DirichletBC
preset = true
boundary = back
variable = disp_z
value = 0.0
[]
[pull_x]
type = FunctionDirichletBC
boundary = right
variable = disp_x
function = strain
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
shear_modulus = 67000.0
lambda = 40000.0
[]
[compute_stress]
type = ComputeStVenantKirchhoffStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[AuxVariables]
[s11]
family = MONOMIAL
order = CONSTANT
[]
[s21]
family = MONOMIAL
order = CONSTANT
[]
[s31]
family = MONOMIAL
order = CONSTANT
[]
[s12]
family = MONOMIAL
order = CONSTANT
[]
[s22]
family = MONOMIAL
order = CONSTANT
[]
[s32]
family = MONOMIAL
order = CONSTANT
[]
[s13]
family = MONOMIAL
order = CONSTANT
[]
[s23]
family = MONOMIAL
order = CONSTANT
[]
[s33]
family = MONOMIAL
order = CONSTANT
[]
[F11]
family = MONOMIAL
order = CONSTANT
[]
[F21]
family = MONOMIAL
order = CONSTANT
[]
[F31]
family = MONOMIAL
order = CONSTANT
[]
[F12]
family = MONOMIAL
order = CONSTANT
[]
[F22]
family = MONOMIAL
order = CONSTANT
[]
[F32]
family = MONOMIAL
order = CONSTANT
[]
[F13]
family = MONOMIAL
order = CONSTANT
[]
[F23]
family = MONOMIAL
order = CONSTANT
[]
[F33]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s11]
type = RankTwoAux
variable = s11
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[s21]
type = RankTwoAux
variable = s21
rank_two_tensor = pk1_stress
index_i = 1
index_j = 0
[]
[s31]
type = RankTwoAux
variable = s31
rank_two_tensor = pk1_stress
index_i = 2
index_j = 0
[]
[s12]
type = RankTwoAux
variable = s12
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[s22]
type = RankTwoAux
variable = s22
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[s32]
type = RankTwoAux
variable = s32
rank_two_tensor = pk1_stress
index_i = 2
index_j = 1
[]
[s13]
type = RankTwoAux
variable = s13
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[s23]
type = RankTwoAux
variable = s23
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[s33]
type = RankTwoAux
variable = s33
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[F11]
type = RankTwoAux
variable = F11
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 0
[]
[F21]
type = RankTwoAux
variable = F21
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 0
[]
[F31]
type = RankTwoAux
variable = F31
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 0
[]
[F12]
type = RankTwoAux
variable = F12
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 1
[]
[F22]
type = RankTwoAux
variable = F22
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[F32]
type = RankTwoAux
variable = F32
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 1
[]
[F13]
type = RankTwoAux
variable = F13
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 2
[]
[F23]
type = RankTwoAux
variable = F23
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 2
[]
[F33]
type = RankTwoAux
variable = F33
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 2
[]
[]
[Postprocessors]
[s11]
type = ElementAverageValue
variable = s11
execute_on = 'initial timestep_end'
[]
[s21]
type = ElementAverageValue
variable = s21
execute_on = 'initial timestep_end'
[]
[s31]
type = ElementAverageValue
variable = s31
execute_on = 'initial timestep_end'
[]
[s12]
type = ElementAverageValue
variable = s12
execute_on = 'initial timestep_end'
[]
[s22]
type = ElementAverageValue
variable = s22
execute_on = 'initial timestep_end'
[]
[s32]
type = ElementAverageValue
variable = s32
execute_on = 'initial timestep_end'
[]
[s13]
type = ElementAverageValue
variable = s13
execute_on = 'initial timestep_end'
[]
[s23]
type = ElementAverageValue
variable = s23
execute_on = 'initial timestep_end'
[]
[s33]
type = ElementAverageValue
variable = s33
execute_on = 'initial timestep_end'
[]
[F11]
type = ElementAverageValue
variable = F11
execute_on = 'initial timestep_end'
[]
[F21]
type = ElementAverageValue
variable = F21
execute_on = 'initial timestep_end'
[]
[F31]
type = ElementAverageValue
variable = F31
execute_on = 'initial timestep_end'
[]
[F12]
type = ElementAverageValue
variable = F12
execute_on = 'initial timestep_end'
[]
[F22]
type = ElementAverageValue
variable = F22
execute_on = 'initial timestep_end'
[]
[F32]
type = ElementAverageValue
variable = F32
execute_on = 'initial timestep_end'
[]
[F13]
type = ElementAverageValue
variable = F13
execute_on = 'initial timestep_end'
[]
[F23]
type = ElementAverageValue
variable = F23
execute_on = 'initial timestep_end'
[]
[F33]
type = ElementAverageValue
variable = F33
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 5
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.01
dtmin = 0.01
end_time = 0.01
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/mean_cap_TC/small_deform2.i)
# apply uniform stretch in x, y and z directions.
# trial_stress(0, 0) = -2
# trial_stress(1, 1) = 6
# trial_stress(2, 2) = 10
# With tensile_strength = 2, the algorithm should return to trace(stress) = 2, or
# stress(0, 0) = -6
# stress(1, 1) = 2
# stress(2, 2) = 6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = SolidMechanicsHardeningConstant
value = 2
[../]
[./compressive_strength]
type = SolidMechanicsHardeningConstant
value = -1
[../]
[./cap]
type = SolidMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = true
use_custom_cto = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/drucker_prager/small_deform3_native.i)
# apply repeated stretches in x z directions, and smaller stretches along the y direction,
# so that sigma_I = sigma_II,
# which means that lode angle = 30deg.
# The allows yield surface in meridional plane to be mapped out
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '-1.35E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
smoother = 8
mc_interpolation_scheme = native
yield_function_tolerance = 1E-7
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-13
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform3_native
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/planar_hard4.i)
# apply repeated stretches in x direction, and smaller stretches along the y and z directions,
# so that sigma_II = sigma_III,
# which means that lode angle = -30deg.
# Both return to the edge (at lode_angle=-30deg, ie 000101) and tip are experienced.
#
# It is checked that the yield functions are less than their tolerance values
# It is checked that the cohesion hardens correctly
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0.05E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.05E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[Functions]
[./should_be_zero_fcn]
type = ParsedFunction
expression = 'if((a<1E-5)&(b<1E-5)&(c<1E-5)&(d<1E-5)&(g<1E-5)&(h<1E-5),0,abs(a)+abs(b)+abs(c)+abs(d)+abs(g)+abs(h))'
symbol_names = 'a b c d g h'
symbol_values = 'f0 f1 f2 f3 f4 f5'
[../]
[./coh_analytic]
type = ParsedFunction
expression = '20-10*exp(-1E5*intnl)'
symbol_names = intnl
symbol_values = internal
[../]
[./coh_from_yieldfcns]
type = ParsedFunction
expression = '(f0+f1-(sxx+syy)*sin(phi))/(-2)/cos(phi)'
symbol_names = 'f0 f1 sxx syy phi'
symbol_values = 'f0 f1 s_xx s_yy 0.8726646'
[../]
[./should_be_zero_coh]
type = ParsedFunction
expression = 'if(abs(a-b)<1E-6,0,1E6*abs(a-b))'
symbol_names = 'a b'
symbol_values = 'Coh_analytic Coh_moose'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn0]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn1]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn2]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn3]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn4]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn5]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn0]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn0
[../]
[./yield_fcn1]
type = MaterialStdVectorAux
index = 1
property = plastic_yield_function
variable = yield_fcn1
[../]
[./yield_fcn2]
type = MaterialStdVectorAux
index = 2
property = plastic_yield_function
variable = yield_fcn2
[../]
[./yield_fcn3]
type = MaterialStdVectorAux
index = 3
property = plastic_yield_function
variable = yield_fcn3
[../]
[./yield_fcn4]
type = MaterialStdVectorAux
index = 4
property = plastic_yield_function
variable = yield_fcn4
[../]
[./yield_fcn5]
type = MaterialStdVectorAux
index = 5
property = plastic_yield_function
variable = yield_fcn5
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = yield_fcn0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = yield_fcn1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = yield_fcn2
[../]
[./f3]
type = PointValue
point = '0 0 0'
variable = yield_fcn3
[../]
[./f4]
type = PointValue
point = '0 0 0'
variable = yield_fcn4
[../]
[./f5]
type = PointValue
point = '0 0 0'
variable = yield_fcn5
[../]
[./yfcns_should_be_zero]
type = FunctionValuePostprocessor
function = should_be_zero_fcn
[../]
[./Coh_analytic]
type = FunctionValuePostprocessor
function = coh_analytic
[../]
[./Coh_moose]
type = FunctionValuePostprocessor
function = coh_from_yieldfcns
[../]
[./cohesion_difference_should_be_zero]
type = FunctionValuePostprocessor
function = should_be_zero_coh
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningExponential
value_0 = 10
value_residual = 20
rate = 1E5
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 0.8726646
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 1 #0.8726646 # 50deg
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
use_custom_returnMap = true
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-12
plastic_models = mc
[../]
[]
[Executioner]
end_time = 10
dt = 2
type = Transient
[]
[Outputs]
file_base = planar_hard4
exodus = false
[./csv]
type = CSV
hide = 'f0 f1 f2 f3 f4 f5 s_xy s_xz s_yz Coh_analytic Coh_moose'
execute_on = 'timestep_end'
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/patch/small_patch.i)
[Mesh]
[base]
type = FileMeshGenerator
file = 'patch.xda'
[]
[sets]
input = base
type = SideSetsFromPointsGenerator
new_boundary = 'left right bottom top back front'
points = ' 0 0.5 0.5
1 0.5 0.5
0.5 0.0 0.5
'
' 0.5 1.0 0.5
0.5 0.5 0.0
0.5 0.5 1.0'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[BCs]
[left]
type = DirichletBC
preset = true
variable = disp_x
boundary = left
value = 0.0
[]
[bottom]
type = DirichletBC
preset = true
variable = disp_y
boundary = bottom
value = 0.0
[]
[back]
type = DirichletBC
preset = true
variable = disp_z
boundary = back
value = 0.0
[]
[front]
type = DirichletBC
preset = true
variable = disp_z
boundary = front
value = 0.1
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 1
solve_type = 'newton'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
end_time = 1
dtmin = 1.0
[]
[Outputs]
exodus = true
[]
(modules/porous_flow/test/tests/poro_elasticity/mandel_constM.i)
# Mandel's problem of consolodation of a drained medium
#
# A sample is in plane strain.
# -a <= x <= a
# -b <= y <= b
# It is squashed with constant force by impermeable, frictionless plattens on its top and bottom surfaces (at y=+/-b)
# Fluid is allowed to leak out from its sides (at x=+/-a)
# The porepressure within the sample is monitored.
#
# As is common in the literature, this is simulated by
# considering the quarter-sample, 0<=x<=a and 0<=y<=b, with
# impermeable, roller BCs at x=0 and y=0 and y=b.
# Porepressure is fixed at zero on x=a.
# Porepressure and displacement are initialised to zero.
# Then the top (y=b) is moved downwards with prescribed velocity,
# so that the total force that is inducing this downwards velocity
# is fixed. The velocity is worked out by solving Mandel's problem
# analytically, and the total force is monitored in the simulation
# to check that it indeed remains constant.
#
# Here are the problem's parameters, and their values:
# Soil width. a = 1
# Soil height. b = 0.1
# Soil's Lame lambda. la = 0.5
# Soil's Lame mu, which is also the Soil's shear modulus. mu = G = 0.75
# Soil bulk modulus. K = la + 2*mu/3 = 1
# Drained Poisson ratio. nu = (3K - 2G)/(6K + 2G) = 0.2
# Soil bulk compliance. 1/K = 1
# Fluid bulk modulus. Kf = 8
# Fluid bulk compliance. 1/Kf = 0.125
# Soil initial porosity. phi0 = 0.1
# Biot coefficient. alpha = 0.6
# Biot modulus. M = 1/(phi0/Kf + (alpha - phi0)(1 - alpha)/K) = 4.705882
# Undrained bulk modulus. Ku = K + alpha^2*M = 2.694118
# Undrained Poisson ratio. nuu = (3Ku - 2G)/(6Ku + 2G) = 0.372627
# Skempton coefficient. B = alpha*M/Ku = 1.048035
# Fluid mobility (soil permeability/fluid viscosity). k = 1.5
# Consolidation coefficient. c = 2*k*B^2*G*(1-nu)*(1+nuu)^2/9/(1-nuu)/(nuu-nu) = 3.821656
# Normal stress on top. F = 1
#
# The solution for porepressure and displacements is given in
# AHD Cheng and E Detournay "A direct boundary element method for plane strain poroelasticity" International Journal of Numerical and Analytical Methods in Geomechanics 12 (1988) 551-572.
# The solution involves complicated infinite series, so I shall not write it here
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 1
nz = 1
xmin = 0
xmax = 1
ymin = 0
ymax = 0.1
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1e-5
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[roller_xmin]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[]
[roller_ymin]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[]
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back front'
[]
[xmax_drained]
type = DirichletBC
variable = porepressure
value = 0
boundary = right
[]
[top_velocity]
type = FunctionDirichletBC
variable = disp_y
function = top_velocity
boundary = top
[]
[]
[Functions]
[top_velocity]
type = PiecewiseLinear
x = '0 0.002 0.006 0.014 0.03 0.046 0.062 0.078 0.094 0.11 0.126 0.142 0.158 0.174 0.19 0.206 0.222 0.238 0.254 0.27 0.286 0.302 0.318 0.334 0.35 0.366 0.382 0.398 0.414 0.43 0.446 0.462 0.478 0.494 0.51 0.526 0.542 0.558 0.574 0.59 0.606 0.622 0.638 0.654 0.67 0.686 0.702'
y = '-0.041824842 -0.042730269 -0.043412712 -0.04428867 -0.045509181 -0.04645965 -0.047268246 -0.047974749 -0.048597109 -0.0491467 -0.049632388 -0.050061697 -0.050441198 -0.050776675 -0.051073238 -0.0513354 -0.051567152 -0.051772022 -0.051953128 -0.052113227 -0.052254754 -0.052379865 -0.052490464 -0.052588233 -0.052674662 -0.052751065 -0.052818606 -0.052878312 -0.052931093 -0.052977751 -0.053018997 -0.053055459 -0.053087691 -0.053116185 -0.053141373 -0.05316364 -0.053183324 -0.053200724 -0.053216106 -0.053229704 -0.053241725 -0.053252351 -0.053261745 -0.053270049 -0.053277389 -0.053283879 -0.053289615'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[tot_force]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[tot_force]
type = ParsedAux
coupled_variables = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
expression = '-stress_yy+0.6*porepressure'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
component = 2
variable = disp_z
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[flux]
type = PorousFlowAdvectiveFlux
variable = porepressure
gravity = '0 0 0'
fluid_component = 0
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 8
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '0.5 0.75'
# bulk modulus is lambda + 2*mu/3 = 0.5 + 2*0.75/3 = 1
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityHMBiotModulus
porosity_zero = 0.1
biot_coefficient = 0.6
solid_bulk = 1
constant_fluid_bulk_modulus = 8
constant_biot_modulus = 4.7058823529
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.5 0 0 0 1.5 0 0 0 1.5'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 0 # unimportant in this fully-saturated situation
phase = 0
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = csv
point = '0.0 0 0'
variable = porepressure
[]
[p1]
type = PointValue
outputs = csv
point = '0.1 0 0'
variable = porepressure
[]
[p2]
type = PointValue
outputs = csv
point = '0.2 0 0'
variable = porepressure
[]
[p3]
type = PointValue
outputs = csv
point = '0.3 0 0'
variable = porepressure
[]
[p4]
type = PointValue
outputs = csv
point = '0.4 0 0'
variable = porepressure
[]
[p5]
type = PointValue
outputs = csv
point = '0.5 0 0'
variable = porepressure
[]
[p6]
type = PointValue
outputs = csv
point = '0.6 0 0'
variable = porepressure
[]
[p7]
type = PointValue
outputs = csv
point = '0.7 0 0'
variable = porepressure
[]
[p8]
type = PointValue
outputs = csv
point = '0.8 0 0'
variable = porepressure
[]
[p9]
type = PointValue
outputs = csv
point = '0.9 0 0'
variable = porepressure
[]
[p99]
type = PointValue
outputs = csv
point = '1 0 0'
variable = porepressure
[]
[xdisp]
type = PointValue
outputs = csv
point = '1 0.1 0'
variable = disp_x
[]
[ydisp]
type = PointValue
outputs = csv
point = '1 0.1 0'
variable = disp_y
[]
[total_downwards_force]
type = ElementAverageValue
outputs = csv
variable = tot_force
[]
[dt]
type = FunctionValuePostprocessor
outputs = console
function = if(0.15*t<0.01,0.15*t,0.01)
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu 1E-14 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 0.7
[TimeStepper]
type = PostprocessorDT
postprocessor = dt
dt = 0.001
[]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = mandel_constM
[csv]
time_step_interval = 3
type = CSV
[]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial1.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
# back = zmin
# front = zmax
# bottom = ymin
# top = ymax
# left = xmin
# right = xmax
[./xmin_xzero]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = '0'
[../]
[./ymin_yzero]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = '0'
[../]
[./zmin_zzero]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = '0'
[../]
[./zmax_disp]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front'
function = '-1E-3*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./mc_int]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10E6
[../]
[./mc_phi]
type = SolidMechanicsHardeningExponential
value_0 = 0
value_residual = 0.6981317 # 40deg
rate = 10000
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 0
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 0
mc_edge_smoother = 25
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-10
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '5.77E10 3.85E10' # young = 100Gpa, poisson = 0.3
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-10
plastic_models = mc
max_NR_iterations = 1000
debug_fspb = crash
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
end_time = 0.5
dt = 0.05
solve_type = PJFNK # cannot use NEWTON because we are using ComputeFiniteStrain, and hence the Jacobian contributions will not be correct, even though ComputeMultiPlasticityStress will compute the correct consistent tangent operator for small strains
type = Transient
line_search = 'none'
nl_rel_tol = 1E-10
l_tol = 1E-3
l_max_its = 200
nl_max_its = 10
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[]
[Outputs]
file_base = uni_axial1
exodus = true
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/special/patch.i)
[Mesh]
[base]
type = FileMeshGenerator
file = 'patch.xda'
[]
[sets]
input = base
type = SideSetsFromPointsGenerator
new_boundary = 'left right bottom top back front'
points = ' 0 0.5 0.5
1 0.5 0.5
0.5 0.0 0.5
'
' 0.5 1.0 0.5
0.5 0.5 0.0
0.5 0.5 1.0'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
base_name = "whatever"
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[sdx]
type = UpdatedLagrangianStressDivergence
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[sdy]
type = UpdatedLagrangianStressDivergence
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[sdz]
type = UpdatedLagrangianStressDivergence
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = whatever_cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = whatever_mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[BCs]
[left]
type = DirichletBC
preset = true
variable = disp_x
boundary = left
value = 0.0
[]
[bottom]
type = DirichletBC
preset = true
variable = disp_y
boundary = bottom
value = 0.0
[]
[back]
type = DirichletBC
preset = true
variable = disp_z
boundary = back
value = 0.0
[]
[front]
type = DirichletBC
preset = true
variable = disp_z
boundary = front
value = 0.1
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
elasticity_tensor = whatever_elasticity_tensor
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 1
solve_type = 'newton'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
end_time = 1
dtmin = 1.0
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/anisotropic_plasticity/ad_aniso_plasticity_x_rotate.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[plasticity_strain_zz]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plastic_strain_zz
index_i = 2
index_j = 2
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[elastic_strain_yy]
type = ADRankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
[]
[sigma_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1e1 1e8'
y = '0 -4e2 -4e2'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 70000
poissons_ratio = 0.25
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_plasticity"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5829856 0.364424 0.6342174 2.0691375 2.3492325 1.814589"
base_name = trial_plasticity
rotation_angles = '90 90 90'
[]
[trial_plasticity]
type = ADHillPlasticityStressUpdate
hardening_constant = 2000.0
yield_stress = 0.001 # was 200 for verification
absolute_tolerance = 1e-14
relative_tolerance = 1e-12
base_name = trial_plasticity
internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-6
internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 25
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 1.0e-5
time_t = '0 3.4e-5 10'
time_dt = '1.0e-5 1.0e-7 1.0e-7'
[]
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[plasticity_strain_yy]
type = ElementalVariableValue
variable = plastic_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_yy]
type = ElementalVariableValue
variable = elastic_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_yy]
type = ElementalVariableValue
variable = stress_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[plasticity_strain_xx]
type = ElementalVariableValue
variable = plastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[plasticity_strain_zz]
type = ElementalVariableValue
variable = plastic_strain_zz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/action/no_block.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics/SolidMechanics/QuasiStatic]
# parameters that apply to all subblocks are specified at this level. But
# no subblocks are present. This should trigger a warning.
add_variables = true
strain = FINITE
generate_output = 'stress_xx'
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress1]
type = ComputeFiniteStrainElasticStress
block = 1
[../]
[./_elastic_stress2]
type = ComputeFiniteStrainElasticStress
block = 2
[../]
[]
[BCs]
[./left]
type = DirichletBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[./top]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./right]
type = DirichletBC
boundary = 'right'
variable = disp_x
value = 0.01
[../]
[./bottom]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.01
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/initial_stress/gravity.i)
# Apply an initial stress that should be
# exactly that caused by gravity, and then
# do a transient step to check that nothing
# happens
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 10
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -10
zmax = 0
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[./weight]
type = BodyForce
variable = disp_z
value = -0.5 # this is density*gravity
[../]
[]
[BCs]
# back = zmin
# front = zmax
# bottom = ymin
# top = ymax
# left = xmin
# right = xmax
[./x]
type = DirichletBC
variable = disp_x
boundary = 'left right'
value = 0
[../]
[./y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0
[../]
[./z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./weight]
type = ParsedFunction
expression = '0.5*z' # initial stress that should result from the weight force
[../]
[./kxx]
type = ParsedFunction
expression = '0.4*z' # some arbitrary xx and yy stress that should not affect the result
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0.25
[../]
[./strain]
type = ComputeSmallStrain
eigenstrain_names = ini_stress
[../]
[./strain_from_initial_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = 'kxx 0 0 0 kxx 0 0 0 weight'
eigenstrain_name = ini_stress
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
end_time = 1.0
dt = 1.0
solve_type = NEWTON
type = Transient
nl_abs_tol = 1E-8
nl_rel_tol = 1E-12
l_tol = 1E-3
l_max_its = 200
nl_max_its = 400
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[]
[Outputs]
file_base = gravity
exodus = true
[]
(modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment.i)
# Test that models bending of a cantilever beam using shell elements
# A cantilever beam of length 10 m (in Y direction) and cross-section
# 1 m x 0.1 m is modeled using 4 shell elements placed along the length
# (Figure 6a from Dvorkin and Bathe, 1984). All displacements and
# X rotations are fixed on the bottom boundary. E = 2100000 and v = 0.0.
# A load of 0.5 N (in the Z direction) is applied at each node on the top
# boundary resulting in a total load of 1 N.
# The analytical solution for displacement at tip using small strain/rotations # is PL^3/3EI + PL/AG = 1.90485714 m
# The FEM solution using 4 shell elements is 1.875095 m with a relative error
# of 1.5%.
# Similarly, the analytical solution for slope at tip is PL^2/2EI = 0.285714286
# The FEM solution is 0.2857143 and the relative error is 5e-6%.
# The stress_yy for the four elements at z = -0.57735 * (t/2) (first qp below mid-surface of shell) are:
# 3031.089 Pa, 2165.064 Pa, 1299.038 Pa and 433.0127 Pa.
# Note the above values are the average stresses in each element.
# Analytically, stress_yy decreases linearly from y = 0 to y = 10 m.
# The maximum value of stress_yy at y = 0 is Mz/I = PL * 0.57735*(t/2)/I = 3464.1 Pa
# Therefore, the analytical value of stress at z = -0.57735 * (t/2) at the mid-point
# of the four elements are:
# 3031.0875 Pa, 2165.0625 Pa, 1299.0375 Pa ,433.0125 Pa
# The relative error in stress_yy is in the order of 5e-5%.
# The stress_yz at z = -0.57735 * (t/2) at all four elements from the simulation is 10 Pa.
# The analytical solution for the shear stress is: V/2/I *((t^2)/4 - z^2), where the shear force (V)
# is 1 N at any y along the length of the beam. Therefore, the analytical shear stress at
# z = -0.57735 * (t/2) is 10 Pa at any location along the length of the beam.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 4
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 10.0
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
# aux variables for dynamics
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
[../]
# Kernels for dynamics
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 'bottom'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = 'bottom'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = 'bottom'
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 'bottom'
value = 0.0
[../]
[]
[Functions]
[./force_function]
type = PiecewiseLinear
x = '0.0 1.0'
y = '0.0 0.5'
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = 'top'
function = force_function
[../]
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[../]
[./inertial_force_x]
type = ADInertialForceShell
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 0
variable = disp_x
thickness = 0.1
[../]
[./inertial_force_y]
type = ADInertialForceShell
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 1
variable = disp_y
thickness = 0.1
[../]
[./inertial_force_z]
type = ADInertialForceShell
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 2
variable = disp_z
thickness = 0.1
[../]
[./inertial_force_rot_x]
type = ADInertialForceShell
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 3
variable = rot_x
thickness = 0.1
[../]
[./inertial_force_rot_y]
type = ADInertialForceShell
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 4
variable = rot_y
thickness = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 2100000
poissons_ratio = 0.0
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_z_tip]
type = PointValue
point = '1.0 10.0 0.0'
variable = disp_z
[../]
[./rot_x_tip]
type = PointValue
point = '0.0 10.0 0.0'
variable = rot_x
[../]
[./stress_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yy
[../]
[./stress_yy_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yy
[../]
[./stress_yy_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yy
[../]
[./stress_yy_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yy
[../]
[./stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[../]
[./stress_yz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yz
[../]
[./stress_yz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yz
[../]
[./stress_yz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yz
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_max_its = 2
nl_rel_tol = 1e-10
nl_abs_tol = 5e-8
dt = 0.0005
dtmin = 0.0005
end_time = 1
[TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[]
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/mean_cap_TC/small_deform3.i)
# apply nonuniform compression in x, y and z directions such that
# trial_stress(0, 0) = 2
# trial_stress(1, 1) = -8
# trial_stress(2, 2) = -10
# With compressive_strength = -1, the algorithm should return to trace(stress) = -1, or
# stress(0, 0) = 7
# stress(1, 1) = -3
# stress(2, 2) = -5
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '-4E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = SolidMechanicsHardeningConstant
value = 2
[../]
[./compressive_strength]
type = SolidMechanicsHardeningConstant
value = -1
[../]
[./cap]
type = SolidMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform3
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/contact/test/tests/hertz_spherical/hertz_contact_rz_quad8.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'
[]
[Problem]
coord_type = RZ
[]
[Mesh]#Comment
file = hertz_contact_rz_quad8.e
displacements = 'disp_x disp_y'
allow_renumbering = false
[] # Mesh
[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
[../]
[] # 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
[../]
[] # AuxVariables
[Physics/SolidMechanics/QuasiStatic]
[./all]
add_variables = true
strain = SMALL
[../]
[]
[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
[../]
[] # AuxKernels
[BCs]
[./base_y]
type = DirichletBC
variable = disp_y
boundary = 1000
value = 0.0
[../]
[./symm_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./disp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = disp_y
[../]
[] # BCs
[Contact]
[./dummy_name]
primary = 1000
secondary = 100
# normal_smoothing_distance = 0.01
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+10
[../]
[]
[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_abs_tol = 1e-9
l_max_its = 200
start_time = 0.0
dt = 0.5
end_time = 2.0
[./Quadrature]
order = FIFTH
[../]
[] # Executioner
[Postprocessors]
[./maxdisp]
type = NodalVariableValue
nodeid = 103 # 104-1 where 104 is the exodus node number of the top-left node
variable = disp_y
[../]
[]
[Outputs]
[./out]
type = Exodus
[../]
[] # Output
(modules/solid_mechanics/test/tests/orthotropic_plasticity/orthotropic.i)
# UserObject Orthotropic test, with constant hardening.
# Linear strain is applied in the x and y direction.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -.5
xmax = .5
ymin = -.5
ymax = .5
zmin = -.5
zmax = .5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_xz'
[../]
[]
[BCs]
[./xdisp]
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = '0.005*t'
[../]
[./ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '0.005*t'
[../]
[./yfix]
type = DirichletBC
variable = disp_y
#boundary = 'bottom top'
boundary = 'bottom'
value = 0
[../]
[./xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./zfix]
type = DirichletBC
variable = disp_z
#boundary = 'front back'
boundary = 'back'
value = 0
[../]
[]
[AuxVariables]
[./plastic_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl]
order = CONSTANT
family = MONOMIAL
[../]
[./sdev]
order = CONSTANT
family = MONOMIAL
[../]
[./sdet]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./plastic_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xx
index_i = 0
index_j = 0
[../]
[./plastic_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xy
index_i = 0
index_j = 1
[../]
[./plastic_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xz
index_i = 0
index_j = 2
[../]
[./plastic_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_yy
index_i = 1
index_j = 1
[../]
[./plastic_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_yz
index_i = 1
index_j = 2
[../]
[./plastic_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[../]
[./sdev]
type = RankTwoScalarAux
variable = sdev
rank_two_tensor = stress
scalar_type = VonMisesStress
[../]
[]
[Postprocessors]
[./sdev]
type = PointValue
point = '0 0 0'
variable = sdev
[../]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./p_xx]
type = PointValue
point = '0 0 0'
variable = plastic_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./p_xy]
type = PointValue
point = '0 0 0'
variable = plastic_xy
[../]
[./p_xz]
type = PointValue
point = '0 0 0'
variable = plastic_xz
[../]
[./p_yz]
type = PointValue
point = '0 0 0'
variable = plastic_yz
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./p_yy]
type = PointValue
point = '0 0 0'
variable = plastic_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./p_zz]
type = PointValue
point = '0 0 0'
variable = plastic_zz
[../]
[./intnl]
type = PointValue
point = '0 0 0'
variable = intnl
[../]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningConstant
value = 300
[../]
[./Orthotropic]
type = SolidMechanicsPlasticOrthotropic
b = -0.2
c1 = '1 1 1 1 1 1'
c2 = '1 1 1 1 1 1'
associative = true
yield_strength = str
yield_function_tolerance = 1e-5
internal_constraint_tolerance = 1e-9
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '121e3 80e3'
[../]
[./mc]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1e-9
plastic_models = Orthotropic
debug_fspb = crash
tangent_operator = elastic
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
num_steps = 3
dt = .5
type = Transient
nl_rel_tol = 1e-6
nl_max_its = 10
l_tol = 1e-4
l_max_its = 50
solve_type = PJFNK
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
perf_graph = false
csv = true
[]
(modules/solid_mechanics/test/tests/dynamics/time_integration/hht_test_ti.i)
# Test for HHT time integration
# The test is for an 1D bar element of unit length fixed on one end
# with a ramped pressure boundary condition applied to the other end.
# alpha, beta and gamma are HHT time integration parameters
# The equation of motion in terms of matrices is:
#
# M*accel + alpha*(K*disp - K*disp_old) + K*disp = P(t+alpha dt)*Area
#
# Here M is the mass matrix, K is the stiffness matrix, P is the applied pressure
#
# This equation is equivalent to:
#
# density*accel + alpha*(Div stress - Div stress_old) +Div Stress= P(t+alpha dt)
#
# The first term on the left is evaluated using the Inertial force kernel
# The next two terms on the left involving alpha are evaluated using the
# DynamicStressDivergenceTensors Kernel
# The residual due to Pressure is evaluated using Pressure boundary condition
#
# The system will come to steady state slowly after the pressure becomes constant.
# Alpha equal to zero will result in Newmark integration.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x disp_y disp_z'
hht_alpha = 0.11
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
[../]
[]
[AuxKernels]
[./accel_x] # These auxkernls are only for checking output
type = TestNewmarkTI
displacement = disp_x
variable = accel_x
first = false
[../]
[./accel_y]
type = TestNewmarkTI
displacement = disp_y
variable = accel_y
first = false
[../]
[./accel_z]
type = TestNewmarkTI
displacement = disp_z
variable = accel_z
first = false
[../]
[./vel_x]
type = TestNewmarkTI
displacement = disp_x
variable = vel_x
[../]
[./vel_y]
type = TestNewmarkTI
displacement = disp_y
variable = vel_y
[../]
[./vel_z]
type = TestNewmarkTI
displacement = disp_z
variable = vel_z
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 0
index_j = 1
[../]
[]
[BCs]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = top
value=0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = top
value=0.0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value=0.0
[../]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value=0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value=0.0
[../]
[./Pressure]
[./Side1]
boundary = bottom
function = pressure
displacements = 'disp_x disp_y disp_z'
factor = 1
alpha = 0.11
[../]
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '210e9 0'
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '7750'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dt = 0.1
# Time integration scheme
scheme = 'newmark-beta'
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.1 0.2 1.0 1.0 1.0'
scale_factor = 1e9
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp]
type = NodalExtremeValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalExtremeValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalExtremeValue
variable = accel_y
boundary = bottom
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
[../]
[]
[Outputs]
file_base = 'hht_test_out'
exodus = true
perf_graph = true
[]
(modules/combined/test/tests/beam_eigenstrain_transfer/subapp2_uo_transfer.i)
# This test involves only thermal expansion strains on a 2x2x2 cube of approximate
# steel material. An initial temperature of 25 degrees C is given for the material,
# and an auxkernel is used to calculate the temperature in the entire cube to
# raise the temperature each time step. After the first timestep,in which the
# temperature jumps, the temperature increases by 6.25C each timestep.
# The thermal strain increment should therefore be
# 6.25 C * 1.3e-5 1/C = 8.125e-5 m/m.
# This test is also designed to be used to identify problems with restart files
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 5
xmin = 0.0
xmax = 0.5
ymin = 0.0
ymax = 0.150080
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temp]
[../]
[./axial_strain]
order = FIRST
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(1000.0)+300.0
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./axial_strain]
type = RankTwoAux
variable = axial_strain
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./axial_str]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0.0 0.0'
end_point = '0.5 0.150080 0.0'
variable = axial_strain
num_points = 11
sort_by = 'id'
[../]
[]
[Postprocessors]
[./end_disp]
type = PointValue
variable = disp_y
point = '0.5 0.150080 0.0'
[../]
[]
(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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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/solid_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_squares.i)
[Mesh]
file = 2squares.e
displacements = 'disp_x disp_y'
[]
[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
[../]
[]
[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
[../]
[]
[Physics]
[SolidMechanics]
[./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]
[SolidMechanics]
use_displaced_mesh = false
displacements = 'disp_x disp_y'
temperature = temp
save_in = 'saved_x saved_y'
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
[../]
[]
[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/solid_mechanics/test/tests/ad_anisotropic_creep/aniso_creep_integration_error.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = RankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[sigma_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0'
y = '0 -4e1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = false
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7000
poissons_ratio = 0.0
[]
[elastic_strain]
type = ComputeMultipleInelasticStress
inelastic_models = "trial_creep_two"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = HillConstants
# F G H L M N
hill_constants = "0.5 0.25 0.3866 1.6413 1.6413 1.2731"
[]
[trial_creep_two]
type = HillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 1.0e-4
absolute_tolerance = 1e-20
relative_tolerance = 1e-20
max_integration_error = 1.0e-5
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = DirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[UserObjects]
[terminator_creep]
type = Terminator
expression = 'time_step_size > matl_ts_min'
fail_mode = SOFT
execute_on = TIMESTEP_END
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1.0e-13
nl_abs_tol = 1.0e-13
l_max_its = 10
end_time = 1.65e-1
dt = 2.5e-2
start_time = 0
automatic_scaling = true
[./TimeStepper]
type = IterationAdaptiveDT
dt = 2.5e-2
time_t = '0.0 10.0'
time_dt = '2.5e-2 2.5e-2 '
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.5
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
[../]
[]
[Postprocessors]
[time_step_size]
type = TimestepSize
[]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/lagrangian/materials/badproperties/stvenantkirchhoff.i)
# Simple 3D test
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[Functions]
[strain]
type = ParsedFunction
expression = 't'
[]
[]
[BCs]
[leftx]
type = DirichletBC
preset = true
boundary = left
variable = disp_x
value = 0.0
[]
[boty]
type = DirichletBC
preset = true
boundary = bottom
variable = disp_y
value = 0.0
[]
[backz]
type = DirichletBC
preset = true
boundary = back
variable = disp_z
value = 0.0
[]
[pull_x]
type = FunctionDirichletBC
boundary = right
variable = disp_x
function = strain
[]
[]
[Materials]
[elastic_tensor]
type = ComputeElasticityTensor
C_ijkl = '102272 113636 113636 1022726 454545'
fill_method = axisymmetric_rz
[]
[compute_stress]
type = ComputeStVenantKirchhoffStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[AuxVariables]
[s11]
family = MONOMIAL
order = CONSTANT
[]
[s21]
family = MONOMIAL
order = CONSTANT
[]
[s31]
family = MONOMIAL
order = CONSTANT
[]
[s12]
family = MONOMIAL
order = CONSTANT
[]
[s22]
family = MONOMIAL
order = CONSTANT
[]
[s32]
family = MONOMIAL
order = CONSTANT
[]
[s13]
family = MONOMIAL
order = CONSTANT
[]
[s23]
family = MONOMIAL
order = CONSTANT
[]
[s33]
family = MONOMIAL
order = CONSTANT
[]
[F11]
family = MONOMIAL
order = CONSTANT
[]
[F21]
family = MONOMIAL
order = CONSTANT
[]
[F31]
family = MONOMIAL
order = CONSTANT
[]
[F12]
family = MONOMIAL
order = CONSTANT
[]
[F22]
family = MONOMIAL
order = CONSTANT
[]
[F32]
family = MONOMIAL
order = CONSTANT
[]
[F13]
family = MONOMIAL
order = CONSTANT
[]
[F23]
family = MONOMIAL
order = CONSTANT
[]
[F33]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s11]
type = RankTwoAux
variable = s11
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[s21]
type = RankTwoAux
variable = s21
rank_two_tensor = pk1_stress
index_i = 1
index_j = 0
[]
[s31]
type = RankTwoAux
variable = s31
rank_two_tensor = pk1_stress
index_i = 2
index_j = 0
[]
[s12]
type = RankTwoAux
variable = s12
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[s22]
type = RankTwoAux
variable = s22
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[s32]
type = RankTwoAux
variable = s32
rank_two_tensor = pk1_stress
index_i = 2
index_j = 1
[]
[s13]
type = RankTwoAux
variable = s13
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[s23]
type = RankTwoAux
variable = s23
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[s33]
type = RankTwoAux
variable = s33
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[F11]
type = RankTwoAux
variable = F11
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 0
[]
[F21]
type = RankTwoAux
variable = F21
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 0
[]
[F31]
type = RankTwoAux
variable = F31
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 0
[]
[F12]
type = RankTwoAux
variable = F12
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 1
[]
[F22]
type = RankTwoAux
variable = F22
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[F32]
type = RankTwoAux
variable = F32
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 1
[]
[F13]
type = RankTwoAux
variable = F13
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 2
[]
[F23]
type = RankTwoAux
variable = F23
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 2
[]
[F33]
type = RankTwoAux
variable = F33
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 2
[]
[]
[Postprocessors]
[s11]
type = ElementAverageValue
variable = s11
execute_on = 'initial timestep_end'
[]
[s21]
type = ElementAverageValue
variable = s21
execute_on = 'initial timestep_end'
[]
[s31]
type = ElementAverageValue
variable = s31
execute_on = 'initial timestep_end'
[]
[s12]
type = ElementAverageValue
variable = s12
execute_on = 'initial timestep_end'
[]
[s22]
type = ElementAverageValue
variable = s22
execute_on = 'initial timestep_end'
[]
[s32]
type = ElementAverageValue
variable = s32
execute_on = 'initial timestep_end'
[]
[s13]
type = ElementAverageValue
variable = s13
execute_on = 'initial timestep_end'
[]
[s23]
type = ElementAverageValue
variable = s23
execute_on = 'initial timestep_end'
[]
[s33]
type = ElementAverageValue
variable = s33
execute_on = 'initial timestep_end'
[]
[F11]
type = ElementAverageValue
variable = F11
execute_on = 'initial timestep_end'
[]
[F21]
type = ElementAverageValue
variable = F21
execute_on = 'initial timestep_end'
[]
[F31]
type = ElementAverageValue
variable = F31
execute_on = 'initial timestep_end'
[]
[F12]
type = ElementAverageValue
variable = F12
execute_on = 'initial timestep_end'
[]
[F22]
type = ElementAverageValue
variable = F22
execute_on = 'initial timestep_end'
[]
[F32]
type = ElementAverageValue
variable = F32
execute_on = 'initial timestep_end'
[]
[F13]
type = ElementAverageValue
variable = F13
execute_on = 'initial timestep_end'
[]
[F23]
type = ElementAverageValue
variable = F23
execute_on = 'initial timestep_end'
[]
[F33]
type = ElementAverageValue
variable = F33
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 5
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.01
dtmin = 0.01
end_time = 0.01
[]
[Outputs]
exodus = false
[]
(modules/solid_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_newmark_action.i)
# Wave propogation in 1D using Newmark time integration in the presence of Rayleigh damping
#
# The test is for an 1D bar element of length 4m fixed on one end
# with a sinusoidal pulse dirichlet boundary condition applied to the other end.
# beta and gamma are Newmark time integration parameters
# eta and zeta are mass dependent and stiffness dependent Rayleigh damping
# coefficients, respectively.
# The equation of motion in terms of matrices is:
#
# M*accel + (eta*M+zeta*K)*vel +K*disp = 0
#
# Here M is the mass matrix, K is the stiffness matrix
#
# The displacement at the second, third and fourth node at t = 0.1 are
# -7.776268399030435152e-02, 1.949967184623528985e-02 and -4.615737877580032046e-03, respectively
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 4
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 4.0
zmin = 0.0
zmax = 0.1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/Dynamic]
[all]
add_variables = true
stiffness_damping_coefficient = 0.1
mass_damping_coefficient = 0.1
newmark_beta = 0.3025
newmark_gamma = 0.6
strain = SMALL
density = 1
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 0
index_j = 1
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 0
index_j = 1
[]
[]
[BCs]
[top_y]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[]
[top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[]
[right_x]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.0
[]
[right_z]
type = DirichletBC
variable = disp_z
boundary = right
value = 0.0
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[left_z]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[]
[front_x]
type = DirichletBC
variable = disp_x
boundary = front
value = 0.0
[]
[front_z]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.0
[]
[back_x]
type = DirichletBC
variable = disp_x
boundary = back
value = 0.0
[]
[back_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[bottom_y]
type = FunctionDirichletBC
variable = disp_y
boundary = bottom
function = displacement_bc
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1 0'
[]
[stress]
type = ComputeLinearElasticStress
block = 0
[]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 6.0
l_tol = 1e-12
nl_rel_tol = 1e-12
dt = 0.1
[]
[Functions]
[displacement_bc]
type = PiecewiseLinear
data_file = 'sine_wave.csv'
format = columns
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[disp_1]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[]
[disp_2]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[]
[disp_3]
type = NodalVariableValue
nodeid = 10
variable = disp_y
[]
[disp_4]
type = NodalVariableValue
nodeid = 14
variable = disp_y
[]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/elastic_patch/elastic_patch.i)
# Patch Test
# This test is designed to compute constant xx, yy, zz, xy, yz, and zx
# stress on a set of irregular hexes. The mesh is composed of one
# block with seven elements. The elements form a unit cube with one
# internal element. There is a nodeset for each exterior node.
# The cube is displaced by 1e-6 units in x, 2e-6 in y, and 3e-6 in z.
# The faces are sheared as well (1e-6, 2e-6, and 3e-6 for xy, yz, and
# zx). This gives a uniform strain/stress state for all six unique
# tensor components.
# With Young's modulus at 1e6 and Poisson's ratio at 0, the shear
# modulus is 5e5 (G=E/2/(1+nu)). Therefore,
#
# stress xx = 1e6 * 1e-6 = 1
# stress yy = 1e6 * 2e-6 = 2
# stress zz = 1e6 * 3e-6 = 3
# stress xy = 2 * 5e5 * 1e-6 / 2 = 0.5
# (2 * G * gamma_xy / 2 = 2 * G * epsilon_xy)
# stress yz = 2 * 5e5 * 2e-6 / 2 = 1
# stress zx = 2 * 5e5 * 3e-6 / 2 = 1.5
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
block = '1 2 3 4 5 6 7'
[]
[Mesh]#Comment
file = elastic_patch.e
[] # Mesh
[Functions]
[./rampConstant1]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 1e-6
[../]
[./rampConstant2]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 2e-6
[../]
[./rampConstant3]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 3e-6
[../]
[./rampConstant4]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 4e-6
[../]
[./rampConstant6]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 6e-6
[../]
[] # Functions
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
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
[../]
[./elastic_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./hydrostatic]
order = CONSTANT
family = MONOMIAL
[../]
[./firstinv]
order = CONSTANT
family = MONOMIAL
[../]
[./secondinv]
order = CONSTANT
family = MONOMIAL
[../]
[./thirdinv]
order = CONSTANT
family = MONOMIAL
[../]
[./maxprincipal]
order = CONSTANT
family = MONOMIAL
[../]
[./midprincipal]
order = CONSTANT
family = MONOMIAL
[../]
[./minprincipal]
order = CONSTANT
family = MONOMIAL
[../]
[./direction]
order = CONSTANT
family = MONOMIAL
[../]
[./max_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./sint]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Kernels]
[SolidMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./elastic_energy]
type = ElasticEnergyAux
variable = elastic_energy
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = vonmisesStress
[../]
[./hydrostatic]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic
scalar_type = hydrostatic
[../]
[./fi]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = firstinv
scalar_type = firstinvariant
[../]
[./si]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = secondinv
scalar_type = secondinvariant
[../]
[./ti]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = thirdinv
scalar_type = thirdinvariant
[../]
[./maxprincipal]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = maxprincipal
scalar_type = MaxPRiNCIpAl
[../]
[./midprincipal]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = midprincipal
scalar_type = MidPRiNCIpAl
[../]
[./minprincipal]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = minprincipal
scalar_type = MiNPRiNCIpAl
[../]
[./direction]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = direction
scalar_type = direction
direction = '1 1 1'
[../]
[./max_shear]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = max_shear
scalar_type = MaxShear
[../]
[./sint]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = sint
scalar_type = StressIntensity
[../]
[] # AuxKernels
[BCs]
[./node1_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./node1_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = rampConstant2
[../]
[./node1_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 1
function = rampConstant3
[../]
[./node2_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = rampConstant1
[../]
[./node2_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = rampConstant2
[../]
[./node2_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 2
function = rampConstant6
[../]
[./node3_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 3
function = rampConstant1
[../]
[./node3_y]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[../]
[./node3_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 3
function = rampConstant3
[../]
[./node4_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0.0
[../]
[./node4_y]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[./node4_z]
type = DirichletBC
variable = disp_z
boundary = 4
value = 0.0
[../]
[./node5_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 5
function = rampConstant1
[../]
[./node5_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 5
function = rampConstant4
[../]
[./node5_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 5
function = rampConstant3
[../]
[./node6_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 6
function = rampConstant2
[../]
[./node6_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 6
function = rampConstant4
[../]
[./node6_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 6
function = rampConstant6
[../]
[./node7_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 7
function = rampConstant2
[../]
[./node7_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 7
function = rampConstant2
[../]
[./node7_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 7
function = rampConstant3
[../]
[./node8_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 8
function = rampConstant1
[../]
[./node8_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 8
function = rampConstant2
[../]
[./node8_z]
type = DirichletBC
variable = disp_z
boundary = 8
value = 0.0
[../]
[] # BCs
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeFiniteStrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[] # Materials
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 2
end_time = 2.0
[] # Executioner
[Outputs]
exodus = true
[] # Outputs
(modules/combined/test/tests/eigenstrain/variable_cahnhilliard.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 16
ny = 16
xmin = 0
xmax = 50
ymin = 0
ymax = 50
elem_type = QUAD4
[]
[Variables]
[./c]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = SmoothCircleIC
x1 = 0
y1 = 0
radius = 25.0
invalue = 1.0
outvalue = 0.0
int_width = 50.0
[../]
[../]
[./w]
order = FIRST
family = LAGRANGE
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
kappa_name = kappa_c
w = w
[../]
[./w_res]
type = SplitCHWRes
variable = w
mob_name = M
[../]
[./time]
type = CoupledTimeDerivative
variable = w
v = c
[../]
[]
[AuxVariables]
[./sigma11_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./sigma22_aux]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./matl_sigma11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = sigma11_aux
[../]
[./matl_sigma22]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = sigma22_aux
[../]
[]
[Materials]
[./pfmobility]
type = GenericConstantMaterial
prop_names = 'M kappa_c'
prop_values = '1 5'
block = 0
[../]
[./chemical_free_energy]
type = DerivativeParsedMaterial
block = 0
property_name = Fc
coupled_variables = 'c'
constant_names = 'barr_height cv_eq'
constant_expressions = '0.1 1.0e-2'
expression = 16*barr_height*(c-cv_eq)^2*(1-cv_eq-c)^2
enable_jit = true
derivative_order = 2
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '7 7'
fill_method = symmetric_isotropic
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 0.1*c
coupled_variables = c
property_name = var_dep
enable_jit = true
derivative_order = 2
[../]
[./eigenstrain]
type = ComputeVariableEigenstrain
block = 0
eigen_base = '1 1 1 0 0 0'
prefactor = var_dep
args = 'c'
eigenstrain_name = eigenstrain
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
block = 0
args = 'c'
derivative_order = 2
[../]
[./free_energy]
type = DerivativeSumMaterial
block = 0
property_name = F
sum_materials = 'Fc Fe'
coupled_variables = 'c'
derivative_order = 2
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = 'top'
value = -5
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type '
petsc_options_value = 'asm lu'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 1.0e-10
start_time = 0.0
num_steps = 2
dt = 1
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/mean_cap/small_deform2.i)
# apply compression in x, y and z directions such that strain = diag(-1E-6, -2E-6, 3E-6).
# With lame_lambda=0 and lame_mu=1E7, this gives
# trial_Stress = diag(-20, -40, -60), so trial_mean_Stress = -40.
# with a = -1 and strength = 30, the algorithm should return to
# stress = diag(-10, -30, -50)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '-2E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-3E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./strength]
type = SolidMechanicsHardeningConstant
value = 30
[../]
[./cap]
type = SolidMechanicsPlasticMeanCap
a = -1
strength = strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = cap
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD8
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
add_variables = true
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
#Material constants selected to match isotropic lambda and shear modulus case
type = ComputeElasticityTensor
C_ijkl = '1022726 113636 113636 1022726 454545'
fill_method = axisymmetric_rz
[../]
[./elastic_stress]
type = ComputeLinearElasticStress
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_r]
type = DirichletBC
variable = disp_r
boundary = left
value = 0.0
[../]
[./no_disp_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_r]
type = Pressure
variable = disp_r
boundary = right
factor = 200000
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
num_steps = 1000
dtmax = 5e6
dtmin = 1
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 6
iteration_window = 0
linear_iteration_ratio = 100
[../]
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[]
[Outputs]
file_base = 2D-axisymmetric_rz_test_out
exodus = true
[]
(modules/combined/test/tests/j2_plasticity_vs_LSH/necking/j2_hard1_neckingRZ.i)
#
[Mesh]
file = necking_quad4.e
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Variables]
[./disp_r]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./AxisymmetricRZ]
use_displaced_mesh = true
# save_in_disp_r = force_r
save_in_disp_z = force_z
[../]
[]
[AuxVariables]
[./stress_rr]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_rr]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
# [./force_r]
# order = FIRST
# family = LAGRANGE
# [../]
[./force_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./stress_rr]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rr
index_i = 0
index_j = 0
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 1
index_j = 1
[../]
[./strain_rr]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_rr
index_i = 0
index_j = 0
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 1
index_j = 1
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_r
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = top
function = 't/5'
[../]
[]
[UserObjects]
[./str]
type = TensorMechanicsHardeningConstant
value = 2.4e2
[../]
[./j2]
type = TensorMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric_isotropic
#with E = 2.1e5 and nu = 0.3
#changed to SM values using E-nu to Lambda-G
C_ijkl = '121154 80769.2'
[../]
[./strain]
type = ComputeAxisymmetricRZFiniteStrain
block = 1
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 1
ep_plastic_tolerance = 1E-9
plastic_models = j2
[../]
[]
[Executioner]
end_time = 0.1
dt = 0.005
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-6
nl_abs_tol = 1e-15
l_tol = 1e-9
[]
[Postprocessors]
[./stress_rr]
type = ElementAverageValue
variable = stress_rr
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./strain_rr]
type = ElementAverageValue
variable = strain_rr
[../]
[./strain_zz]
type = ElementAverageValue
variable = strain_zz
[../]
[./disp_z]
type = NodalSum
variable = disp_z
boundary = top
[../]
[./force_z]
type = NodalSum
variable = force_z
boundary = top
[../]
[]
[Outputs]
exodus = true
csv = true
print_linear_residuals = false
perf_graph = 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/solid_mechanics/test/tests/eigenstrain/reducedOrderRZLinearConstant.i)
#
# This test checks whether the ComputeReducedOrderEigenstrain is functioning properly.
#
# If instead of 'fred', 'thermal_eigenstrain' is given to
# eigenstrain_names in the Physics/SolidMechanics/QuasiStatic/all block, the output will be
# identical since the thermal strain is constant in the elements.
#
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
coord_type = RZ
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 1
xmax = 3
xmin = 1
ymax = 1
ymin = 0
[]
[Functions]
[./tempBC]
type = ParsedFunction
expression = '700+2*t*t'
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 700
[../]
[]
[AuxVariables]
[./hydro_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./hydro_first]
order = FIRST
family = MONOMIAL
[../]
[./hydro_second]
order = SECOND
family = MONOMIAL
[../]
[./sxx_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./sxx_first]
order = FIRST
family = MONOMIAL
[../]
[./sxx_second]
order = SECOND
family = MONOMIAL
[../]
[./szz_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./szz_first]
order = FIRST
family = MONOMIAL
[../]
[./szz_second]
order = SECOND
family = MONOMIAL
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
add_variables = true
strain = SMALL
incremental = true
temperature = temp
eigenstrain_names = 'fred' #'thermal_eigenstrain'
[../]
[../]
[../]
[]
[Kernels]
[./heat]
type = Diffusion
variable = temp
[../]
[]
[AuxKernels]
[./hydro_constant_aux]
type = RankTwoScalarAux
variable = hydro_constant
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./hydro_first_aux]
type = RankTwoScalarAux
variable = hydro_first
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./hydro_second_aux]
type = RankTwoScalarAux
variable = hydro_second
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./sxx_constant_aux]
type = RankTwoAux
variable = sxx_constant
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./sxx_first_aux]
type = RankTwoAux
variable = sxx_first
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./sxx_second_aux]
type = RankTwoAux
variable = sxx_second
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./szz_constant_aux]
type = RankTwoAux
variable = szz_constant
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./szz_first_aux]
type = RankTwoAux
variable = szz_first
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./szz_second_aux]
type = RankTwoAux
variable = szz_second
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[../]
[./temp_right]
type = FunctionDirichletBC
variable = temp
boundary = right
function = tempBC
[../]
[./temp_left]
type = FunctionDirichletBC
variable = temp
boundary = left
function = tempBC
[../]
[]
[Materials]
[./fuel_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0
[../]
[./fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
temperature = temp
stress_free_temperature = 700.0
eigenstrain_name = 'thermal_eigenstrain'
[../]
[./reduced_order_eigenstrain]
type = ComputeReducedOrderEigenstrain
input_eigenstrain_names = 'thermal_eigenstrain'
eigenstrain_name = 'fred'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
dt = 1
num_steps = 10
nl_rel_tol = 1e-8
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/rotation_matrix_update_euler_angle_111_orientation.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[euler_angle_1]
order = CONSTANT
family = MONOMIAL
[]
[euler_angle_2]
order = CONSTANT
family = MONOMIAL
[]
[euler_angle_3]
order = CONSTANT
family = MONOMIAL
[]
[pk2_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[AuxKernels]
[euler_angle_1]
type = MaterialRealVectorValueAux
variable = euler_angle_1
property = updated_Euler_angle
component = 0
execute_on = timestep_end
[]
[euler_angle_2]
type = MaterialRealVectorValueAux
variable = euler_angle_2
property = updated_Euler_angle
component = 1
execute_on = timestep_end
[]
[euler_angle_3]
type = MaterialRealVectorValueAux
variable = euler_angle_3
property = updated_Euler_angle
component = 2
execute_on = timestep_end
[]
[pk2_zz]
type = RankTwoAux
variable = pk2_zz
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[Periodic]
[all]
variable = 'disp_x'
auto_direction = 'z'
[]
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front'
function = '0.005*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
rotation_matrix = '0.707106781 0.40824829 0.57735027
-0.707106781 0.40824829 0.57735027
0. -0.81649658 0.57735027'
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 4
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[updated_euler_angle]
type = ComputeUpdatedEulerAngle
radian_to_degree = true
[]
[]
[Postprocessors]
[euler_angle_1]
type = ElementAverageValue
variable = euler_angle_1
[]
[euler_angle_2]
type = ElementAverageValue
variable = euler_angle_2
[]
[euler_angle_3]
type = ElementAverageValue
variable = euler_angle_3
[]
[pk2_zz]
type = ElementAverageValue
variable = pk2_zz
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu '
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.1
dtmin = 0.01
end_time = 5
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/combined/test/tests/eigenstrain/inclusion.i)
# This test allows comparison of simulation and analytical solution for a misfitting precipitate
# using ComputeVariableEigenstrain for the simulation and the InclusionProperties material
# for the analytical solution. Increasing mesh resolution will improve agreement.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 40
ny = 40
xmax = 1.5
ymax = 1.5
elem_type = QUAD4
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[AuxVariables]
[./s11_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./s12_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./s22_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./s11_an]
order = CONSTANT
family = MONOMIAL
[../]
[./s12_an]
order = CONSTANT
family = MONOMIAL
[../]
[./s22_an]
order = CONSTANT
family = MONOMIAL
[../]
[./e11_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./e12_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./e22_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./e11_an]
order = CONSTANT
family = MONOMIAL
[../]
[./e12_an]
order = CONSTANT
family = MONOMIAL
[../]
[./e22_an]
order = CONSTANT
family = MONOMIAL
[../]
[./fel_an]
order = CONSTANT
family = MONOMIAL
[../]
[./c]
[../]
[]
[AuxKernels]
[./matl_s11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = s11_aux
[../]
[./matl_s12]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = s12_aux
[../]
[./matl_s22]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = s22_aux
[../]
[./matl_s11_an]
type = RankTwoAux
rank_two_tensor = stress_an
index_i = 0
index_j = 0
variable = s11_an
[../]
[./matl_s12_an]
type = RankTwoAux
rank_two_tensor = stress_an
index_i = 0
index_j = 1
variable = s12_an
[../]
[./matl_s22_an]
type = RankTwoAux
rank_two_tensor = stress_an
index_i = 1
index_j = 1
variable = s22_an
[../]
[./matl_e11]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 0
variable = e11_aux
[../]
[./matl_e12]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 1
variable = e12_aux
[../]
[./matl_e22]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 1
index_j = 1
variable = e22_aux
[../]
[./matl_e11_an]
type = RankTwoAux
rank_two_tensor = strain_an
index_i = 0
index_j = 0
variable = e11_an
[../]
[./matl_e12_an]
type = RankTwoAux
rank_two_tensor = strain_an
index_i = 0
index_j = 1
variable = e12_an
[../]
[./matl_e22_an]
type = RankTwoAux
rank_two_tensor = strain_an
index_i = 1
index_j = 1
variable = e22_an
[../]
[./matl_fel_an]
type = MaterialRealAux
variable = fel_an
property = fel_an_mat
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 0.005*c^2
coupled_variables = c
outputs = exodus
output_properties = 'var_dep'
f_name = var_dep
enable_jit = true
derivative_order = 2
[../]
[./eigenstrain]
type = ComputeVariableEigenstrain
block = 0
eigen_base = '1 1 0 0 0 0'
prefactor = var_dep
args = c
eigenstrain_name = eigenstrain
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[./analytical]
type = InclusionProperties
a = 0.1
b = 0.1
lambda = 1
mu = 1
misfit_strains = '0.005 0.005'
strain_name = strain_an
stress_name = stress_an
energy_name = fel_an_mat
[../]
[]
[BCs]
active = 'left_x bottom_y'
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 31'
l_max_its = 30
nl_max_its = 10
nl_rel_tol = 1.0e-10
[]
[Outputs]
exodus = true
[]
[ICs]
[./c_IC]
int_width = 0.075
x1 = 0
y1 = 0
radius = 0.1
outvalue = 0
variable = c
invalue = 1
type = SmoothCircleIC
[../]
[]
(modules/contact/test/tests/verification/patch_tests/brick_2/brick2_aug.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick2_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 100
[]
[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
tangential_tolerance = 1e-3
formulation = augmented_lagrange
normalize_penalty = true
penalty = 1e8
model = frictionless
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/static_deformations/cosserat_glide_fake_plastic.i)
# Example taken from Appendix A of
# S Forest "Mechanics of Cosserat media An introduction". Available from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.154.4476&rep=rep1&type=pdf
#
# This example uses plasticity, but with inifinitely large yield strength, so it is really elasticity
#
# Analytically, the displacements are
# wc_z = B sinh(w_e y)
# disp_x = (2 mu_c B / w_e / (mu + mu_c)) (1 - cosh(w_e y))
# with w_e^2 = 2 mu mu_c / be / (mu + mu_c)
# and B = arbitrary integration constant
#
# Also, the only nonzero stresses are
# m_zy = 2 B be w_e cosh(w_e y)
# si_yx = -4 mu mu_c/(mu + mu_c) B sinh(w_e y)
#
# MOOSE gives these stress components correctly.
# However, it also gives a seemingly non-zero si_xy
# component. Upon increasing the resolution of the
# mesh (ny=10000, for example), the stress components
# are seen to limit correctly to the above forumlae
#
# I use mu = 2, mu_c = 3, be = 0.6, so w_e = 2
# Also i use B = 1, so at y = 1
# wc_z = 3.626860407847
# disp_x = -1.65731741465
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 100
ymax = 1
nz = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./z_couple]
type = StressDivergenceTensors
variable = wc_z
displacements = 'wc_x wc_y wc_z'
component = 2
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[./z_moment]
type = MomentBalancing
variable = wc_z
component = 2
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./disp_x_zero_at_y_zero]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0
[../]
[./disp_x_fixed_at_y_max]
type = DirichletBC
variable = disp_x
boundary = top
value = -1.65731741465
[../]
[./no_dispy]
type = DirichletBC
variable = disp_y
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_dispz]
type = DirichletBC
variable = disp_z
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_wc_y]
type = DirichletBC
variable = wc_y
boundary = 'back front bottom top left right'
value = 0
[../]
[./wc_z_zero_at_y_zero]
type = DirichletBC
variable = wc_z
boundary = bottom
value = 0
[../]
[./wc_z_fixed_at_y_max]
type = DirichletBC
variable = wc_z
boundary = top
value = 3.626860407847
[../]
[]
[AuxVariables]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeCosseratElasticityTensor
B_ijkl = '1.1 0.6 0.6' # In Forest notation this is alpha=1.1 (this is unimportant), beta=gamma=0.6.
fill_method_bending = 'general_isotropic'
E_ijkl = '1 2 3' # In Forest notation this is lambda=1 (this is unimportant), mu=2, mu_c=3
fill_method = 'general_isotropic'
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
[../]
[./stress_fake_plasticity]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1E-12
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = y
variable = 'disp_x wc_z stress_yx couple_stress_zy'
start_point = '0 0 0'
end_point = '0 1 0'
num_points = 11
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = cosserat_glide_fake_plastic_out
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/stabilization/cook_large.i)
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = true
stabilize_strain = true
[]
[Mesh]
type = FileMesh
file = cook_mesh.exo
dim = 2
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[BCs]
[fixed_x]
type = DirichletBC
preset = true
variable = disp_x
boundary = canti
value = 0.0
[]
[fixed_y]
type = DirichletBC
preset = true
variable = disp_y
boundary = canti
value = 0.0
[]
[pull]
type = NeumannBC
variable = disp_y
boundary = loading
value = 0.1
[]
[]
[Materials]
[compute_stress]
type = ComputeNeoHookeanStress
lambda = 416666611.0991259
mu = 8300.33333888888926
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = 'newton'
line_search = 'none'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_max_its = 500
nl_abs_tol = 1e-5
nl_rel_tol = 1e-6
[]
[Postprocessors]
[value]
type = PointValue
variable = disp_y
point = '48 60 0'
use_displaced_mesh = false
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/contact/test/tests/explicit_dynamics/settlement.i)
# One element test to test the central difference time integrator in 3D.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
[block_one]
type = GeneratedMeshGenerator
dim = 3
nx = 3
ny = 3
nz = 3
xmin = 4.5
xmax = 5.5
ymin = 4.5
ymax = 5.5
zmin = 0.0001
zmax = 1.0001
boundary_name_prefix = 'ball'
[]
[block_two]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
xmin = 0.0
xmax = 10
ymin = 0.0
ymax = 10
zmin = -2
zmax = 0
boundary_name_prefix = 'base'
boundary_id_offset = 10
[]
[block_one_id]
type = SubdomainIDGenerator
input = block_one
subdomain_id = 1
[]
[block_two_id]
type = SubdomainIDGenerator
input = block_two
subdomain_id = 2
[]
[combine]
type = MeshCollectionGenerator
inputs = ' block_one_id block_two_id'
[]
[]
[AuxVariables]
[penetration]
[]
[]
[AuxKernels]
[penetration]
type = PenetrationAux
variable = penetration
boundary = ball_back
paired_boundary = base_front
quantity = distance
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[gap_rate]
[]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[stress_zz]
family = MONOMIAL
order = CONSTANT
[]
[strain_zz]
family = MONOMIAL
order = CONSTANT
[]
[kinetic_energy_one]
order = CONSTANT
family = MONOMIAL
[]
[elastic_energy_one]
order = CONSTANT
family = MONOMIAL
[]
[kinetic_energy_two]
order = CONSTANT
family = MONOMIAL
[]
[elastic_energy_two]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
execute_on = 'TIMESTEP_END'
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
index_i = 2
index_j = 2
variable = strain_zz
[]
[accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_x
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[accel_z]
type = TestNewmarkTI
variable = accel_z
displacement = disp_z
first = false
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[vel_z]
type = TestNewmarkTI
variable = vel_z
displacement = disp_z
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[kinetic_energy_one]
type = KineticEnergyAux
block = '1'
variable = kinetic_energy_one
newmark_velocity_x = vel_x
newmark_velocity_y = vel_y
newmark_velocity_z = vel_z
density = density
[]
[elastic_energy_one]
type = ElasticEnergyAux
variable = elastic_energy_one
block = '1'
[]
[kinetic_energy_two]
type = KineticEnergyAux
block = '2'
variable = kinetic_energy_two
newmark_velocity_x = vel_x
newmark_velocity_y = vel_y
newmark_velocity_z = vel_z
density = density
[]
[elastic_energy_two]
type = ElasticEnergyAux
variable = elastic_energy_two
block = '2'
[]
[]
[Kernels]
[DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
stiffness_damping_coefficient = 1.0e-3
generate_output = 'stress_zz strain_zz'
[]
[inertia_x]
type = InertialForce
variable = disp_x
[]
[inertia_y]
type = InertialForce
variable = disp_y
[]
[inertia_z]
type = InertialForce
variable = disp_z
[]
[gravity]
type = Gravity
variable = disp_z
value = -98.10
[]
[]
[BCs]
[x_front]
type = DirichletBC
variable = disp_x
boundary = 'ball_front'
preset = false
value = 0.0
[]
[y_front]
type = DirichletBC
variable = disp_y
boundary = 'ball_front'
preset = false
value = 0.0
[]
[x_fixed]
type = DirichletBC
variable = disp_x
boundary = 'base_back'
preset = false
value = 0.0
[]
[y_fixed]
type = DirichletBC
variable = disp_y
boundary = 'base_back'
preset = false
value = 0.0
[]
[z_fixed]
type = DirichletBC
variable = disp_z
boundary = 'base_back'
preset = false
value = 0.0
[]
[z_fixed_front]
type = DirichletBC
variable = disp_z
boundary = 'base_front'
preset = false
value = 0.0
[]
[]
[ExplicitDynamicsContact]
[my_contact]
model = frictionless_balance
primary = base_front
secondary = ball_back
vel_x = 'vel_x'
vel_y = 'vel_y'
vel_z = 'vel_z'
[]
[]
[Materials]
[elasticity_tensor_block_one]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.0
block = 1
outputs = 'exodus'
output_properties = __all__
[]
[elasticity_tensor_block_two]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.0
block = 2
outputs = 'exodus'
output_properties = __all__
[]
[strain_block]
type = ComputeFiniteStrain # ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
implicit = false
[]
[stress_block]
type = ComputeFiniteStrainElasticStress
[]
[density_one]
type = GenericConstantMaterial
prop_names = density
prop_values = 1e1
outputs = 'exodus'
output_properties = 'density'
block = '1'
[]
[density_two]
type = GenericConstantMaterial
prop_names = density
prop_values = 1e6
outputs = 'exodus'
output_properties = 'density'
block = '2'
[]
[wave_speed]
type = WaveSpeed
outputs = 'exodus'
output_properties = 'wave_speed'
[]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.04
dt = 1.0e-4
timestep_tolerance = 1e-6
[TimeIntegrator]
type = CentralDifference
solve_type = lumped
[]
[]
[Outputs]
interval = 1
exodus = true
csv = true
execute_on = 'TIMESTEP_END'
[]
[Postprocessors]
[accel_58z]
type = NodalVariableValue
nodeid = 1
variable = accel_z
[]
[vel_58z]
type = NodalVariableValue
nodeid = 1
variable = vel_z
[]
[critical_time_step]
type = CriticalTimeStep
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = contact_pressure
block = '1 2'
value_type = max
[]
[penetration_max]
type = NodalExtremeValue
variable = penetration
block = '1 2'
value_type = max
[]
[total_kinetic_energy_one]
type = ElementIntegralVariablePostprocessor
variable = kinetic_energy_one
block = '1'
[]
[total_elastic_energy_one]
type = ElementIntegralVariablePostprocessor
variable = elastic_energy_one
block = '1'
[]
[total_kinetic_energy_two]
type = ElementIntegralVariablePostprocessor
variable = kinetic_energy_two
block = '2'
[]
[total_elastic_energy_two]
type = ElementIntegralVariablePostprocessor
variable = elastic_energy_two
block = '2'
[]
[]
(modules/solid_mechanics/test/tests/multi/three_surface08.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 2.0E-6m in y direction and 0.5E-6 in z direction.
# trial stress_yy = 2.0 and stress_zz = 0.5
#
# Then SimpleTester1 and SimpleTester2 should activate and the algorithm will return to
# the corner stress_yy=1.0, stress_zz=0.5
# internal1 should be 1.0, and internal2 should be 0
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2.0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0.5E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface08
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/contact/test/tests/verification/patch_tests/ring_1/ring1_mu_0_2_pen.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring1_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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-5
[]
[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 = ring1_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 = ring1_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
tangential_tolerance = 1e-3
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/static_deformations/layered_cosserat_03.i)
# apply deformations and observe the moment-stresses
# with
# young = 0.7
# poisson = 0.2
# layer_thickness = 0.1
# joint_normal_stiffness = 0.25
# joint_shear_stiffness = 0.2
# then
# a0000 = 0.730681
# a0011 = 0.18267
# a2222 = 0.0244221
# a0022 = 0.006055
# a0101 = 0.291667
# a66 = 0.018717
# a77 = 0.310383
# b0101 = 0.000534
# b0110 = -0.000107
# and with
# wc_x = x + 2*y + 3*z
# wc_y = -1.1*x - 2.2*y - 3.3*z
# then
# curvature_xy = 2
# curvature_yx = -1.1
# and all others are either zero at (x,y,z)=(0,0,0) or unimportant for layered Cosserat
# so that
# m_xy = b0101*(2) + b0110*(-1.1) = 0.00118
# m_yx = b0110*2 + b0101*(-1.1) = -0.000801
# and all others zero (at (x,y,z)=(0,0,0))
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -1
xmax = 1
ymin = -1
ymax = 1
zmin = -1
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./wc_x]
type = FunctionDirichletBC
variable = wc_x
boundary = 'left right'
function = 'x+2*y+3*z'
[../]
[./wc_y]
type = FunctionDirichletBC
variable = wc_y
boundary = 'left right'
function = '-1.1*x-2.2*y-3.3*z'
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yx]
type = PointValue
point = '0 0 0'
variable = stress_yx
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zx]
type = PointValue
point = '0 0 0'
variable = stress_zx
[../]
[./s_zy]
type = PointValue
point = '0 0 0'
variable = stress_zy
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./c_s_xx]
type = PointValue
point = '0 0 0'
variable = couple_stress_xx
[../]
[./c_s_xy]
type = PointValue
point = '0 0 0'
variable = couple_stress_xy
[../]
[./c_s_xz]
type = PointValue
point = '0 0 0'
variable = couple_stress_xz
[../]
[./c_s_yx]
type = PointValue
point = '0 0 0'
variable = couple_stress_yx
[../]
[./c_s_yy]
type = PointValue
point = '0 0 0'
variable = couple_stress_yy
[../]
[./c_s_yz]
type = PointValue
point = '0 0 0'
variable = couple_stress_yz
[../]
[./c_s_zx]
type = PointValue
point = '0 0 0'
variable = couple_stress_zx
[../]
[./c_s_zy]
type = PointValue
point = '0 0 0'
variable = couple_stress_zy
[../]
[./c_s_zz]
type = PointValue
point = '0 0 0'
variable = couple_stress_zz
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 0.7
poisson = 0.2
layer_thickness = 0.1
joint_normal_stiffness = 0.25
joint_shear_stiffness = 0.2
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol -sub_pc_factor_shift_type'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10 NONZERO'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = layered_cosserat_03
csv = 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/porous_flow/test/tests/poro_elasticity/mandel.i)
# Mandel's problem of consolodation of a drained medium
#
# A sample is in plane strain.
# -a <= x <= a
# -b <= y <= b
# It is squashed with constant force by impermeable, frictionless plattens on its top and bottom surfaces (at y=+/-b)
# Fluid is allowed to leak out from its sides (at x=+/-a)
# The porepressure within the sample is monitored.
#
# As is common in the literature, this is simulated by
# considering the quarter-sample, 0<=x<=a and 0<=y<=b, with
# impermeable, roller BCs at x=0 and y=0 and y=b.
# Porepressure is fixed at zero on x=a.
# Porepressure and displacement are initialised to zero.
# Then the top (y=b) is moved downwards with prescribed velocity,
# so that the total force that is inducing this downwards velocity
# is fixed. The velocity is worked out by solving Mandel's problem
# analytically, and the total force is monitored in the simulation
# to check that it indeed remains constant.
#
# Here are the problem's parameters, and their values:
# Soil width. a = 1
# Soil height. b = 0.1
# Soil's Lame lambda. la = 0.5
# Soil's Lame mu, which is also the Soil's shear modulus. mu = G = 0.75
# Soil bulk modulus. K = la + 2*mu/3 = 1
# Drained Poisson ratio. nu = (3K - 2G)/(6K + 2G) = 0.2
# Soil bulk compliance. 1/K = 1
# Fluid bulk modulus. Kf = 8
# Fluid bulk compliance. 1/Kf = 0.125
# Soil initial porosity. phi0 = 0.1
# Biot coefficient. alpha = 0.6
# Biot modulus. M = 1/(phi0/Kf + (alpha - phi0)(1 - alpha)/K) = 4.705882
# Undrained bulk modulus. Ku = K + alpha^2*M = 2.694118
# Undrained Poisson ratio. nuu = (3Ku - 2G)/(6Ku + 2G) = 0.372627
# Skempton coefficient. B = alpha*M/Ku = 1.048035
# Fluid mobility (soil permeability/fluid viscosity). k = 1.5
# Consolidation coefficient. c = 2*k*B^2*G*(1-nu)*(1+nuu)^2/9/(1-nuu)/(nuu-nu) = 3.821656
# Normal stress on top. F = 1
#
# The solution for porepressure and displacements is given in
# AHD Cheng and E Detournay "A direct boundary element method for plane strain poroelasticity" International Journal of Numerical and Analytical Methods in Geomechanics 12 (1988) 551-572.
# The solution involves complicated infinite series, so I shall not write it here
#
# FINAL NOTE: The above solution assumes constant Biot Modulus.
# In porous_flow this is not true. Therefore the solution is
# a little different than in the paper. This test was therefore
# validated against MOOSE's poromechanics, which can choose either
# a constant Biot Modulus (which has been shown to agree with
# the analytic solution), or a non-constant Biot Modulus (which
# gives the same results as porous_flow).
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 1
nz = 1
xmin = 0
xmax = 1
ymin = 0
ymax = 0.1
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1e-5
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[roller_xmin]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[]
[roller_ymin]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[]
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back front'
[]
[xmax_drained]
type = DirichletBC
variable = porepressure
value = 0
boundary = right
[]
[top_velocity]
type = FunctionDirichletBC
variable = disp_y
function = top_velocity
boundary = top
[]
[]
[Functions]
[top_velocity]
type = PiecewiseLinear
x = '0 0.002 0.006 0.014 0.03 0.046 0.062 0.078 0.094 0.11 0.126 0.142 0.158 0.174 0.19 0.206 0.222 0.238 0.254 0.27 0.286 0.302 0.318 0.334 0.35 0.366 0.382 0.398 0.414 0.43 0.446 0.462 0.478 0.494 0.51 0.526 0.542 0.558 0.574 0.59 0.606 0.622 0.638 0.654 0.67 0.686 0.702'
y = '-0.041824842 -0.042730269 -0.043412712 -0.04428867 -0.045509181 -0.04645965 -0.047268246 -0.047974749 -0.048597109 -0.0491467 -0.049632388 -0.050061697 -0.050441198 -0.050776675 -0.051073238 -0.0513354 -0.051567152 -0.051772022 -0.051953128 -0.052113227 -0.052254754 -0.052379865 -0.052490464 -0.052588233 -0.052674662 -0.052751065 -0.052818606 -0.052878312 -0.052931093 -0.052977751 -0.053018997 -0.053055459 -0.053087691 -0.053116185 -0.053141373 -0.05316364 -0.053183324 -0.053200724 -0.053216106 -0.053229704 -0.053241725 -0.053252351 -0.053261745 -0.053270049 -0.053277389 -0.053283879 -0.053289615'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[tot_force]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[tot_force]
type = ParsedAux
coupled_variables = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
expression = '-stress_yy+0.6*porepressure'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
component = 2
variable = disp_z
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[flux]
type = PorousFlowAdvectiveFlux
variable = porepressure
gravity = '0 0 0'
fluid_component = 0
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 8
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '0.5 0.75'
# bulk modulus is lambda + 2*mu/3 = 0.5 + 2*0.75/3 = 1
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
ensure_positive = false
porosity_zero = 0.1
biot_coefficient = 0.6
solid_bulk = 1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.5 0 0 0 1.5 0 0 0 1.5'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 0 # unimportant in this fully-saturated situation
phase = 0
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = csv
point = '0.0 0 0'
variable = porepressure
[]
[p1]
type = PointValue
outputs = csv
point = '0.1 0 0'
variable = porepressure
[]
[p2]
type = PointValue
outputs = csv
point = '0.2 0 0'
variable = porepressure
[]
[p3]
type = PointValue
outputs = csv
point = '0.3 0 0'
variable = porepressure
[]
[p4]
type = PointValue
outputs = csv
point = '0.4 0 0'
variable = porepressure
[]
[p5]
type = PointValue
outputs = csv
point = '0.5 0 0'
variable = porepressure
[]
[p6]
type = PointValue
outputs = csv
point = '0.6 0 0'
variable = porepressure
[]
[p7]
type = PointValue
outputs = csv
point = '0.7 0 0'
variable = porepressure
[]
[p8]
type = PointValue
outputs = csv
point = '0.8 0 0'
variable = porepressure
[]
[p9]
type = PointValue
outputs = csv
point = '0.9 0 0'
variable = porepressure
[]
[p99]
type = PointValue
outputs = csv
point = '1 0 0'
variable = porepressure
[]
[xdisp]
type = PointValue
outputs = csv
point = '1 0.1 0'
variable = disp_x
[]
[ydisp]
type = PointValue
outputs = csv
point = '1 0.1 0'
variable = disp_y
[]
[total_downwards_force]
type = ElementAverageValue
outputs = csv
variable = tot_force
[]
[dt]
type = FunctionValuePostprocessor
outputs = console
function = if(0.15*t<0.01,0.15*t,0.01)
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu 1E-14 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 0.7
[TimeStepper]
type = PostprocessorDT
postprocessor = dt
dt = 0.001
[]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = mandel
[csv]
time_step_interval = 3
type = CSV
[]
[]
(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/solid_mechanics/test/tests/crystal_plasticity/user_object_based/linesearch.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
[../]
[./uy]
[../]
[./uz]
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[../]
[]
[UserObjects]
[./slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
groups = '0 4 8 12'
group_values = '60.8 60.8 60.8'
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
stol = 1e-2
tan_mod_type = exact
maximum_substep_iteration = 200
use_line_search = true
min_line_search_step_size = 0.01
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'
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'ux uy uz'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.02
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/capped_mohr_coulomb/small_deform9_cosserat.i)
# Using Cosserat with large layer thickness, so this should reduce to standard
# Using CappedMohrCoulombCosserat with tensile failure only
# A single unit element is stretched in a complicated way that
# the trial stress is
# 1.51515 0.8 0.666667
# 0.8 -3.74545 -1.85037e-17
# 0.7 -1.66533e-17 -1.27273
# with symmetric part
# 1.51515 0.8 0.6833
# 0.8 -3.74545 -1.85037e-17
# 0.6833 -1.66533e-17 -1.27273
#
# This has eigenvalues
# la = {-3.86844, 1.78368, -1.41827}
# and eigenvectors
#
# {0.15183, -0.987598, -0.03997},
# {-0.966321, -0.139815, -0.216044},
# {-0.207777, -0.0714259, 0.975565}}
#
# The tensile strength is 0.5 and Young=1 and Poisson=0.25,
# with E_0000/E_0011 = nu / (1 - nu) = 0.333333
# Using smoothing_tol=0.01, the return-map algorithm should
# return to stress_I = 0.5, which is a reduction of 1.28368, so
# stress_II = -1.41827 - 1.28368 * 0.33333 = -1.846
# stress_III = -3.86844 - 1.28368 * 0.33333 = -4.296
#
# The final stress symmetric stress is
#
# {0.29, 0.69, 0.51},
# {0.69, -4.19, -0.03},
# {0.51, -0.03, -1.74}
#
# and a final unsymmetric stress of
#
# {0.29, 0.69, 0.49},
# {0.69, -4.19, -0.03},
# {0.52, -0.03, -1.74}
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '3*x-y+z'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3*x-4*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = 'x-2*z'
[../]
[./wc_x]
type = DirichletBC
variable = wc_x
boundary = 'front back'
value = 0.0
[../]
[./wc_y]
type = DirichletBC
variable = wc_y
boundary = 'front back'
value = 0.0
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_I]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_II]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_III]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_I]
type = RankTwoScalarAux
scalar_type = MaxPrincipal
rank_two_tensor = stress
variable = stress_I
selected_qp = 0
[../]
[./stress_II]
type = RankTwoScalarAux
scalar_type = MidPrincipal
rank_two_tensor = stress
variable = stress_II
selected_qp = 0
[../]
[./stress_III]
type = RankTwoScalarAux
scalar_type = MinPrincipal
rank_two_tensor = stress
variable = stress_III
selected_qp = 0
[../]
[./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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./intnl_auxk]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl
[../]
[]
[Postprocessors]
[./s_I]
type = PointValue
point = '0 0 0'
variable = stress_I
[../]
[./s_II]
type = PointValue
point = '0 0 0'
variable = stress_II
[../]
[./s_III]
type = PointValue
point = '0 0 0'
variable = stress_III
[../]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yx]
type = PointValue
point = '0 0 0'
variable = stress_yx
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zx]
type = PointValue
point = '0 0 0'
variable = stress_zx
[../]
[./s_zy]
type = PointValue
point = '0 0 0'
variable = stress_zy
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[./intnl]
type = PointValue
point = '0 0 0'
variable = intnl
[../]
[]
[UserObjects]
[./ts]
type = SolidMechanicsHardeningConstant
value = 0.5
[../]
[./cs]
type = SolidMechanicsHardeningConstant
value = 1E6
[../]
[./coh]
type = SolidMechanicsHardeningConstant
value = 1E6
[../]
[./ang]
type = SolidMechanicsHardeningConstant
value = 30
convert_to_radians = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 1
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1.0
joint_shear_stiffness = 2.0
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
[../]
[./tensile]
type = CappedMohrCoulombCosseratStressUpdate
tensile_strength = ts
compressive_strength = cs
cohesion = coh
friction_angle = ang
dilation_angle = ang
smoothing_tol = 0.001
yield_function_tol = 1.0E-12
host_youngs_modulus = 1.0
host_poissons_ratio = 0.25
[../]
[./stress]
type = ComputeMultipleInelasticCosseratStress
inelastic_models = tensile
perform_finite_strain_rotations = false
[../]
[]
[Executioner]
end_time = 1
dt = 1
nl_abs_tol = 1E-10
type = Transient
[]
[Outputs]
file_base = small_deform9_cosserat
csv = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/except2.i)
# checking for exception error messages
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 30
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 1
mc_edge_smoother = 25
mc_lode_cutoff = -1.0E-6
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = except2
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/xfem/test/tests/moving_interface/moving_bimaterial.i)
# This test is for two layer materials with different youngs modulus
# The global stress is determined by switching the stress based on level set values
# The material interface is marked by a level set function
# The two layer materials are glued together
# This case is also meant to test for a bug in moving interfaces on displaced meshes
# It should fail during the healing step of the 2nd timestep if the bug is present.
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./level_set_cut_uo]
type = LevelSetCutUserObject
level_set_var = ls
heal_always = true
[../]
[]
[Mesh]
displacements = 'disp_x disp_y'
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 5
xmin = 0.0
xmax = 5.
ymin = 0.0
ymax = 5.
elem_type = QUAD4
[]
[./left_bottom]
type = ExtraNodesetGenerator
new_boundary = 'left_bottom'
coord = '0.0 0.0'
input = generated_mesh
[../]
[./left_top]
type = ExtraNodesetGenerator
new_boundary = 'left_top'
coord = '0.0 5.'
input = left_bottom
[../]
[]
[AuxVariables]
[./ls]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./ls_function]
type = FunctionAux
variable = ls
function = ls_func
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Functions]
[./ls_func]
type = ParsedFunction
expression = 'y-3.153 + t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./a_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./b_strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[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_xy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[../]
[./a_strain_xx]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 0
variable = a_strain_xx
[../]
[./a_strain_yy]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 1
index_j = 1
variable = a_strain_yy
[../]
[./a_strain_xy]
type = RankTwoAux
rank_two_tensor = A_total_strain
index_i = 0
index_j = 1
variable = a_strain_xy
[../]
[./b_strain_xx]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 0
variable = b_strain_xx
[../]
[./b_strain_yy]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 1
index_j = 1
variable = b_strain_yy
[../]
[./b_strain_xy]
type = RankTwoAux
rank_two_tensor = B_total_strain
index_i = 0
index_j = 1
variable = b_strain_xy
[../]
[]
[Constraints]
[./dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[./dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
boundary = top
variable = disp_x
function = 0.03*t
[../]
[./topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[../]
[]
[Materials]
[./elasticity_tensor_A]
type = ComputeIsotropicElasticityTensor
base_name = A
youngs_modulus = 1e9
poissons_ratio = 0.3
[../]
[./strain_A]
type = ComputeSmallStrain
base_name = A
displacements = 'disp_x disp_y'
[../]
[./stress_A]
type = ComputeLinearElasticStress
base_name = A
[../]
[./elasticity_tensor_B]
type = ComputeIsotropicElasticityTensor
base_name = B
youngs_modulus = 1e7
poissons_ratio = 0.3
[../]
[./strain_B]
type = ComputeSmallStrain
base_name = B
displacements = 'disp_x disp_y'
[../]
[./stress_B]
type = ComputeLinearElasticStress
base_name = B
[../]
[./combined_stress]
type = LevelSetBiMaterialRankTwo
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = stress
[../]
[./combined_dstressdstrain]
type = LevelSetBiMaterialRankFour
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = Jacobian_mult
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'bt'
# controls for linear iterations
l_max_its = 20
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 0.15
num_steps = 3
max_xfem_update = 1
[]
[Outputs]
exodus = true
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(modules/porous_flow/test/tests/poro_elasticity/vol_expansion.i)
# Apply an increasing porepressure, with zero mechanical forces,
# and observe the corresponding volumetric expansion
#
# P = t
# With the Biot coefficient being 0.3, the effective stresses should be
# stress_xx = stress_yy = stress_zz = 0.3t
# With bulk modulus = 1 then should have
# vol_strain = strain_xx + strain_yy + strain_zz = 0.3t.
# I use a single element lying 0<=x<=1, 0<=y<=1 and 0<=z<=1, and
# fix the left, bottom and back boundaries appropriately,
# so at the point x=y=z=1, the displacements should be
# disp_x = disp_y = disp_z = 0.3t/3 (small strain physics is used)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
block = 0
PorousFlowDictator = dictator
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[p]
[]
[]
[BCs]
[p]
type = FunctionDirichletBC
boundary = 'bottom top'
variable = p
function = t
[]
[xmin]
type = DirichletBC
boundary = left
variable = disp_x
value = 0
[]
[ymin]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
[]
[zmin]
type = DirichletBC
boundary = back
variable = disp_z
value = 0
[]
[]
[Kernels]
[p_does_not_really_diffuse]
type = Diffusion
variable = p
[]
[TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_z
component = 2
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[Postprocessors]
[corner_x]
type = PointValue
point = '1 1 1'
variable = disp_x
[]
[corner_y]
type = PointValue
point = '1 1 1'
variable = disp_y
[]
[corner_z]
type = PointValue
point = '1 1 1'
variable = disp_z
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'p'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
# bulk modulus = 1, poisson ratio = 0.2
C_ijkl = '0.5 0.75'
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[]
[stress]
type = ComputeLinearElasticStress
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = p
capillary_pressure = pc
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol'
petsc_options_value = 'gmres bjacobi 1E-10 1E-10 10 1E-15 1E-10'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
dt = 0.1
end_time = 1
[]
[Outputs]
file_base = vol_expansion
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_aprismatic_active.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[center_node]
type = BoundingBoxNodeSetGenerator
input = cube
new_boundary = 'center_point'
top_right = '0.51 0.51 0'
bottom_left = '0.49 0.49 0'
[]
[back_edge_y]
type = BoundingBoxNodeSetGenerator
input = center_node
new_boundary = 'back_edge_y'
bottom_left = '0.9 0.5 0'
top_right = '1.1 0.5 0'
[]
[back_edge_x]
type = BoundingBoxNodeSetGenerator
input = back_edge_y
new_boundary = back_edge_x
bottom_left = '0.5 0.9 0'
top_right = '0.5 1.0 0'
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_2]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_12]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_13]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_0]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_1]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_2]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_12]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_13]
order = CONSTANT
family = MONOMIAL
[]
[substructure_density]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_12]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_13]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = resolved_shear_stress_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_1]
type = MaterialStdVectorAux
variable = resolved_shear_stress_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[tau_2]
type = MaterialStdVectorAux
variable = resolved_shear_stress_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[tau_12]
type = MaterialStdVectorAux
variable = resolved_shear_stress_12
property = applied_shear_stress
index = 12
execute_on = timestep_end
[]
[tau_13]
type = MaterialStdVectorAux
variable = resolved_shear_stress_13
property = applied_shear_stress
index = 13
execute_on = timestep_end
[]
[forest_dislocations_0]
type = MaterialStdVectorAux
variable = forest_dislocations_0
property = forest_dislocation_density
index = 0
execute_on = timestep_end
[]
[forest_dislocations_1]
type = MaterialStdVectorAux
variable = forest_dislocations_1
property = forest_dislocation_density
index = 1
execute_on = timestep_end
[]
[forest_dislocations_2]
type = MaterialStdVectorAux
variable = forest_dislocations_2
property = forest_dislocation_density
index = 2
execute_on = timestep_end
[]
[forest_dislocations_12]
type = MaterialStdVectorAux
variable = forest_dislocations_12
property = forest_dislocation_density
index = 12
execute_on = timestep_end
[]
[forest_dislocations_13]
type = MaterialStdVectorAux
variable = forest_dislocations_13
property = forest_dislocation_density
index = 13
execute_on = timestep_end
[]
[substructure_density]
type = MaterialRealAux
variable = substructure_density
property = total_substructure_density
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_1]
type = MaterialStdVectorAux
variable = slip_resistance_1
property = slip_resistance
index = 1
execute_on = timestep_end
[]
[slip_resistance_2]
type = MaterialStdVectorAux
variable = slip_resistance_2
property = slip_resistance
index = 2
execute_on = timestep_end
[]
[slip_resistance_12]
type = MaterialStdVectorAux
variable = slip_resistance_12
property = slip_resistance
index = 12
execute_on = timestep_end
[]
[slip_resistance_13]
type = MaterialStdVectorAux
variable = slip_resistance_13
property = slip_resistance
index = 13
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'center_point back_edge_y'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'center_point back_edge_x'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
euler_angle_1 = 164.5
euler_angle_2 = 90.0
euler_angle_3 = 15.3
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '0.5 5'
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1e5 2e7'
normalized_slip_activiation_energy_per_mode = '4e-3 3e-2'
slip_energy_proportionality_factor_per_mode = '330 100'
substructure_rate_coefficient_per_mode = '400 100'
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '2e-3 2e-3' #minimize impact
grain_size = 20.0e-3 #20 microns
[]
[]
[Postprocessors]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[tau_0]
type = ElementAverageValue
variable = resolved_shear_stress_0
[]
[tau_1]
type = ElementAverageValue
variable = resolved_shear_stress_1
[]
[tau_2]
type = ElementAverageValue
variable = resolved_shear_stress_2
[]
[tau_12]
type = ElementAverageValue
variable = resolved_shear_stress_12
[]
[tau_13]
type = ElementAverageValue
variable = resolved_shear_stress_13
[]
[forest_dislocation_0]
type = ElementAverageValue
variable = forest_dislocations_0
[]
[forest_dislocation_1]
type = ElementAverageValue
variable = forest_dislocations_1
[]
[forest_dislocation_2]
type = ElementAverageValue
variable = forest_dislocations_2
[]
[forest_dislocation_12]
type = ElementAverageValue
variable = forest_dislocations_12
[]
[forest_dislocation_13]
type = ElementAverageValue
variable = forest_dislocations_13
[]
[substructure_density]
type = ElementAverageValue
variable = substructure_density
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_1]
type = ElementAverageValue
variable = slip_resistance_1
[]
[slip_resistance_2]
type = ElementAverageValue
variable = slip_resistance_2
[]
[slip_resistance_12]
type = ElementAverageValue
variable = slip_resistance_12
[]
[slip_resistance_13]
type = ElementAverageValue
variable = slip_resistance_13
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
nl_max_its = 20
l_max_its = 50
dt = 0.005
dtmin = 1.0e-4
dtmax = 0.1
end_time = 0.09
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/mean_cap/small_deform1.i)
# apply uniform stretch in x, y and z directions.
# With a = 1 and strength = 2, the algorithm should return to sigma_m = 2
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./strength]
type = SolidMechanicsHardeningConstant
value = 2
[../]
[./cap]
type = SolidMechanicsPlasticMeanCap
a = 1
strength = strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = cap
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform1
exodus = false
[./csv]
type = CSV
[../]
[]
(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/solid_mechanics/test/tests/ad_isotropic_elasticity_tensor/bulk_modulus_shear_modulus_test.i)
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./stress_11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
add_variables = true
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./stress_11]
type = ADRankTwoAux
variable = stress_11
rank_two_tensor = stress
index_j = 1
index_i = 1
[../]
[]
[BCs]
[./bottom]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = ADDirichletBC
variable = disp_y
boundary = top
value = 0.001
[../]
[]
[Materials]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
bulk_modulus = 416666
shear_modulus = 454545
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
l_max_its = 20
nl_max_its = 10
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/multiple_eigenstrains_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[f1_xx]
order = CONSTANT
family = MONOMIAL
[]
[f1_yy]
order = CONSTANT
family = MONOMIAL
[]
[f1_zz]
order = CONSTANT
family = MONOMIAL
[]
[f2_xx]
order = CONSTANT
family = MONOMIAL
[]
[f2_yy]
order = CONSTANT
family = MONOMIAL
[]
[f2_zz]
order = CONSTANT
family = MONOMIAL
[]
[feig_xx]
order = CONSTANT
family = MONOMIAL
[]
[feig_yy]
order = CONSTANT
family = MONOMIAL
[]
[feig_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = '300+400*t' # temperature increases at a constant rate
execute_on = timestep_begin
[]
[f1_xx]
type = RankTwoAux
variable = f1_xx
rank_two_tensor = thermal_deformation_gradient_1
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[f1_yy]
type = RankTwoAux
variable = f1_yy
rank_two_tensor = thermal_deformation_gradient_1
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[f1_zz]
type = RankTwoAux
variable = f1_zz
rank_two_tensor = thermal_deformation_gradient_1
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f2_xx]
type = RankTwoAux
variable = f2_xx
rank_two_tensor = thermal_deformation_gradient_2
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[f2_yy]
type = RankTwoAux
variable = f2_yy
rank_two_tensor = thermal_deformation_gradient_2
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[f2_zz]
type = RankTwoAux
variable = f2_zz
rank_two_tensor = thermal_deformation_gradient_2
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[feig_xx]
type = RankTwoAux
variable = feig_xx
rank_two_tensor = eigenstrain_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[feig_yy]
type = RankTwoAux
variable = feig_yy
rank_two_tensor = eigenstrain_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[feig_zz]
type = RankTwoAux
variable = feig_zz
rank_two_tensor = eigenstrain_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = "thermal_eigenstrain_1 thermal_eigenstrain_2"
tan_mod_type = exact
maximum_substep_iteration = 5
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[thermal_eigenstrain_1]
type = ComputeCrystalPlasticityThermalEigenstrain
eigenstrain_name = thermal_eigenstrain_1
deformation_gradient_name = thermal_deformation_gradient_1
temperature = temperature
thermal_expansion_coefficients = '1e-05 2e-05 3e-05' # thermal expansion coefficients along three directions
[]
[thermal_eigenstrain_2]
type = ComputeCrystalPlasticityThermalEigenstrain
eigenstrain_name = thermal_eigenstrain_2
deformation_gradient_name = thermal_deformation_gradient_2
temperature = temperature
thermal_expansion_coefficients = '2e-05 3e-05 4e-05' # thermal expansion coefficients along three directions
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[f1_xx]
type = ElementAverageValue
variable = f1_xx
[]
[f1_yy]
type = ElementAverageValue
variable = f1_yy
[]
[f1_zz]
type = ElementAverageValue
variable = f1_zz
[]
[f2_xx]
type = ElementAverageValue
variable = f2_xx
[]
[f2_yy]
type = ElementAverageValue
variable = f2_yy
[]
[f2_zz]
type = ElementAverageValue
variable = f2_zz
[]
[feig_xx]
type = ElementAverageValue
variable = feig_xx
[]
[feig_yy]
type = ElementAverageValue
variable = feig_yy
[]
[feig_zz]
type = ElementAverageValue
variable = feig_zz
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.1
dtmin = 1e-4
end_time = 10
[]
[Outputs]
csv = true
[console]
type = Console
max_rows = 5
[]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/orthotropic_rotation_Cijkl.i)
# This test is designed to test the correct application of the Euler angle
# rotations to the elasticity tensor. The test uses values for the nine C_ijkl
# entries that correspond to the engineering notation placement:
# e.g. C11 = 11e3, c12 = 12e3, c13 = 13e3, c22 = 22e3 ..... c66 = 66e3
#
# A rotation of (0, 90, 0) is applied to the 1x1x1 cube, such that the values of
# c12 and c13 switch, c22 and c33 switch, and c55 and c66 switch. Postprocessors
# are used to verify this switch (made simple with the value convention above)
# and to verify that the unrotated components along the x-axis remain constant.
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[lage_xx]
order = CONSTANT
family = MONOMIAL
[]
[lage_yy]
order = CONSTANT
family = MONOMIAL
[]
[pk2_yy]
order = CONSTANT
family = MONOMIAL
[]
[lage_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_yy]
order = CONSTANT
family = MONOMIAL
[]
[c11]
order = CONSTANT
family = MONOMIAL
[]
[c12]
order = CONSTANT
family = MONOMIAL
[]
[c13]
order = CONSTANT
family = MONOMIAL
[]
[c22]
order = CONSTANT
family = MONOMIAL
[]
[c23]
order = CONSTANT
family = MONOMIAL
[]
[c33]
order = CONSTANT
family = MONOMIAL
[]
[c44]
order = CONSTANT
family = MONOMIAL
[]
[c55]
order = CONSTANT
family = MONOMIAL
[]
[c66]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[tdisp]
type = ParsedFunction
expression = 0.01*t
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
[]
[]
[AuxKernels]
[lage_xx]
type = RankTwoAux
rank_two_tensor = total_lagrangian_strain
variable = lage_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[lage_yy]
type = RankTwoAux
rank_two_tensor = total_lagrangian_strain
variable = lage_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[pk2_yy]
type = RankTwoAux
variable = pk2_yy
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[lage_zz]
type = RankTwoAux
rank_two_tensor = total_lagrangian_strain
variable = lage_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = plastic_deformation_gradient
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[c11]
type = RankFourAux
variable = c11
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 0
execute_on = timestep_end
[]
[c12]
type = RankFourAux
variable = c12
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 1
index_l = 1
execute_on = timestep_end
[]
[c13]
type = RankFourAux
variable = c13
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 2
index_l = 2
execute_on = timestep_end
[]
[c22]
type = RankFourAux
variable = c22
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 1
index_l = 1
execute_on = timestep_end
[]
[c23]
type = RankFourAux
variable = c23
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 2
index_l = 2
execute_on = timestep_end
[]
[c33]
type = RankFourAux
variable = c33
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 2
index_l = 2
execute_on = timestep_end
[]
[c44]
type = RankFourAux
variable = c44
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 2
index_k = 1
index_l = 2
execute_on = timestep_end
[]
[c55]
type = RankFourAux
variable = c55
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 0
index_k = 2
index_l = 0
execute_on = timestep_end
[]
[c66]
type = RankFourAux
variable = c66
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 1
index_k = 0
index_l = 1
execute_on = timestep_end
[]
[]
[BCs]
[bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[top]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '11e3 12e3 13e3 22e3 23e3 33e3 44e3 55e3 66e3'
fill_method = symmetric9
euler_angle_1 = 0.0
euler_angle_2 = 45.0
euler_angle_3 = 45.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[]
[Postprocessors]
[lage_xx]
type = ElementAverageValue
variable = lage_xx
[]
[pk2_yy]
type = ElementAverageValue
variable = pk2_yy
[]
[lage_yy]
type = ElementAverageValue
variable = lage_yy
[]
[lage_zz]
type = ElementAverageValue
variable = lage_zz
[]
[fp_yy]
type = ElementAverageValue
variable = fp_yy
[]
[c11]
type = ElementAverageValue
variable = c11
[]
[c12]
type = ElementAverageValue
variable = c12
[]
[c13]
type = ElementAverageValue
variable = c13
[]
[c22]
type = ElementAverageValue
variable = c22
[]
[c23]
type = ElementAverageValue
variable = c23
[]
[c33]
type = ElementAverageValue
variable = c33
[]
[c44]
type = ElementAverageValue
variable = c44
[]
[c55]
type = ElementAverageValue
variable = c55
[]
[c66]
type = ElementAverageValue
variable = c66
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-3
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 1 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
dtmax = 0.1
dtmin = 1.0e-3
dt = 0.05
end_time = 0.5
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/hoop_strain_comparison_coarse_yaxis.i)
# This test compares the hoop strain at two different elements in an internally
# pressurized cylinder with anisotropic plasticity: different yield condition
# for hoop and axial directions. The elements are located circumferentially
# apart but at same axial position. It is expected that due to pressurization
# hoop strains will develop with uniform magnitude along hoop direction. The
# test verifies that the plastic hoop strain is uniform in hoop direction.
# For 3D simulations with material properties oriented along the curved
# geometry such as cylinder or sphere, the stresses and strains are rotated to
# the local coordinate system from the global coordinate system. The plastic
# strain is calculated in the local coordinate system and then transformed to
# the global coordinate system. This test involves a 3D cylindrical geometry,
# and helps in indirectly verifying that this transformation of stresses and
# strains back and forth between the local and global coordinate system is
# correctly implemented.
[Mesh]
file = quarter_cylinder_coarse_yaxis.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[plasticity_strain_zz]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_zz
index_i = 2
index_j = 2
[]
[stress_zz]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[stress_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[push]
type = PiecewiseLinear
x = '0 1e2'
y = '0 200e6'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_zz elastic_strain_xx elastic_strain_yy stress_xx stress_yy stress_zz strain_zz plastic_strain_zz plastic_strain_xx plastic_strain_yy hoop_stress hoop_strain'
use_automatic_differentiation = true
add_variables = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
secondary = top # boundary
penalty = 1.0e+10
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 200.0e9
poissons_ratio = 0.2
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "plasticity"
max_iterations = 50
absolute_tolerance = 1e-30 #1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
# hill_constants = "0.5 0.5 0.5 1.5 1.5 1.5"
hill_constants = "0.5 0.25 0.5 1.5 1.5 1.5"
[]
[plasticity]
type = ADHillElastoPlasticityStressUpdate
hardening_constant = 1.5e10
hardening_exponent = 1.0
yield_stress = 0.0 # 60e6
local_cylindrical_csys = true
axis = y
absolute_tolerance = 1e-15 # 1e-8
relative_tolerance = 1e-13 # 1e-15
internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-6
internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = x_face
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = z_face
value = 0.0
[]
[Pressure]
[Side1]
boundary = inner
function = push
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-12
nl_abs_tol = 1e-14
# nl_abs_tol = 1e-10
l_max_its = 90
nl_max_its = 30
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 0.1e-4
time_t = '0 6.23 10'
time_dt = '0.1 1.0e-2 1.0e-2'
[]
num_steps = 1
start_time = 0
end_time = 200.0
automatic_scaling = true
dtmax = 0.1e-4
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[hoop_strain_elementA]
type = ElementalVariableValue
elementid = 10
variable = hoop_strain
[]
[hoop_strain_elementB]
type = ElementalVariableValue
elementid = 4
variable = hoop_strain
[]
[hoop_strain_diff]
type = DifferencePostprocessor
value1 = hoop_strain_elementA
value2 = hoop_strain_elementB
[]
[]
[Outputs]
csv = true
exodus = false
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/substep.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
block = 0
[../]
[./uy]
block = 0
[../]
[./uz]
block = 0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[../]
[]
[UserObjects]
[./slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
groups = '0 4 8 12'
group_values = '60.8 60.8 60.8'
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
block = 0
stol = 1e-2
tan_mod_type = exact
maximum_substep_iteration = 10
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'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./gss]
type = ElementAverageValue
variable = gss
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 2.0
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 30.0
dtmin = 0.5
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
csv = true
gnuplot = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/special/area.i)
# Simple 3D test
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[Kernels]
[sdx]
type = UpdatedLagrangianStressDivergence
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[sdy]
type = UpdatedLagrangianStressDivergence
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[sdz]
type = UpdatedLagrangianStressDivergence
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[AuxVariables]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[zstress]
type = PiecewiseLinear
x = '0 1'
y = '0 500'
[]
[constant]
type = ConstantFunction
value = 1.0
[]
[ratio]
type = ParsedFunction
symbol_names = 'sd su'
symbol_values = 's_def s_undef'
expression = 'sd / su'
[]
[]
[BCs]
[leftx]
type = DirichletBC
preset = true
boundary = left
variable = disp_x
value = 0.0
[]
[boty]
type = DirichletBC
preset = true
boundary = bottom
variable = disp_y
value = 0.0
[]
[backz]
type = DirichletBC
preset = true
boundary = back
variable = disp_z
value = 0.0
[]
[pull_z]
type = FunctionNeumannBC
boundary = front
variable = disp_z
function = zstress
[]
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[s_undef]
type = SideIntegralVariablePostprocessor
variable = stress_zz
boundary = front
[]
[s_def]
type = SideIntegralVariablePostprocessor
variable = stress_zz
boundary = front
use_displaced_mesh = true
[]
[area_calc]
type = FunctionValuePostprocessor
function = ratio
[]
[area]
type = AreaPostprocessor
boundary = front
use_displaced_mesh = true
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 1.0
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/stabilization/cook_small.i)
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = false
stabilize_strain = true
[]
[Mesh]
type = FileMesh
file = cook_mesh.exo
dim = 2
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[Kernels]
[sdx]
type = UpdatedLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = UpdatedLagrangianStressDivergence
variable = disp_y
component = 1
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[BCs]
[fixed_x]
type = DirichletBC
preset = true
variable = disp_x
boundary = canti
value = 0.0
[]
[fixed_y]
type = DirichletBC
preset = true
variable = disp_y
boundary = canti
value = 0.0
[]
[pull]
type = NeumannBC
variable = disp_y
boundary = loading
value = 10.0
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 250.0
poissons_ratio = 0.4999999
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = 'newton'
line_search = 'none'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-6
l_tol = 1e-10
[]
[Postprocessors]
[value]
type = PointValue
variable = disp_y
point = '48 60 0'
use_displaced_mesh = false
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_3/plane3_template2.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane3_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 200
[]
[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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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-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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement_ti.i)
# One 3D element under ramped displacement loading.
#
# loading:
# time : 0.0 0.1 0.2 0.3
# disp : 0.0 0.0 -0.01 -0.01
# This displacement loading is applied using the PresetDisplacement boundary condition.
# Here, the given displacement time history is converted to an acceleration
# time history using Backward Euler time differentiation. Then, the resulting
# acceleration is integrated using Newmark time integration to obtain a
# displacement time history which is then applied to the boundary.
# This is done because if the displacement is applied using Dirichlet BC, the
# resulting acceleration is very noisy.
# Boundaries:
# x = 0 left
# x = 1 right
# y = 0 bottom
# y = 1 top
# z = 0 back
# z = 1 front
# Result: The displacement at the top node in the z direction should match
# the prescribed displacement. Also, the z acceleration should
# be two triangular pulses, one peaking at 0.1 and another peaking at
# 0.2.
[Mesh]
type = GeneratedMesh
dim = 3 # Dimension of the mesh
nx = 1 # Number of elements in the x direction
ny = 1 # Number of elements in the y direction
nz = 1 # Number of elements in the z direction
xmin = 0.0
xmax = 1
ymin = 0.0
ymax = 1
zmin = 0.0
zmax = 1
allow_renumbering = false # So NodalVariableValue can index by id
[]
[Variables] # variables that are solved
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables] # variables that are calculated for output
[./accel_x]
[../]
[./vel_x]
[../]
[./accel_y]
[../]
[./vel_y]
[../]
[./accel_z]
[../]
[./vel_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./DynamicSolidMechanics] # zeta*K*vel + K * disp
displacements = 'disp_x disp_y disp_z'
stiffness_damping_coefficient = 0.000025
[../]
[./inertia_x] # M*accel + eta*M*vel
type = InertialForce
variable = disp_x
eta = 19.63
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
eta = 19.63
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
eta = 19.63
[../]
[]
[AuxKernels]
[./accel_x] # These auxkernels are only to check output
type = TestNewmarkTI
displacement = disp_x
variable = accel_x
first = false
[../]
[./accel_y]
type = TestNewmarkTI
displacement = disp_y
variable = accel_y
first = false
[../]
[./accel_z]
type = TestNewmarkTI
displacement = disp_z
variable = accel_z
first = false
[../]
[./vel_x]
type = TestNewmarkTI
displacement = disp_x
variable = vel_x
[../]
[./vel_y]
type = TestNewmarkTI
displacement = disp_y
variable = vel_y
[../]
[./vel_z]
type = TestNewmarkTI
displacement = disp_z
variable = vel_z
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_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_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./displacement_front]
type = PiecewiseLinear
data_file = 'displacement.csv'
format = columns
[../]
[]
[BCs]
[./Preset_displacement]
type = PresetDisplacement
variable = disp_z
function = displacement_front
boundary = front
beta = 0.25
velocity = vel_z
acceleration = accel_z
[../]
[./anchor_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./anchor_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./anchor_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
youngs_modulus = 325e6 #Pa
poissons_ratio = 0.3
type = ComputeIsotropicElasticityTensor
block = 0
[../]
[./strain]
#Computes the strain, assuming small strains
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
#Computes the stress, using linear elasticity
type = ComputeLinearElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 2000 #kg/m3
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 3.0
l_tol = 1e-6
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
dt = 0.1
timestep_tolerance = 1e-6
# Time integrator scheme
scheme = "newmark-beta"
[]
[Postprocessors] # These quantites are printed to a csv file at every time step
[./_dt]
type = TimestepSize
[../]
[./accel_6x]
type = NodalVariableValue
nodeid = 6
variable = accel_x
[../]
[./accel_6y]
type = NodalVariableValue
nodeid = 6
variable = accel_y
[../]
[./accel_6z]
type = NodalVariableValue
nodeid = 6
variable = accel_z
[../]
[./vel_6x]
type = NodalVariableValue
nodeid = 6
variable = vel_x
[../]
[./vel_6y]
type = NodalVariableValue
nodeid = 6
variable = vel_y
[../]
[./vel_6z]
type = NodalVariableValue
nodeid = 6
variable = vel_z
[../]
[./disp_6x]
type = NodalVariableValue
nodeid = 6
variable = disp_x
[../]
[./disp_6y]
type = NodalVariableValue
nodeid = 6
variable = disp_y
[../]
[./disp_6z]
type = NodalVariableValue
nodeid = 6
variable = disp_z
[../]
[]
[Outputs]
file_base = "3D_QStatic_1_Ramped_Displacement_out"
exodus = true
perf_graph = true
[]
(modules/combined/test/tests/beam_eigenstrain_transfer/subapp1_uo_transfer.i)
# SubApp with 2D model to test multi app vectorpostprocessor to aux var transfer
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 5
xmin = 0.0
xmax = 0.5
ymin = 0.0
ymax = 0.150080
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temp]
[../]
[./axial_strain]
order = FIRST
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(500.0)+300.0
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./axial_strain]
type = RankTwoAux
variable = axial_strain
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./axial_str]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0.0 0.0'
end_point = '0.5 0.150080 0.0'
variable = 'axial_strain'
num_points = 21
sort_by = 'id'
[../]
[]
[Postprocessors]
[./end_disp]
type = PointValue
variable = disp_y
point = '0.5 0.150080 0.0'
[../]
[]
(modules/solid_mechanics/test/tests/j2_plasticity/small_deform2.i)
# UserObject J2 test
# apply uniform stretch in z direction to give
# trial stress_zz = 7, so sqrt(3*J2) = 7
# with zero Poisson's ratio, this should return to
# stress_zz = 3, stress_xx = 2 = stress_yy
# (note that stress_zz - stress_xx = stress_zz - stress_yy = 1, so sqrt(3*j2) = 1,
# and that the mean stress remains = 7/3)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '3.5E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningConstant
value = 1
[../]
[./j2]
type = SolidMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = j2
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/cavity_pressure/multiple_postprocessors.i)
#
# Cavity Pressure Test (Volume input as a vector of postprocessors)
#
# 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 (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V0 + gamma * t
# with
# alpha = n0
# beta = T0 / 2
# gamma = - (0.003322259...) * V0
# 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
#
# In this test the internal volume is calculated as the sum of two Postprocessors
# internalVolumeInterior and internalVolumeExterior. This sum equals the value
# reported by the internalVolume postprocessor.
#
# The parameters combined at t = 1 gives p = 301.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
file = 3d.e
[]
[Functions]
[displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[]
[displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[]
[temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[]
[material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.35'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temp]
initial_condition = 240.54443866068704
[]
[material_input]
[]
[]
[AuxVariables]
[pressure_residual_x]
[]
[pressure_residual_y]
[]
[pressure_residual_z]
[]
[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
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
[]
[heat]
type = Diffusion
variable = temp
use_displaced_mesh = true
[]
[material_input_dummy]
type = Diffusion
variable = material_input
use_displaced_mesh = true
[]
[]
[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
[]
[]
[BCs]
[no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[]
[no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[]
[no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[]
[prescribed_left]
type = FunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[]
[prescribed_right]
type = FunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[]
[no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[]
[no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[]
[temperatureInterior]
type = FunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[]
[MaterialInput]
type = FunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[]
[CavityPressure]
[1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
volume = 'internalVolumeInterior internalVolumeExterior'
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
[]
[]
[]
[Materials]
[elast_tensor1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e1
poissons_ratio = 0
block = 1
[]
[strain1]
type = ComputeFiniteStrain
block = 1
[]
[stress1]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[elast_tensor2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
block = 2
[]
[strain2]
type = ComputeFiniteStrain
block = 2
[]
[stress2]
type = ComputeFiniteStrainElasticStress
block = 2
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
use_pre_SMO_residual = true
[]
[Postprocessors]
[internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[]
[aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[]
[internalVolumeInterior]
type = InternalVolume
boundary = '1 2 3 4 5 6'
execute_on = 'initial linear'
[]
[internalVolumeExterior]
type = InternalVolume
boundary = '13 14 15 16 17 18'
execute_on = 'initial linear'
[]
[materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/DiffuseCreep/stress_flux_n_gb_relax.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./creep_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_i = 0
index_j = 0
[../]
[./creep_strain_yy]
type = RankTwoAux
variable = creep_strain_yy
rank_two_tensor = creep_strain
index_i = 1
index_j = 1
[../]
[./creep_strain_xy]
type = RankTwoAux
variable = creep_strain_xy
rank_two_tensor = creep_strain
index_i = 0
index_j = 1
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
args = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./diffuse_strain_increment]
type = FluxBasedStrainIncrement
xflux = jx
yflux = jy
gb = gb
property_name = diffuse
[../]
[./gb_relax_prefactor]
type = DerivativeParsedMaterial
block = 0
expression = '0.01*(c-0.15)*gb'
coupled_variables = 'c gb'
property_name = gb_relax_prefactor
derivative_order = 1
[../]
[./gb_relax]
type = GBRelaxationStrainIncrement
property_name = gb_relax
prefactor_name = gb_relax_prefactor
gb_normal_name = gb_normal
[../]
[./creep_strain]
type = SumTensorIncrements
tensor_name = creep_strain
coupled_tensor_increment_names = 'diffuse gb_relax'
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
inelastic_strain_names = creep_strain
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/anisotropic_plasticity/anis_plasticity_test.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plasticity_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plasticity_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plasticity_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[Variables]
[disp_x]
scaling = 1e-10
[]
[disp_y]
scaling = 1e-10
[]
[disp_z]
scaling = 1e-10
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plasticity_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plasticity_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = trial_plasticity_plastic_strain
variable = plasticity_strain_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1e3 1e8'
y = '0 1e2 1e2'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
incremental = true
generate_output = 'elastic_strain_xx elastic_strain_yy elastic_strain_xy stress_xx stress_xy stress_yy'
use_automatic_differentiation = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 206800
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_plasticity"
max_iterations = 500
absolute_tolerance = 1e-05
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "1.0 4.0 5.0 0.5 0.5 0.5"
base_name = trial_plasticity
[]
[trial_plasticity]
type = ADHillPlasticityStressUpdate
# internal_solve_output_on = always
# F G H L M N
hardening_constant = 5000
yield_stress = 20000000000000
base_name = trial_plasticity
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[Pressure]
[Side1]
boundary = top
function = pull
[]
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_gmres_restart -pc_type -sub_pc_type'
petsc_options_value = '101 asm lu'
line_search = 'none'
nl_rel_tol = 1e-07
nl_abs_tol = 1.0e-15
l_max_its = 90
num_steps = 40
dt = 5.0e1
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/contact/test/tests/pdass_problems/ironing_penalty_al.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = iron.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10001
new_block_name = 'secondary_lower'
sidesets = '10'
input = input_file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10000
sidesets = '20'
new_block_name = 'primary_lower'
input = secondary
[]
patch_update_strategy = auto
patch_size = 20
allow_renumbering = false
[]
[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
[]
[real_weighted_gap]
order = FIRST
family = LAGRANGE
[]
[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]
[]
[von_mises]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 2. 8.'
y = '0. -1.0 -1.0'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 8.'
y = '0. 8.'
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
block = '1 2'
strain = FINITE
[]
[]
[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
[]
[real_weighted_gap_auxk]
type = PenaltyMortarUserObjectAux
variable = real_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'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
block = '1 2'
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
block = '1 2'
[]
[von_mises_kernel]
#Calculates the von mises stress and assigns it to von_mises
type = RankTwoScalarAux
variable = von_mises
rank_two_tensor = stress
execute_on = timestep_end
scalar_type = VonMisesStress
block = '1 2'
[]
[]
# [VectorPostprocessors]
# [penalty_normal_pressure]
# type = NodalValueSampler
# variable = penalty_normal_pressure
# boundary = 10
# sort_by = id
# []
# []
[Postprocessors]
[num_nl]
type = NumNonlinearIterations
[]
[cumulative]
type = CumulativeValuePostprocessor
postprocessor = num_nl
[]
[force_x]
type = NodalSum
boundary = 30
variable = saved_x
[]
[force_y]
type = NodalSum
boundary = 30
variable = saved_y
[]
[gap]
type = SideExtremeValue
value_type = min
variable = real_weighted_gap
boundary = 10
[]
[num_al]
type = NumAugmentedLagrangeIterations
[]
[]
[BCs]
[bot_x_disp]
type = DirichletBC
variable = disp_x
boundary = '40'
value = 0.0
preset = false
[]
[bot_y_disp]
type = DirichletBC
variable = disp_y
boundary = '40'
value = 0.0
preset = false
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = '30'
function = disp_ramp_vert
preset = false
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = '30'
function = disp_ramp_horz
preset = false
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 6896
poissons_ratio = 0.32
[]
[stuff1_strain]
type = ComputeFiniteStrain
block = '2'
[]
[stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 689.6
poissons_ratio = 0.32
[]
[stuff2_strain]
type = ComputeFiniteStrain
block = '1'
[]
[stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
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-7
l_tol = 1e-6
l_max_its = 7
nl_max_its = 300
start_time = 0.0
end_time = 6.5 # 6.5
dt = 0.0125
dtmin = 1e-5
[Predictor]
type = SimplePredictor
scale = 1.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = true
csv = true
# [chkfile]
# type = CSV
# start_time = 0.0
# execute_vector_postprocessors_on = FINAL
# []
[console]
type = Console
max_rows = 5
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Problem]
type = AugmentedLagrangianContactFEProblem
[]
[UserObjects]
[friction_uo]
type = PenaltyFrictionUserObject
primary_boundary = 20
secondary_boundary = 10
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 = 5e5
penalty_friction = 1e4
slip_tolerance = 1e-05
penetration_tolerance = 1e-03
[]
[]
[Constraints]
[x]
type = NormalMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
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 = 20
secondary_boundary = 10
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
[]
[t_x]
type = TangentialMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
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
[]
[t_y]
type = TangentialMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
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/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/action/noaction_2d.i)
# 2D with mixed conditions on stress/strain
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = false
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '2d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0'
fixed_normal = true
new_boundary = 'left right bottom top'
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
constraint_types = 'stress none none stress strain none none none none'
targets = 'stress11 stress12 strain22'
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[hvar]
family = SCALAR
order = THIRD
[]
[]
[AuxVariables]
[pk1_stress_xx]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_yx]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_zx]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_xy]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_yy]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_zy]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_xz]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_yz]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_zz]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_xx]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_yx]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_zx]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_xy]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_yy]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_zy]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_xz]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_yz]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_zz]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[pk1_stress_xx]
type = RankTwoAux
variable = pk1_stress_xx
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[pk1_stress_yx]
type = RankTwoAux
variable = pk1_stress_yx
rank_two_tensor = pk1_stress
index_i = 1
index_j = 0
[]
[pk1_stress_zx]
type = RankTwoAux
variable = pk1_stress_zx
rank_two_tensor = pk1_stress
index_i = 2
index_j = 0
[]
[pk1_stress_xy]
type = RankTwoAux
variable = pk1_stress_xy
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[pk1_stress_yy]
type = RankTwoAux
variable = pk1_stress_yy
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[pk1_stress_zy]
type = RankTwoAux
variable = pk1_stress_zy
rank_two_tensor = pk1_stress
index_i = 2
index_j = 1
[]
[pk1_stress_xz]
type = RankTwoAux
variable = pk1_stress_xz
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[pk1_stress_yz]
type = RankTwoAux
variable = pk1_stress_yz
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[pk1_stress_zz]
type = RankTwoAux
variable = pk1_stress_zz
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[deformation_gradient_xx]
type = RankTwoAux
variable = deformation_gradient_xx
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 0
[]
[deformation_gradient_yx]
type = RankTwoAux
variable = deformation_gradient_yx
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 0
[]
[deformation_gradient_zx]
type = RankTwoAux
variable = deformation_gradient_zx
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 0
[]
[deformation_gradient_xy]
type = RankTwoAux
variable = deformation_gradient_xy
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 1
[]
[deformation_gradient_yy]
type = RankTwoAux
variable = deformation_gradient_yy
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[deformation_gradient_zy]
type = RankTwoAux
variable = deformation_gradient_zy
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 1
[]
[deformation_gradient_xz]
type = RankTwoAux
variable = deformation_gradient_xz
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 2
[]
[deformation_gradient_yz]
type = RankTwoAux
variable = deformation_gradient_yz
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 2
[]
[deformation_gradient_zz]
type = RankTwoAux
variable = deformation_gradient_zz
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 2
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[stress11]
type = ParsedFunction
expression = '400*t'
[]
[strain22]
type = ParsedFunction
expression = '-2.0e-2*t'
[]
[stress12]
type = ParsedFunction
expression = '100*t'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y'
[]
[y]
variable = disp_y
auto_direction = 'x y'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix1"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix1"
variable = disp_y
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix2"
variable = disp_y
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 30
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
file_base = 2d
exodus = true
[]
(modules/solid_mechanics/test/tests/ad_2D_geometries/2D-RZ_finiteStrain_test.i)
# Considers the mechanics solution for a thick spherical shell that is uniformly
# pressurized on the inner and outer surfaces, using 2D axisymmetric geometry.
# This test uses the strain calculator ComputeAxisymmetricRZFiniteStrain,
# which is generated through the use of the SolidMechanics QuasiStatic Physics.
#
# From Roark (Formulas for Stress and Strain, McGraw-Hill, 1975), the radially-dependent
# circumferential stress in a uniformly pressurized thick spherical shell is given by:
#
# S(r) = [ Pi[ri^3(2r^3+ro^3)] - Po[ro^3(2r^3+ri^3)] ] / [2r^3(ro^3-ri^3)]
#
# where:
# Pi = inner pressure
# Po = outer pressure
# ri = inner radius
# ro = outer radius
#
# The tests assume an inner and outer radii of 5 and 10, with internal and external
# pressures of 100000 and 200000 at t = 1.0, respectively. The resulting compressive
# tangential stress is largest at the inner wall and, from the above equation, has a
# value of -271429.
#
# RESULTS are below. Since stresses are average element values, values for the
# edge element and one-element-in are used to extrapolate the stress to the
# inner surface. The vesrion of the tests that are checked use the coarsest meshes.
#
# Mesh Radial elem S(edge elem) S(one elem in) S(extrap to surf)
# 1D-SPH
# 2D-RZ 12 (x10) -265004 -254665 -270174
# 3D 12 (6x6) -261880 -252811 -266415
#
# 1D-SPH
# 2D-RZ 48 (x10) -269853 -266710 -271425
# 3D 48 (10x10) -268522 -265653 -269957
#
# The numerical solution converges to the analytical solution as the mesh is
# refined.
[Mesh]
file = 2D-RZ_mesh.e
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
block = 1
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = ADRankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
block = 1
[../]
[./_elastic_strain]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_r]
type = ADDirichletBC
variable = disp_r
boundary = xzero
value = 0.0
[../]
[./no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = yzero
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_r]
type = ADPressure
variable = disp_r
boundary = outer
component = 0
function = '200000*t'
[../]
[./exterior_pressure_z]
type = ADPressure
variable = disp_z
boundary = outer
component = 1
function = '200000*t'
[../]
[./interior_pressure_r]
type = ADPressure
variable = disp_r
boundary = inner
component = 0
function = '100000*t'
[../]
[./interior_pressure_z]
type = ADPressure
variable = disp_z
boundary = inner
component = 1
function = '100000*t'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 0.2
dt = 0.1
[]
[Postprocessors]
[./strainTheta]
type = ElementAverageValue
variable = strain_theta
[../]
[./stressTheta]
type = ElementAverageValue
variable = stress_theta
[../]
[./stressTheta_pt]
type = PointValue
point = '5.0 0.0 0.0'
#bottom inside edge for comparison to theory; use csv = true
variable = stress_theta
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/multi/special_joint1.i)
# Plasticity models:
# WeakPlaneTensile with strength = 1000Pa
# WeakPlaneShear with cohesion = 0.1MPa and friction angle = 25
#
# Lame lambda = 1GPa. Lame mu = 1.3GPa
#
# A line of elements is perturbed randomly, and return to the yield surface at each quadpoint is checked
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 125
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 125
zmin = 0
zmax = 1
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[ICs]
[./x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console csv'
[../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console csv'
[../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console csv'
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console csv'
[../]
[]
[UserObjects]
[./wpt_str]
type = SolidMechanicsHardeningConstant
value = 1000
[../]
[./wpt]
type = SolidMechanicsPlasticWeakPlaneTensile
tensile_strength = wpt_str
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./wps_c]
type = SolidMechanicsHardeningConstant
value = 1.0E5
[../]
[./wps_tan_phi]
type = SolidMechanicsHardeningConstant
value = 0.466
[../]
[./wps_tan_psi]
type = SolidMechanicsHardeningConstant
value = 0.087
[../]
[./wps]
type = SolidMechanicsPlasticWeakPlaneShear
cohesion = wps_c
tan_friction_angle = wps_tan_phi
tan_dilation_angle = wps_tan_psi
smoother = 0
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1.0E9 1.3E9'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-7
plastic_models = 'wpt wps'
max_NR_iterations = 5
specialIC = 'joint'
deactivation_scheme = 'safe'
min_stepsize = 1
max_stepsize_for_dumb = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1 1'
debug_jac_at_intnl = '1 1 1 1'
debug_stress_change = 1E1
debug_pm_change = '1E-6 1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = special_joint1
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/substep.i)
[GlobalParams]
displacements = 'ux uy uz'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[gss]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = 0.01*t
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 10
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
resistance_tol = 1.0e-2
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[gss]
type = ElementAverageValue
variable = gss
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 2.0
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
dtmin = 0.5
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
csv = true
gnuplot = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_y_3d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 10
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 1.0
ymax = 10.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '4 10'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '1 67'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[creep_strain_zz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[sigma_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0e-11 1.0'
y = '0 -4e1 -4e1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_yy stress_yy'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_creep_two"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.25 0.3866 1.6413 1.6413 1.2731"
[]
[trial_creep_two]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
absolute_tolerance = 1e-20
relative_tolerance = 1e-20
# Force it to not use integration error
max_integration_error = 0.000001
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = 101
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 100
value = 0.0
[]
[pressure]
type = ADPressure
boundary = top
function = pull
variable = disp_y
component = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1.0e-13
nl_abs_tol = 1.0e-13
l_max_its = 90
num_steps = 10
dt = 1.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_yy]
type = ElementalVariableValue
variable = creep_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_yy]
type = ElementalVariableValue
variable = elastic_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_yy]
type = ElementalVariableValue
variable = stress_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/multi/three_surface11.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 3
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 0E-6m in y direction and 2E-6 in z direction.
# trial stress_yy = 0 and stress_zz = 2.0
#
# Then SimpleTester0 should activate and the algorithm will return to
# stress_zz=1
# internal0 should be 1.0
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '2.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface11
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/contact/test/tests/pdass_problems/ironing_penalty_action.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = iron.e
[]
patch_update_strategy = auto
patch_size = 20
allow_renumbering = false
[]
[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
[]
[real_weighted_gap]
order = FIRST
family = LAGRANGE
[]
[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]
[]
[von_mises]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 2. 8.'
y = '0. -1.0 -1.0'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 8.'
y = '0. 8.'
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
block = '1 2'
strain = FINITE
[]
[]
[AuxKernels]
[penalty_normal_pressure_auxk]
type = PenaltyMortarUserObjectAux
variable = penalty_normal_pressure
user_object = penalty_friction_object_contact_block
contact_quantity = normal_pressure
[]
[penalty_frictional_pressure_auxk]
type = PenaltyMortarUserObjectAux
variable = penalty_frictional_pressure
user_object = penalty_friction_object_contact_block
contact_quantity = tangential_pressure_one
[]
[penalty_accumulated_slip_auxk]
type = PenaltyMortarUserObjectAux
variable = accumulated_slip_one
user_object = penalty_friction_object_contact_block
contact_quantity = accumulated_slip_one
[]
[penalty_tangential_vel_auxk]
type = PenaltyMortarUserObjectAux
variable = tangential_vel_one
user_object = penalty_friction_object_contact_block
contact_quantity = tangential_velocity_one
[]
[real_weighted_gap_auxk]
type = PenaltyMortarUserObjectAux
variable = real_weighted_gap
user_object = penalty_friction_object_contact_block
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'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
block = '1 2'
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
block = '1 2'
[]
[von_mises_kernel]
#Calculates the von mises stress and assigns it to von_mises
type = RankTwoScalarAux
variable = von_mises
rank_two_tensor = stress
execute_on = timestep_end
scalar_type = VonMisesStress
block = '1 2'
[]
[]
[Contact]
[contact_block]
primary = 20
secondary = 10
friction_coefficient = 0.1
model = coulomb
formulation = mortar_penalty
penalty = 1e5
penalty_friction = 1e4
use_dual = false
[]
[]
[VectorPostprocessors]
[penalty_normal_pressure]
type = NodalValueSampler
variable = penalty_normal_pressure
boundary = 10
sort_by = id
[]
[]
[Postprocessors]
[top_react_x]
type = NodalSum
variable = saved_x
boundary = 30
[]
[top_react_y]
type = NodalSum
variable = saved_y
boundary = 30
[]
[]
[BCs]
[bot_x_disp]
type = DirichletBC
variable = disp_x
boundary = '40'
value = 0.0
preset = false
[]
[bot_y_disp]
type = DirichletBC
variable = disp_y
boundary = '40'
value = 0.0
preset = false
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = '30'
function = disp_ramp_vert
preset = false
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = '30'
function = disp_ramp_horz
preset = false
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 6896
poissons_ratio = 0.32
[]
[stuff1_strain]
type = ComputeFiniteStrain
block = '2'
[]
[stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 689.6
poissons_ratio = 0.32
[]
[stuff2_strain]
type = ComputeFiniteStrain
block = '1'
[]
[stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
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-7
l_tol = 1e-6
l_max_its = 50
nl_max_its = 30
start_time = 0.0
end_time = 6.5 # 6.5
dt = 0.0125
dtmin = 1e-5
[Predictor]
type = SimplePredictor
scale = 1.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = true
csv = true
hide = 'nodal_area penetration contact_pressure'
[chkfile]
type = CSV
start_time = 0.0
execute_vector_postprocessors_on = FINAL
[]
[console]
type = Console
max_rows = 5
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/solid_mechanics/test/tests/lagrangian/total/rates/shear.i)
# shear modulus
G = 5000
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 0
index_j = 0
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 0
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[]
[BCs]
[x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'top bottom' # This contains all 8 nodes in the patch
function = 't*y'
[]
[y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top bottom' # This contains all 8 nodes in the patch
function = '0'
[]
[z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'top bottom' # This contains all 8 nodes in the patch
function = '0'
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
lambda = ${G}
shear_modulus = ${G}
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = stress_xx
execute_on = 'INITIAL TIMESTEP_BEGIN'
outputs = none
[]
[sxx0]
type = ParsedPostprocessor
pp_names = 'sxx'
expression = 'sxx/${G}'
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[syy]
type = ElementAverageValue
variable = stress_yy
execute_on = 'INITIAL TIMESTEP_BEGIN'
outputs = none
[]
[syy0]
type = ParsedPostprocessor
pp_names = 'syy'
expression = 'syy/${G}'
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[sxy]
type = ElementAverageValue
variable = stress_xy
execute_on = 'INITIAL TIMESTEP_BEGIN'
outputs = none
[]
[sxy0]
type = ParsedPostprocessor
pp_names = 'sxy'
expression = 'sxy/${G}'
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = NEWTON
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
end_time = 20
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/hyperelastic_viscoplastic/one_elem_linear_harden.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
block = 0
[../]
[./uy]
block = 0
[../]
[./uz]
block = 0
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./peeq]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./peeq]
type = MaterialRealAux
variable = peeq
property = ep_eqv
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = '0.01*t'
[../]
[]
[UserObjects]
[./flowstress]
type = HEVPLinearHardening
yield_stress = 100
slope = 10
intvar_prop_name = ep_eqv
[../]
[./flowrate]
type = HEVPFlowRatePowerLawJ2
reference_flow_rate = 0.0001
flow_rate_exponent = 50.0
flow_rate_tol = 1
strength_prop_name = flowstress
[../]
[./ep_eqv]
type = HEVPEqvPlasticStrain
intvar_rate_prop_name = ep_eqv_rate
[../]
[./ep_eqv_rate]
type = HEVPEqvPlasticStrainRate
flow_rate_prop_name = flowrate
[../]
[]
[Materials]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[../]
[./viscop]
type = FiniteStrainHyperElasticViscoPlastic
block = 0
resid_abs_tol = 1e-18
resid_rel_tol = 1e-8
maxiters = 50
max_substep_iteration = 5
flow_rate_user_objects = 'flowrate'
strength_user_objects = 'flowstress'
internal_var_user_objects = 'ep_eqv'
internal_var_rate_user_objects = 'ep_eqv_rate'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '2.8e5 1.2e5 1.2e5 2.8e5 1.2e5 2.8e5 0.8e5 0.8e5 0.8e5'
fill_method = symmetric9
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./peeq]
type = ElementAverageValue
variable = peeq
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.02
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
dtmax = 10.0
nl_rel_tol = 1e-10
dtmin = 0.02
num_steps = 10
[]
[Outputs]
file_base = one_elem_linear_harden
exodus = true
csv = false
[]
(modules/xfem/test/tests/moving_interface/moving_bimaterial_finite_strain_esm_using_cut_mesh.i)
# This test is for two layer materials with different youngs modulus with AD
# The global stress is determined by switching the stress based on level set values
# The material interface is marked by a level set function
# The two layer materials are glued together
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[XFEM]
output_cut_plane = true
[]
[UserObjects]
[cut]
type = InterfaceMeshCut2DUserObject
mesh_file = line.e
interface_velocity_function = 1
heal_always = true
[]
[esm]
type = CutElementSubdomainModifier
geometric_cut_userobject = cut
apply_initial_conditions = false
[]
[]
[Mesh]
use_displaced_mesh = true
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmin = 0
xmax = 5
ymin = 0
ymax = 5
elem_type = QUAD4
[]
[bottom]
type = SubdomainBoundingBoxGenerator
input = generated_mesh
block_id = 0
bottom_left = '0 0 0'
top_right = '5 2.5 0'
[]
[top]
type = SubdomainBoundingBoxGenerator
input = bottom
block_id = 1
bottom_left = '0 2.5 0'
top_right = '5 5 0'
[]
[]
[Functions]
[ls_func]
type = ParsedFunction
expression = 'y-2.73+t'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[ls]
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[ls_function]
type = FunctionAux
variable = ls
function = ls_func
[]
[strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[]
[strain_yy]
type = RankTwoAux
variable = strain_yy
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[]
[strain_xy]
type = RankTwoAux
variable = strain_xy
rank_two_tensor = total_strain
index_i = 0
index_j = 1
[]
[stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[]
[stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[]
[Constraints]
[dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'cut'
[]
[dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'cut'
[]
[]
[BCs]
[bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[]
[bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[]
[topx]
type = FunctionDirichletBC
boundary = top
variable = disp_x
function = 0.03*t
[]
[topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[]
[]
[Materials]
[elasticity_tensor_A]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1e9
poissons_ratio = 0.3
[]
[strain_A]
type = ComputeFiniteStrain
block = 1
[]
[stress_A]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[elasticity_tensor_B]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1e7
poissons_ratio = 0.3
[]
[strain_B]
type = ComputeFiniteStrain
block = 0
[]
[stress_B]
type = ComputeFiniteStrainElasticStress
block = 0
[]
[]
[Postprocessors]
[disp_x_norm]
type = ElementL2Norm
variable = disp_x
[]
[disp_y_norm]
type = ElementL2Norm
variable = disp_y
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
automatic_scaling = true
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-13
nl_abs_tol = 1e-50
# time control
start_time = 0.0
dt = 0.1
num_steps = 4
max_xfem_update = 1
[]
[Outputs]
print_linear_residuals = false
exodus = true
[]
(modules/solid_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_hht_ti.i)
# Test for rayleigh damping implemented using HHT time integration
#
# The test is for an 1D bar element of unit length fixed on one end
# with a ramped pressure boundary condition applied to the other end.
# zeta and eta correspond to the stiffness and mass proportional rayleigh damping
# alpha, beta and gamma are HHT time integration parameters
# The equation of motion in terms of matrices is:
#
# M*accel + (eta*M+zeta*K)*[(1+alpha)vel-alpha vel_old]
# + alpha*(K*disp - K*disp_old) + K*disp = P(t+alpha dt)*Area
#
# Here M is the mass matrix, K is the stiffness matrix, P is the applied pressure
#
# This equation is equivalent to:
#
# density*accel + eta*density*[(1+alpha)vel-alpha vel_old]
# + zeta*[(1+alpha)*d/dt(Div stress)- alpha*d/dt(Div stress_old)]
# + alpha *(Div stress - Div stress_old) +Div Stress= P(t+alpha dt)
#
# The first two terms on the left are evaluated using the Inertial force kernel
# The next three terms on the left involving zeta and alpha are evaluated using
# the DynamicStressDivergenceTensors Kernel
# The residual due to Pressure is evaluated using Pressure boundary condition
#
# The system will come to steady state slowly after the pressure becomes constant.
# Alpha equal to zero will result in Newmark integration.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.1
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[DynamicSolidMechanics]
displacements = 'disp_x disp_y disp_z'
stiffness_damping_coefficient = 0.1
hht_alpha = 0.11
[]
[inertia_x]
type = InertialForce
variable = disp_x
eta = 0.1
alpha = 0.11
[]
[inertia_y]
type = InertialForce
variable = disp_y
eta = 0.1
alpha = 0.11
[]
[inertia_z]
type = InertialForce
variable = disp_z
eta = 0.1
alpha = 0.11
[]
[]
[AuxKernels]
[accel_x] # These auxkernels are only to check output
type = TestNewmarkTI
displacement = disp_x
variable = accel_x
first = false
[]
[accel_y]
type = TestNewmarkTI
displacement = disp_y
variable = accel_y
first = false
[]
[accel_z]
type = TestNewmarkTI
displacement = disp_z
variable = accel_z
first = false
[]
[vel_x]
type = TestNewmarkTI
displacement = disp_x
variable = vel_x
[]
[vel_y]
type = TestNewmarkTI
displacement = disp_y
variable = vel_y
[]
[vel_z]
type = TestNewmarkTI
displacement = disp_z
variable = vel_z
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[BCs]
[top_y]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[]
[top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[Pressure]
[Side1]
boundary = bottom
function = pressure
displacements = 'disp_x disp_y disp_z'
factor = 1
hht_alpha = 0.11
[]
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '210e9 0'
[]
[strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[]
[stress]
type = ComputeLinearElasticStress
block = 0
[]
[density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '7750'
[]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dt = 0.1
# Time integrator scheme
scheme = "newmark-beta"
[]
[Functions]
[pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.1 0.2 1.0 1.0 1.0'
scale_factor = 1e9
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[disp]
type = NodalExtremeValue
variable = disp_y
boundary = bottom
[]
[vel]
type = NodalExtremeValue
variable = vel_y
boundary = bottom
[]
[accel]
type = NodalExtremeValue
variable = accel_y
boundary = bottom
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
file_base = 'rayleigh_hht_out'
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/dynamics/time_integration/hht_test_action.i)
# Test for HHT time integration
# The test is for an 1D bar element of unit length fixed on one end
# with a ramped pressure boundary condition applied to the other end.
# alpha, beta and gamma are HHT time integration parameters
# The equation of motion in terms of matrices is:
#
# M*accel + alpha*(K*disp - K*disp_old) + K*disp = P(t+alpha dt)*Area
#
# Here M is the mass matrix, K is the stiffness matrix, P is the applied pressure
#
# This equation is equivalent to:
#
# density*accel + alpha*(Div stress - Div stress_old) +Div Stress= P(t+alpha dt)
#
# The first term on the left is evaluated using the Inertial force kernel
# The next two terms on the left involving alpha are evaluated using the
# DynamicStressDivergenceTensors Kernel
# The residual due to Pressure is evaluated using Pressure boundary condition
#
# The system will come to steady state slowly after the pressure becomes constant.
# Alpha equal to zero will result in Newmark integration.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/Dynamic]
[all]
add_variables = true
hht_alpha = 0.11
newmark_beta = 0.25
newmark_gamma = 0.5
density = 7750
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 0
index_j = 1
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 0
index_j = 1
[]
[]
[BCs]
[top_y]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[]
[top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[Pressure]
[Side1]
boundary = bottom
function = pressure
factor = 1
hht_alpha = 0.11
displacements = 'disp_x disp_y disp_z'
[]
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '210e9 0'
[]
[stress]
type = ComputeLinearElasticStress
block = 0
[]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dt = 0.1
[]
[Functions]
[pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.1 0.2 1.0 1.0 1.0'
scale_factor = 1e9
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[disp]
type = NodalExtremeValue
variable = disp_y
boundary = bottom
[]
[vel]
type = NodalExtremeValue
variable = vel_y
boundary = bottom
[]
[accel]
type = NodalExtremeValue
variable = accel_y
boundary = bottom
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/ad_action/two_block_new.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics/SolidMechanics/QuasiStatic]
# parameters that apply to all subblocks are specified at this level. They
# can be overwritten in the subblocks.
add_variables = true
strain = FINITE
generate_output = 'stress_xx'
[./block1]
# the `block` parameter is only valid insde a subblock.
block = 1
use_automatic_differentiation = true
[../]
[./block2]
block = 2
# the `additional_generate_output` parameter is also only valid inside a
# subblock. Values specified here are appended to the `generate_output`
# parameter values.
additional_generate_output = 'strain_yy'
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = ADRankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[./_elastic_stress2]
type = ADComputeFiniteStrainElasticStress
block = 2
[../]
[]
[BCs]
[./left]
type = DirichletBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[./top]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./right]
type = DirichletBC
boundary = 'right'
variable = disp_x
value = 0.01
[../]
[./bottom]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.01
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_temperature_coefficients_function.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[temperature]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[temperature]
type = ConstantAux
variable = temperature
value = 50
[]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[creep_strain_zz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
[]
[creep_strain_xz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xz
index_i = 0
index_j = 2
[]
[creep_strain_yz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yz
index_i = 1
index_j = 2
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[]
[ICs]
[temp]
type = ConstantIC
variable = temperature
value = 50.0
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0e-9 1.0'
y = '0 -4e1 -4e1'
[]
[F]
type = PiecewiseLinear
x = '-1000 10000'
y = '0.5 0.5'
[]
[G]
type = PiecewiseLinear
x = '-1000 10000'
y = '0.5 0.5'
[]
[H]
type = PiecewiseLinear
x = '-1000 10000'
y = '0.5 0.5'
[]
[L]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.5 1.5'
[]
[M]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.5 1.5'
[]
[N]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.5 1.5'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = 'trial_creep_aniso_iso'
max_iterations = 50
[]
[hill_constants]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.5 0.5 1.5 1.5 1.5"
function_names = 'F G H L M N'
temperature = temperature
[]
[trial_creep_aniso_iso]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
relative_tolerance = 1e-20
absolute_tolerance = 1e-20
internal_solve_output_on = never
# Force it to not use integration error
max_integration_error = 1.0
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-13
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 50
dt = 5.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_yy]
type = ElementalVariableValue
variable = creep_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_zz]
type = ElementalVariableValue
variable = creep_strain_zz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_xy]
type = ElementalVariableValue
variable = creep_strain_xy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_yz]
type = ElementalVariableValue
variable = creep_strain_yz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_xz]
type = ElementalVariableValue
variable = creep_strain_xz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/ad_aniso_plasticity_x_one_ref.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1e1 1e8'
y = '0 -4e2 -4e2'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 70000
poissons_ratio = 0.25
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_plasticity"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5829856 0.364424 0.6342174 2.0691375 2.3492325 1.814589"
[]
[trial_plasticity]
type = ADHillPlasticityStressUpdate
hardening_constant = 2000.0
yield_stress = 0.001 # was 200 for verification
absolute_tolerance = 1e-15
relative_tolerance = 1e-13
# internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-6
# internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = left
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = left
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-12
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 25
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 1.0e-5
time_t = '0 3.4e-5 10'
time_dt = '1.0e-5 1.0e-7 1.0e-7'
[]
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[plasticity_strain_xx]
type = ElementalVariableValue
variable = plastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_substep.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
block = 0
[../]
[./uy]
block = 0
[../]
[./uz]
block = 0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCrystalPlasticity
block = 0
gtol = 1e-2
slip_sys_file_name = input_slip_sys.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
hprops = '1.0 541.5 60.8 109.8 2.5'
gprops = '1 4 60.8 5 8 60.8 9 12 60.8'
tan_mod_type = exact
gen_random_stress_flag = false
maximum_substep_iteration = 2
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.5
dtmax = 10.0
dtmin = 0.5
num_steps = 3
[]
[Outputs]
file_base = crysp_substep_out
exodus = true
csv = true
gnuplot = true
[]
(modules/solid_mechanics/test/tests/drucker_prager/small_deform2_inner_edge.i)
# apply repeated stretches in x, y and z directions, so that mean_stress = 0
# This maps out the yield surface in the octahedral plane for zero mean stress
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1.5E-6*x+2E-6*x*sin(t)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2E-6*y*sin(2*t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-2E-6*z*(sin(t)+sin(2*t))'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 20
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 0
[../]
[./mc]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
smoother = 4
mc_interpolation_scheme = inner_edge
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-12
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 100
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2_inner_edge
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/finite_strain_tensor_mechanics_tests/finite_strain_patch.i)
# Patch Test
# This test is designed to compute constant xx, yy, zz, xy, yz, and zx
# stress on a set of irregular hexes. The mesh is composed of one
# block with seven elements. The elements form a unit cube with one
# internal element. There is a nodeset for each exterior node.
# The cube is displaced by 1e-6 units in x, 2e-6 in y, and 3e-6 in z.
# The faces are sheared as well (1e-6, 2e-6, and 3e-6 for xy, yz, and
# zx). This gives a uniform strain/stress state for all six unique
# tensor components.
# With Young's modulus at 1e6 and Poisson's ratio at 0, the shear
# modulus is 5e5 (G=E/2/(1+nu)). Therefore,
#
# stress xx = 1e6 * 1e-6 = 1
# stress yy = 1e6 * 2e-6 = 2
# stress zz = 1e6 * 3e-6 = 3
# stress xy = 2 * 5e5 * 1e-6 / 2 = 0.5
# (2 * G * gamma_xy / 2 = 2 * G * epsilon_xy)
# stress yz = 2 * 5e5 * 2e-6 / 2 = 1
# stress zx = 2 * 5e5 * 3e-6 / 2 = 1.5
[Mesh]
# Comment
# Mesh
file = patch_mesh.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Functions]
# Functions
[./rampConstant1]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 1e-6
[../]
[./rampConstant2]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 2e-6
[../]
[./rampConstant3]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 3e-6
[../]
[./rampConstant4]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 4e-6
[../]
[./rampConstant6]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 6e-6
[../]
[]
[Variables]
# Variables
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
# 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
[../]
[]
[Kernels]
[SolidMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
# AuxKernels
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[]
[BCs]
# BCs
[./node1_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./node1_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = rampConstant2
[../]
[./node1_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 1
function = rampConstant3
[../]
[./node2_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = rampConstant1
[../]
[./node2_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = rampConstant2
[../]
[./node2_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 2
function = rampConstant6
[../]
[./node3_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 3
function = rampConstant1
[../]
[./node3_y]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[../]
[./node3_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 3
function = rampConstant3
[../]
[./node4_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0.0
[../]
[./node4_y]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[./node4_z]
type = DirichletBC
variable = disp_z
boundary = 4
value = 0.0
[../]
[./node5_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 5
function = rampConstant1
[../]
[./node5_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 5
function = rampConstant4
[../]
[./node5_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 5
function = rampConstant3
[../]
[./node6_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 6
function = rampConstant2
[../]
[./node6_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 6
function = rampConstant4
[../]
[./node6_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 6
function = rampConstant6
[../]
[./node7_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 7
function = rampConstant2
[../]
[./node7_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 7
function = rampConstant2
[../]
[./node7_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 7
function = rampConstant3
[../]
[./node8_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 8
function = rampConstant1
[../]
[./node8_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 8
function = rampConstant2
[../]
[./node8_z]
type = DirichletBC
variable = disp_z
boundary = 8
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = '1 2 3 4 5 6 7'
C_ijkl = '1.0e6 0.0 0.0 1.0e6 0.0 1.0e6 0.5e6 0.5e6 0.5e6'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = '1 2 3 4 5 6 7'
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
# Executioner
type = Transient
solve_type = 'NEWTON'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 2
petsc_options_iname = -pc_type
petsc_options_value = lu
end_time = 2.0
[]
[Outputs]
exodus = true
[] # Output
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/large-tests/1d.i)
# 1D strain controlled test
[GlobalParams]
displacements = 'disp_x'
large_kinematics = true
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '1d.exo'
[]
[ss]
type = SideSetsFromPointsGenerator
input = base
points = '-1 0 0
7 0 0'
new_boundary = 'left right'
[]
[]
[Variables]
[disp_x]
[]
[hvar]
family = SCALAR
order = FIRST
[]
[]
[AuxVariables]
[s11]
family = MONOMIAL
order = CONSTANT
[]
[s21]
family = MONOMIAL
order = CONSTANT
[]
[s31]
family = MONOMIAL
order = CONSTANT
[]
[s12]
family = MONOMIAL
order = CONSTANT
[]
[s22]
family = MONOMIAL
order = CONSTANT
[]
[s32]
family = MONOMIAL
order = CONSTANT
[]
[s13]
family = MONOMIAL
order = CONSTANT
[]
[s23]
family = MONOMIAL
order = CONSTANT
[]
[s33]
family = MONOMIAL
order = CONSTANT
[]
[F11]
family = MONOMIAL
order = CONSTANT
[]
[F21]
family = MONOMIAL
order = CONSTANT
[]
[F31]
family = MONOMIAL
order = CONSTANT
[]
[F12]
family = MONOMIAL
order = CONSTANT
[]
[F22]
family = MONOMIAL
order = CONSTANT
[]
[F32]
family = MONOMIAL
order = CONSTANT
[]
[F13]
family = MONOMIAL
order = CONSTANT
[]
[F23]
family = MONOMIAL
order = CONSTANT
[]
[F33]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s11]
type = RankTwoAux
variable = s11
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[s21]
type = RankTwoAux
variable = s21
rank_two_tensor = pk1_stress
index_i = 1
index_j = 0
[]
[s31]
type = RankTwoAux
variable = s31
rank_two_tensor = pk1_stress
index_i = 2
index_j = 0
[]
[s12]
type = RankTwoAux
variable = s12
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[s22]
type = RankTwoAux
variable = s22
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[s32]
type = RankTwoAux
variable = s32
rank_two_tensor = pk1_stress
index_i = 2
index_j = 1
[]
[s13]
type = RankTwoAux
variable = s13
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[s23]
type = RankTwoAux
variable = s23
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[s33]
type = RankTwoAux
variable = s33
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[F11]
type = RankTwoAux
variable = F11
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 0
[]
[F21]
type = RankTwoAux
variable = F21
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 0
[]
[F31]
type = RankTwoAux
variable = F31
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 0
[]
[F12]
type = RankTwoAux
variable = F12
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 1
[]
[F22]
type = RankTwoAux
variable = F22
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[F32]
type = RankTwoAux
variable = F32
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 1
[]
[F13]
type = RankTwoAux
variable = F13
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 2
[]
[F23]
type = RankTwoAux
variable = F23
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 2
[]
[F33]
type = RankTwoAux
variable = F33
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 2
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
constraint_types = ${constraint_types}
targets = ${targets}
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[func_stress]
type = ParsedFunction
expression = '400*t'
[]
[func_strain]
type = ParsedFunction
expression = '4.0e-1*t'
[]
[]
[BCs]
[Periodic]
[all]
variable = disp_x
auto_direction = 'x'
[]
[]
[centerfix_x]
type = DirichletBC
boundary = "fixme"
variable = disp_x
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[elastic_tensor_4]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 76000.0
poissons_ratio = 0.11
block = '4'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Postprocessors]
[s11]
type = ElementAverageValue
variable = s11
execute_on = 'initial timestep_end'
[]
[s21]
type = ElementAverageValue
variable = s21
execute_on = 'initial timestep_end'
[]
[s31]
type = ElementAverageValue
variable = s31
execute_on = 'initial timestep_end'
[]
[s12]
type = ElementAverageValue
variable = s12
execute_on = 'initial timestep_end'
[]
[s22]
type = ElementAverageValue
variable = s22
execute_on = 'initial timestep_end'
[]
[s32]
type = ElementAverageValue
variable = s32
execute_on = 'initial timestep_end'
[]
[s13]
type = ElementAverageValue
variable = s13
execute_on = 'initial timestep_end'
[]
[s23]
type = ElementAverageValue
variable = s23
execute_on = 'initial timestep_end'
[]
[s33]
type = ElementAverageValue
variable = s33
execute_on = 'initial timestep_end'
[]
[F11]
type = ElementAverageValue
variable = F11
execute_on = 'initial timestep_end'
[]
[F21]
type = ElementAverageValue
variable = F21
execute_on = 'initial timestep_end'
[]
[F31]
type = ElementAverageValue
variable = F31
execute_on = 'initial timestep_end'
[]
[F12]
type = ElementAverageValue
variable = F12
execute_on = 'initial timestep_end'
[]
[F22]
type = ElementAverageValue
variable = F22
execute_on = 'initial timestep_end'
[]
[F32]
type = ElementAverageValue
variable = F32
execute_on = 'initial timestep_end'
[]
[F13]
type = ElementAverageValue
variable = F13
execute_on = 'initial timestep_end'
[]
[F23]
type = ElementAverageValue
variable = F23
execute_on = 'initial timestep_end'
[]
[F33]
type = ElementAverageValue
variable = F33
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = default
automatic_scaling = true
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-8
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
exodus = false
csv = true
[]
(modules/combined/test/tests/poro_mechanics/pp_generation_unconfined.i)
# A sample is constrained on all sides, except its top
# and its boundaries are
# also impermeable. Fluid is pumped into the sample via a
# volumetric source (ie m^3/second per cubic meter), and the
# rise in the top surface, porepressure, and stress are observed.
#
# Source = s (units = 1/second)
#
# Expect:
# strain_zz = disp_z = BiotCoefficient*BiotModulus*s*t/((bulk + 4*shear/3) + BiotCoefficient^2*BiotModulus)
# porepressure = BiotModulus*(s*t - BiotCoefficient*strain_zz)
# stress_xx = (bulk - 2*shear/3)*strain_zz (remember this is effective stress)
# stress_xx = (bulk + 4*shear/3)*strain_zz (remember this is effective stress)
#
# Parameters:
# Biot coefficient = 0.3
# Porosity = 0.1
# Bulk modulus = 2
# Shear modulus = 1.5
# fluid bulk modulus = 1/0.3 = 3.333333
# 1/Biot modulus = (1 - 0.3)*(0.3 - 0.1)/2 + 0.1*0.3 = 0.1. BiotModulus = 10
#
# s = 0.1
#
# Expect
# disp_z = 0.3*10*s*t/((2 + 4*1.5/3) + 0.3^2*10) = 0.612245*s*t
# porepressure = 10*(s*t - 0.3*0.612245*s*t) = 8.163265*s*t
# stress_xx = (2 - 2*1.5/3)*0.612245*s*t = 0.612245*s*t
# stress_zz = (2 + 4*shear/3)*0.612245*s*t = 2.44898*s*t
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./porepressure]
[../]
[]
[BCs]
[./confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[../]
[./confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[../]
[./confinez]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back'
[../]
[]
[Kernels]
[./grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[../]
[./grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[../]
[./grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[../]
[./poro_x]
type = PoroMechanicsCoupling
variable = disp_x
component = 0
[../]
[./poro_y]
type = PoroMechanicsCoupling
variable = disp_y
component = 1
[../]
[./poro_z]
type = PoroMechanicsCoupling
variable = disp_z
component = 2
[../]
[./poro_timederiv]
type = PoroFullSatTimeDerivative
variable = porepressure
[../]
[./source]
type = BodyForce
function = 0.1
variable = porepressure
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./poro_material]
type = PoroFullSatMaterial
porosity0 = 0.1
biot_coefficient = 0.3
solid_bulk_compliance = 0.5
fluid_bulk_compliance = 0.3
constant_porosity = true
[../]
[]
[Postprocessors]
[./p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[../]
[./zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
variable = disp_z
[../]
[./stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[../]
[./stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[../]
[./stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 10000'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = pp_generation_unconfined
[./csv]
type = CSV
[../]
[]
(modules/contact/test/tests/verification/patch_tests/cyl_1/cyl1_template2.i)
#
# This input file is a template for both the frictionless and glued test
# variations for the current problem geometry. In order to create an input
# file to run outside the runtest framework, look at the tests file and add the
# appropriate input file lines from the cli_args line.
#
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl1_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 1000
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 = 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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/multi/paper5.i)
# This runs the J2+cap+hardening example model described in the 'MultiSurface' plasticity paper
#
# Plasticity models:
# J2 with strength = 20MPa to 10MPa in 100% strain
# Compressive cap with strength = 15MPa to 5MPa in 100% strain
#
# Lame lambda = 1.2GPa. Lame mu = 1.2GPa (Young = 3GPa, poisson = 0.25)
#
# A line of elements is perturbed randomly, and return to the yield surface at each quadpoint is checked
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 125
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 125
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[ICs]
[./x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl0]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl1]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./intnl0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl0
[../]
[./intnl1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl1
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_f0]
type = ElementExtremeValue
variable = f0
outputs = console
[../]
[./max_f1]
type = ElementExtremeValue
variable = f1
outputs = console
[../]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console csv'
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console csv'
[../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console csv'
[../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console csv'
[../]
[]
[UserObjects]
[./yield_strength]
type = SolidMechanicsHardeningCubic
value_0 = 20E6
value_residual = 10E6
internal_limit = 1
[../]
[./j2]
type = SolidMechanicsPlasticJ2
yield_strength = yield_strength
yield_function_tolerance = 1.0E2
internal_constraint_tolerance = 1.0E-7
use_custom_returnMap = false
[../]
[./compressive_strength]
type = SolidMechanicsHardeningCubic
value_0 = 15E6
value_residual = 5E6
internal_limit = 1
[../]
[./cap]
type = SolidMechanicsPlasticMeanCap
a = -1
strength = compressive_strength
yield_function_tolerance = 1.0E2
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1.2E9 1.2E9'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-5
plastic_models = 'j2 cap'
max_NR_iterations = 10
deactivation_scheme = 'safe'
min_stepsize = 1
max_stepsize_for_dumb = 1
tangent_operator = elastic # tangent operator is unimportant in this test
debug_fspb = crash
debug_jac_at_stress = '10E6 0 0 0 10E6 0 0 0 10E6'
debug_jac_at_pm = '1E-2 1E-2'
debug_jac_at_intnl = '0.05 0.05'
debug_stress_change = 1E1
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = paper5
exodus = false
csv = true
perf_graph = true
[]
(modules/contact/test/tests/verification/patch_tests/cyl_2/cyl2_template1.i)
#
# This input file is a template for both the frictionless and glued test
# variations for the current problem geometry. In order to create an input
# file to run outside the runtest framework, look at the tests file and add the
# appropriate input file lines from the cli_args line.
#
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl2_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 1000
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 = 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/solid_mechanics/test/tests/interface_stress/test.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 10
nz = 10
xmax = 1
ymax = 1
zmax = 1
xmin = -1
ymin = -1
zmin = -1
[]
[GlobalParams]
order = CONSTANT
family = MONOMIAL
rank_two_tensor = extra_stress
[]
[Functions]
[./sphere]
type = ParsedFunction
expression = 'r:=sqrt(x^2+y^2+z^2); if(r>1,0,1-3*r^2+2*r^3)'
[../]
[]
[Variables]
[./dummy]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = dummy
[../]
[]
[AuxVariables]
[./eta]
[./InitialCondition]
type = FunctionIC
function = sphere
[../]
order = FIRST
family = LAGRANGE
[../]
[./s00]
[../]
[./s01]
[../]
[./s02]
[../]
[./s10]
[../]
[./s11]
[../]
[./s12]
[../]
[./s20]
[../]
[./s21]
[../]
[./s22]
[../]
[]
[AuxKernels]
[./s00]
type = RankTwoAux
variable = s00
index_i = 0
index_j = 0
[../]
[./s01]
type = RankTwoAux
variable = s01
index_i = 0
index_j = 1
[../]
[./s02]
type = RankTwoAux
variable = s02
index_i = 0
index_j = 2
[../]
[./s10]
type = RankTwoAux
variable = s10
index_i = 1
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
index_i = 1
index_j = 1
[../]
[./s12]
type = RankTwoAux
variable = s12
index_i = 1
index_j = 2
[../]
[./s20]
type = RankTwoAux
variable = s20
index_i = 2
index_j = 0
[../]
[./s21]
type = RankTwoAux
variable = s21
index_i = 2
index_j = 1
[../]
[./s22]
type = RankTwoAux
variable = s22
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./interface]
type = ComputeInterfaceStress
v = eta
stress = 3.0
[../]
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
execute_on = timestep_end
hide = 'dummy eta'
[]
(modules/xfem/test/tests/moving_interface/moving_bimaterial_finite_strain_cut_mesh.i)
# This test is for two layer materials with different youngs modulus with AD
# The global stress is determined by switching the stress based on level set values
# The material interface is marked by a level set function
# The two layer materials are glued together
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[XFEM]
output_cut_plane = true
[]
[UserObjects]
[cut]
type = InterfaceMeshCut2DUserObject
mesh_file = line.e
interface_velocity_function = -1
heal_always = true
[]
[]
[Mesh]
use_displaced_mesh = true
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmin = 0
xmax = 5
ymin = 0
ymax = 5
elem_type = QUAD4
[]
[left_bottom]
type = ExtraNodesetGenerator
new_boundary = 'left_bottom'
coord = '0 0'
input = generated_mesh
[]
[left_top]
type = ExtraNodesetGenerator
new_boundary = 'left_top'
coord = '0 5'
input = left_bottom
[]
[]
# [Functions]
# [ls_func]
# type = ParsedFunction
# expression = 'y-2.73+t'
# []
# []
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[ls]
[]
[a_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[a_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[a_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[b_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[b_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[b_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
# [ls_function]
# type = FunctionAux
# variable = ls
# function = ls_func
# []
[a_strain_xx]
type = RankTwoAux
variable = a_strain_xx
rank_two_tensor = A_total_strain
index_i = 0
index_j = 0
[]
[a_strain_yy]
type = RankTwoAux
variable = a_strain_yy
rank_two_tensor = A_total_strain
index_i = 1
index_j = 1
[]
[a_strain_xy]
type = RankTwoAux
variable = a_strain_xy
rank_two_tensor = A_total_strain
index_i = 0
index_j = 1
[]
[b_strain_xx]
type = RankTwoAux
variable = b_strain_xx
rank_two_tensor = B_total_strain
index_i = 0
index_j = 0
[]
[b_strain_yy]
type = RankTwoAux
variable = b_strain_yy
rank_two_tensor = B_total_strain
index_i = 1
index_j = 1
[]
[b_strain_xy]
type = RankTwoAux
variable = b_strain_xy
rank_two_tensor = B_total_strain
index_i = 0
index_j = 1
[]
[stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[]
[stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[]
[Constraints]
[dispx_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_x
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[]
[dispy_constraint]
type = XFEMSingleVariableConstraint
use_displaced_mesh = false
variable = disp_y
alpha = 1e8
geometric_cut_userobject = 'level_set_cut_uo'
[]
[]
[BCs]
[bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[]
[bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[]
[topx]
type = FunctionDirichletBC
boundary = top
variable = disp_x
function = 0.03*t
[]
[topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = '0.03*t'
[]
[]
[Materials]
[elasticity_tensor_A]
type = ComputeIsotropicElasticityTensor
base_name = A
youngs_modulus = 1e9
poissons_ratio = 0.3
[]
[strain_A]
type = ComputeFiniteStrain
base_name = A
[]
[stress_A]
type = ComputeFiniteStrainElasticStress
base_name = A
[]
[elasticity_tensor_B]
type = ComputeIsotropicElasticityTensor
base_name = B
youngs_modulus = 1e7
poissons_ratio = 0.3
[]
[strain_B]
type = ComputeFiniteStrain
base_name = B
[]
[stress_B]
type = ComputeFiniteStrainElasticStress
base_name = B
[]
[combined_stress]
type = LevelSetBiMaterialRankTwo
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = stress
[]
[combined_jacob_mult]
type = LevelSetBiMaterialRankFour
levelset_positive_base = 'A'
levelset_negative_base = 'B'
level_set_var = ls
prop_name = Jacobian_mult
[]
[]
[Postprocessors]
[disp_x_norm]
type = ElementL2Norm
variable = disp_x
[]
[disp_y_norm]
type = ElementL2Norm
variable = disp_y
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
automatic_scaling = true
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-13
nl_abs_tol = 1e-50
# time control
start_time = 0.0
dt = 0.1
num_steps = 4
max_xfem_update = 1
[]
[Outputs]
print_linear_residuals = false
exodus = true
[]
(modules/solid_mechanics/test/tests/thermal_expansion/ad_constant_expansion_stress_free_temp.i)
# This test involves only thermal expansion strains on a 2x2x2 cube of approximate
# steel material; however, in this case the stress free temperature of the material
# has been set to 200K so that there is an initial delta temperature of 100K.
# An initial temperature of 300K is given for the material,
# and an auxkernel is used to calculate the temperature in the entire cube to
# raise the temperature each time step. The final temperature is 675K
# The thermal strain increment should therefore be
# (675K - 300K) * 1.3e-5 1/K + 100K * 1.3e-5 1/K = 6.175e-3 m/m.
# This test uses a start up step to identify problems in the calculation of
# eigenstrains with a stress free temperature that is different from the initial
# value of the temperature in the problem
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./temp]
initial_condition = 300.0
[../]
[]
[AuxVariables]
[./eigenstrain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./eigenstrain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./total_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./total_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./total_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(5000.0)+300.0
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
use_automatic_differentiation = true
[../]
[../]
[../]
[]
[Kernels]
[./temp]
type = Diffusion
variable = temp
[../]
[]
[AuxKernels]
[./eigenstrain_yy]
type = ADRankTwoAux
rank_two_tensor = eigenstrain
variable = eigenstrain_yy
index_i = 1
index_j = 1
execute_on = 'initial timestep_end'
[../]
[./eigenstrain_xx]
type = ADRankTwoAux
rank_two_tensor = eigenstrain
variable = eigenstrain_xx
index_i = 0
index_j = 0
execute_on = 'initial timestep_end'
[../]
[./eigenstrain_zz]
type = ADRankTwoAux
rank_two_tensor = eigenstrain
variable = eigenstrain_zz
index_i = 2
index_j = 2
execute_on = 'initial timestep_end'
[../]
[./total_strain_yy]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yy
index_i = 1
index_j = 1
execute_on = 'initial timestep_end'
[../]
[./total_strain_xx]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xx
index_i = 0
index_j = 0
execute_on = 'initial timestep_end'
[../]
[./total_strain_zz]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zz
index_i = 2
index_j = 2
execute_on = 'initial timestep_end'
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./z_bot]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
function = temperature_load
boundary = 'left right'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ADComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ADComputeThermalExpansionEigenstrain
stress_free_temperature = 200
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = -0.0125
n_startup_steps = 1
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[Postprocessors]
[./eigenstrain_xx]
type = ElementAverageValue
variable = eigenstrain_xx
execute_on = 'initial timestep_end'
[../]
[./eigenstrain_yy]
type = ElementAverageValue
variable = eigenstrain_yy
execute_on = 'initial timestep_end'
[../]
[./eigenstrain_zz]
type = ElementAverageValue
variable = eigenstrain_zz
execute_on = 'initial timestep_end'
[../]
[./total_strain_xx]
type = ElementAverageValue
variable = total_strain_xx
execute_on = 'initial timestep_end'
[../]
[./total_strain_yy]
type = ElementAverageValue
variable = total_strain_yy
execute_on = 'initial timestep_end'
[../]
[./total_strain_zz]
type = ElementAverageValue
variable = total_strain_zz
execute_on = 'initial timestep_end'
[../]
[./temperature]
type = AverageNodalVariableValue
variable = temp
execute_on = 'initial timestep_end'
[../]
[]
(modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_constM.i)
# A sample is constrained on all sides, except its top
# and its boundaries are
# also impermeable. Fluid is pumped into the sample via a
# volumetric source (ie kg/second per cubic meter), and the
# rise in the top surface, porepressure, and stress are observed.
#
# In the standard poromechanics scenario, the Biot Modulus is held
# fixed and the source, s, has units m^3/second/m^3. Then the expected result
# is
# strain_zz = disp_z = BiotCoefficient*BiotModulus*s*t/((bulk + 4*shear/3) + BiotCoefficient^2*BiotModulus)
# porepressure = BiotModulus*(s*t - BiotCoefficient*strain_zz)
# stress_xx = (bulk - 2*shear/3)*strain_zz (remember this is effective stress)
# stress_zz = (bulk + 4*shear/3)*strain_zz (remember this is effective stress)
#
# In porous_flow, however, the source has units kg/second/m^3. The ratios remain
# fixed:
# stress_xx/strain_zz = (bulk - 2*shear/3) = 1 (for the parameters used here)
# stress_zz/strain_zz = (bulk + 4*shear/3) = 4 (for the parameters used here)
# porepressure/strain_zz = 13.3333333 (for the parameters used here)
#
# Expect
# disp_z = 0.3*10*s*t/((2 + 4*1.5/3) + 0.3^2*10) = 0.612245*s*t
# porepressure = 10*(s*t - 0.3*0.612245*s*t) = 8.163265*s*t
# stress_xx = (2 - 2*1.5/3)*0.612245*s*t = 0.612245*s*t
# stress_zz = (2 + 4*shear/3)*0.612245*s*t = 2.44898*s*t
# The relationship between the constant poroelastic source
# s (m^3/second/m^3) and the PorousFlow source, S (kg/second/m^3) is
# S = fluid_density * s = s * exp(porepressure/fluid_bulk)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1e-5
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[]
[confinez]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
component = 2
variable = disp_z
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[flux]
type = PorousFlowAdvectiveFlux
variable = porepressure
gravity = '0 0 0'
fluid_component = 0
[]
[source]
type = BodyForce
function = '0.1*exp(8.163265306*0.1*t/3.3333333333)'
variable = porepressure
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 3.3333333333
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityHMBiotModulus
porosity_zero = 0.1
biot_coefficient = 0.3
solid_bulk = 2
constant_fluid_bulk_modulus = 3.3333333333
constant_biot_modulus = 10.0
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1 0 0 0 1 0 0 0 1' # unimportant
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 0 # unimportant in this fully-saturated situation
phase = 0
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
variable = disp_z
[]
[stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[]
[stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[]
[stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[]
[]
[Functions]
[stress_xx_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'stress_xx zdisp'
[]
[stress_zz_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'stress_zz zdisp'
[]
[p_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'p0 zdisp'
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = pp_generation_unconfined_constM
[csv]
type = CSV
[]
[]
(modules/solid_mechanics/test/tests/lagrangian/total/rates/rotation.i)
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
[]
[bottom_left]
type = ExtraNodesetGenerator
input = msh
new_boundary = 'bottom_left'
coord = '0 0 0'
[]
[top_left]
type = ExtraNodesetGenerator
input = bottom_left
new_boundary = 'top_left'
coord = '0 1 0'
[]
[top_right]
type = ExtraNodesetGenerator
input = top_left
new_boundary = 'top_right'
coord = '1 1 0'
[]
[bottom_right]
type = ExtraNodesetGenerator
input = top_right
new_boundary = 'bottom_right'
coord = '1 0 0'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 0
index_j = 0
execute_on = TIMESTEP_END
[]
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[]
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom_left'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'bottom_left'
value = 0
[]
[top_left_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'top_left'
function = 'theta:=if(t<1,0,t-1); -sin(theta)'
[]
[top_left_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top_left'
function = 'theta:=if(t<1,0,t-1); cos(theta)-1'
[]
[bottom_right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'bottom_right'
function = 'theta:=if(t<1,0,t-1); if(t<1,t,2*cos(theta)-1)'
[]
[bottom_right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'bottom_right'
function = 'theta:=if(t<1,0,t-1); if(t<1,0,2*sin(theta))'
[]
[top_right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'top_right'
function = 'theta:=if(t<1,0,t-1); phi:=theta+atan(0.5); if(t<1,t,sqrt(5)*cos(phi)-1)'
[]
[top_right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top_right'
function = 'theta:=if(t<1,0,t-1); phi:=theta+atan(0.5); if(t<1,0,sqrt(5)*sin(phi)-1)'
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e5
poissons_ratio = 0
[]
[stress]
type = ComputeLagrangianLinearElasticStress
[]
[strain]
type = ComputeLagrangianStrain
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = stress_xx
execute_on = 'INITIAL TIMESTEP_END'
[]
[syy]
type = ElementAverageValue
variable = stress_yy
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
dt = 0.01
end_time = '${fparse pi/2+1}'
solve_type = NEWTON
line_search = none
petsc_options_iname = -pc_type
petsc_options_value = lu
automatic_scaling = true
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/examples/coal_mining/cosserat_mc_only.i)
# Strata deformation and fracturing around a coal mine
#
# A 2D geometry is used that simulates a transverse section of
# the coal mine. The model is actually 3D, but the "x"
# dimension is only 10m long, meshed with 1 element, and
# there is no "x" displacement. The mine is 300m deep
# and just the roof is studied (0<=z<=300). The model sits
# between 0<=y<=450. The excavation sits in 0<=y<=150. This
# is a "half model": the boundary conditions are such that
# the model simulates an excavation sitting in -150<=y<=150
# inside a model of the region -450<=y<=450. The
# excavation height is 3m (ie, the excavation lies within
# 0<=z<=3). Mining is simulated by moving the excavation's
# roof down, until disp_z=-3 at t=1.
# Time is meaningless in this example
# as quasi-static solutions are sought at each timestep, but
# the number of timesteps controls the resolution of the
# process.
#
# The boundary conditions are:
# - disp_x = 0 everywhere
# - disp_y = 0 at y=0 and y=450
# - disp_z = 0 for y>150
# - disp_z = -3 at maximum, for 0<=y<=150. See excav function.
# That is, rollers on the sides, free at top, and prescribed at bottom.
#
# The small strain formulation is used.
#
# All stresses are measured in MPa. The initial stress is consistent with
# the weight force from density 2500 kg/m^3, ie, stress_zz = -0.025*(300-z) MPa
# where gravity = 10 m.s^-2 = 1E-5 MPa m^2/kg. The maximum and minimum
# principal horizontal stresses are assumed to be equal to 0.8*stress_zz.
#
# Below you will see weak-plane parameters and AuxVariables, etc.
# These are not actally used in this example.
#
# Material properties:
# Young's modulus = 8 GPa
# Poisson's ratio = 0.25
# Cosserat layer thickness = 1 m
# Cosserat-joint normal stiffness = large
# Cosserat-joint shear stiffness = 1 GPa
# MC cohesion = 3 MPa
# MC friction angle = 37 deg
# MC dilation angle = 8 deg
# MC tensile strength = 1 MPa
# MC compressive strength = 100 MPa, varying down to 1 MPa when tensile strain = 1
#
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
xmin = -5
xmax = 5
nz = 40
zmin = 0
zmax = 400.0
bias_z = 1.1
ny = 30 # make this a multiple of 3, so y=150 is at a node
ymin = 0
ymax = 450
[]
[left]
type = SideSetsAroundSubdomainGenerator
new_boundary = 11
normal = '0 -1 0'
input = generated_mesh
[]
[right]
type = SideSetsAroundSubdomainGenerator
new_boundary = 12
normal = '0 1 0'
input = left
[]
[front]
type = SideSetsAroundSubdomainGenerator
new_boundary = 13
normal = '-1 0 0'
input = right
[]
[back]
type = SideSetsAroundSubdomainGenerator
new_boundary = 14
normal = '1 0 0'
input = front
[]
[top]
type = SideSetsAroundSubdomainGenerator
new_boundary = 15
normal = '0 0 1'
input = back
[]
[bottom]
type = SideSetsAroundSubdomainGenerator
new_boundary = 16
normal = '0 0 -1'
input = top
[]
[excav]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '-5 0 0'
top_right = '5 150 3'
input = bottom
[]
[roof]
type = SideSetsBetweenSubdomainsGenerator
new_boundary = 21
primary_block = 0
paired_block = 1
input = excav
[]
[hole]
type = BlockDeletionGenerator
block = 1
input = roof
[]
[]
[GlobalParams]
block = 0
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[]
[Kernels]
[./cy_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_x
component = 0
[../]
[./gravity]
type = Gravity
use_displaced_mesh = false
variable = disp_z
value = -10E-6
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_shear]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_internal_parameter
variable = mc_shear
[../]
[./mc_tensile]
type = MaterialStdVectorAux
index = 1
property = mc_plastic_internal_parameter
variable = mc_tensile
[../]
[./wp_shear]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_internal_parameter
variable = wp_shear
[../]
[./wp_tensile]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_internal_parameter
variable = wp_tensile
[../]
[./mc_shear_f]
type = MaterialStdVectorAux
index = 6
property = mc_plastic_yield_function
variable = mc_shear_f
[../]
[./mc_tensile_f]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_yield_function
variable = mc_tensile_f
[../]
[./wp_shear_f]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_yield_function
variable = wp_shear_f
[../]
[./wp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_yield_function
variable = wp_tensile_f
[../]
[]
[BCs]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = '11 12 16 21' # note addition of 16 and 21
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = '16'
value = 0.0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = '11 12'
value = 0.0
[../]
[./roof]
type = FunctionDirichletBC
variable = disp_z
boundary = 21
function = excav_sideways
[../]
[]
[Functions]
[./ini_xx]
type = ParsedFunction
expression = '-0.8*2500*10E-6*(400-z)'
[../]
[./ini_zz]
type = ParsedFunction
expression = '-2500*10E-6*(400-z)'
[../]
[./excav_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax e_h closure_dist'
symbol_values = '1.0 0 150.0 -3.0 15.0'
expression = 'e_h*max(min((t/end_t*(ymax-ymin)+ymin-y)/closure_dist,1),0)'
[../]
[./excav_downwards]
type = ParsedFunction
symbol_names = 'end_t ymin ymax e_h closure_dist'
symbol_values = '1.0 0 150.0 -3.0 15.0'
expression = 'e_h*t/end_t*max(min(((ymax-ymin)+ymin-y)/closure_dist,1),0)'
[../]
[]
[UserObjects]
[./mc_coh_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 2.99 # MPa
value_residual = 3.01 # MPa
rate = 1.0
[../]
[./mc_fric]
type = SolidMechanicsHardeningConstant
value = 0.65 # 37deg
[../]
[./mc_dil]
type = SolidMechanicsHardeningConstant
value = 0.15 # 8deg
[../]
[./mc_tensile_str_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 1.0 # MPa
value_residual = 1.0 # MPa
rate = 1.0
[../]
[./mc_compressive_str]
type = SolidMechanicsHardeningCubic
value_0 = 100 # Large!
value_residual = 100
internal_limit = 0.1
[../]
[./wp_coh_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_tan_fric]
type = SolidMechanicsHardeningConstant
value = 0.36 # 20deg
[../]
[./wp_tan_dil]
type = SolidMechanicsHardeningConstant
value = 0.18 # 10deg
[../]
[./wp_tensile_str_harden]
type = SolidMechanicsHardeningCubic
value_0 = 0.1
value_residual = 0.1
internal_limit = 10
[../]
[./wp_compressive_str_soften]
type = SolidMechanicsHardeningCubic
value_0 = 100
value_residual = 1.0
internal_limit = 1.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = 'ini_xx 0 0 0 ini_xx 0 0 0 ini_zz'
eigenstrain_name = ini_stress
[../]
[./stress]
type = ComputeMultipleInelasticCosseratStress
block = 0
inelastic_models = mc
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./mc]
type = CappedMohrCoulombCosseratStressUpdate
block = 0
warn_about_precision_loss = false
host_youngs_modulus = 8E3
host_poissons_ratio = 0.25
base_name = mc
tensile_strength = mc_tensile_str_strong_harden
compressive_strength = mc_compressive_str
cohesion = mc_coh_strong_harden
friction_angle = mc_fric
dilation_angle = mc_dil
max_NR_iterations = 100000
smoothing_tol = 0.1 # MPa # Must be linked to cohesion
yield_function_tol = 1E-9 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[../]
[./wp]
type = CappedWeakPlaneCosseratStressUpdate
block = 0
warn_about_precision_loss = false
base_name = wp
cohesion = wp_coh_harden
tan_friction_angle = wp_tan_fric
tan_dilation_angle = wp_tan_dil
tensile_strength = wp_tensile_str_harden
compressive_strength = wp_compressive_str_soften
max_NR_iterations = 10000
tip_smoother = 0.1
smoothing_tol = 0.1 # MPa # Note, this must be tied to cohesion, otherwise get no possible return at cone apex
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0E-3
[../]
[./density]
type = GenericConstantMaterial
prop_names = density
prop_values = 2500
[../]
[]
[Postprocessors]
[./subsidence]
type = PointValue
point = '0 0 400'
variable = disp_z
use_displaced_mesh = false
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
line_search = bt
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_max_its = 30
nl_max_its = 1000
start_time = 0.0
dt = 0.2
end_time = 0.2
[]
[Outputs]
file_base = cosserat_mc_only
time_step_interval = 1
print_linear_residuals = false
csv = true
exodus = true
[./console]
type = Console
output_linear = false
[../]
[]
(modules/solid_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement.i)
# One 3D element under ramped displacement loading.
#
# loading:
# time : 0.0 0.1 0.2 0.3
# disp : 0.0 0.0 -0.01 -0.01
# This displacement loading is applied using the PresetDisplacement boundary condition.
# Here, the given displacement time history is converted to an acceleration
# time history using Backward Euler time differentiation. Then, the resulting
# acceleration is integrated using Newmark time integration to obtain a
# displacement time history which is then applied to the boundary.
# This is done because if the displacement is applied using Dirichlet BC, the
# resulting acceleration is very noisy.
# Boundaries:
# x = 0 left
# x = 1 right
# y = 0 bottom
# y = 1 top
# z = 0 back
# z = 1 front
# Result: The displacement at the top node in the z direction should match
# the prescribed displacement. Also, the z acceleration should
# be two triangular pulses, one peaking at 0.1 and another peaking at
# 0.2.
[Mesh]
type = GeneratedMesh
dim = 3 # Dimension of the mesh
nx = 1 # Number of elements in the x direction
ny = 1 # Number of elements in the y direction
nz = 1 # Number of elements in the z direction
xmin = 0.0
xmax = 1
ymin = 0.0
ymax = 1
zmin = 0.0
zmax = 1
allow_renumbering = false # So NodalVariableValue can index by id
[]
[Variables] # variables that are solved
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables] # variables that are calculated for output
[./accel_x]
[../]
[./vel_x]
[../]
[./accel_y]
[../]
[./vel_y]
[../]
[./accel_z]
[../]
[./vel_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./DynamicSolidMechanics] # zeta*K*vel + K * disp
displacements = 'disp_x disp_y disp_z'
stiffness_damping_coefficient = 0.000025
[../]
[./inertia_x] # M*accel + eta*M*vel
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25 # Newmark time integration
gamma = 0.5 # Newmark time integration
eta = 19.63
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
eta = 19.63
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
eta = 19.63
[../]
[]
[AuxKernels]
[./accel_x] # Calculates and stores acceleration at the end of time step
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x] # Calculates and stores velocity at the end of the time step
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_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_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./displacement_front]
type = PiecewiseLinear
data_file = 'displacement.csv'
format = columns
[../]
[]
[BCs]
[./Preset_displacement]
type = PresetDisplacement
variable = disp_z
function = displacement_front
boundary = front
beta = 0.25
velocity = vel_z
acceleration = accel_z
[../]
[./anchor_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./anchor_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./anchor_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
youngs_modulus = 325e6 #Pa
poissons_ratio = 0.3
type = ComputeIsotropicElasticityTensor
block = 0
[../]
[./strain]
#Computes the strain, assuming small strains
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
#Computes the stress, using linear elasticity
type = ComputeLinearElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 2000 #kg/m3
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 3.0
l_tol = 1e-6
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
dt = 0.1
timestep_tolerance = 1e-6
[]
[Postprocessors] # These quantites are printed to a csv file at every time step
[./_dt]
type = TimestepSize
[../]
[./accel_6x]
type = NodalVariableValue
nodeid = 6
variable = accel_x
[../]
[./accel_6y]
type = NodalVariableValue
nodeid = 6
variable = accel_y
[../]
[./accel_6z]
type = NodalVariableValue
nodeid = 6
variable = accel_z
[../]
[./vel_6x]
type = NodalVariableValue
nodeid = 6
variable = vel_x
[../]
[./vel_6y]
type = NodalVariableValue
nodeid = 6
variable = vel_y
[../]
[./vel_6z]
type = NodalVariableValue
nodeid = 6
variable = vel_z
[../]
[./disp_6x]
type = NodalVariableValue
nodeid = 6
variable = disp_x
[../]
[./disp_6y]
type = NodalVariableValue
nodeid = 6
variable = disp_y
[../]
[./disp_6z]
type = NodalVariableValue
nodeid = 6
variable = disp_z
[../]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/static_deformations/beam_cosserat_01_slippery.i)
# Beam bending. One end is clamped and the other end is subjected to
# a constant surface traction.
# The beam thickness is 1, and the Cosserat layer thickness is 0.5,
# so the beam contains 2 Cosserat layers.
# The joint normal stiffness is set very large and the shear stiffness very small
# so that the situation should be very close to a single beam of thickness
# 0.5.
# The deflection should be described by
# u_z = 2sx/G + 2s(1-nu^2)x^2(3L-x)/(Eh^2)
# wc_y = sx(x-2L)/(2B)
# Here
# s = applied shear stress = -2E-4
# x = coordinate along bar (0<=x<=10)
# G = shear modulus = E/2/(1+nu) = 0.4615
# nu = Poisson = 0.3
# L = length of bar = 10
# E = Young = 1.2
# h = Cosserat layer thickness = 0.5
[Mesh]
type = GeneratedMesh
dim = 3
nx = 80
xmax = 10
ny = 1
nz = 1
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./no_dispy]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[../]
[./no_wc_y]
type = DirichletBC
variable = wc_y
boundary = 'left'
value = 0.0
[../]
[./clamp_z]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./clamp_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./end_traction]
type = VectorNeumannBC
variable = disp_z
vector_value = '-2E-4 0 0'
boundary = right
[../]
[]
[AuxVariables]
[./wc_x]
[../]
[./wc_z]
[../]
[./strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./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_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xz
index_i = 0
index_j = 2
[../]
[./strain_yx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yx
index_i = 1
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yz
index_i = 1
index_j = 2
[../]
[./strain_zx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zx
index_i = 2
index_j = 0
[../]
[./strain_zy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zy
index_i = 2
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[./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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = x
variable = 'disp_x disp_z stress_xx stress_xz stress_zx stress_zz wc_y couple_stress_xx couple_stress_xz couple_stress_zx couple_stress_zz'
start_point = '0 0 0'
end_point = '10 0 0'
num_points = 11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 1.2
poisson = 0.3
layer_thickness = 0.5
joint_normal_stiffness = 1E16
joint_shear_stiffness = 1E-6
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol -sub_pc_factor_shift_type'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10 NONZERO'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = beam_cosserat_01_slippery
csv = true
exodus = true
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/beam.i)
# A beam with its ends fully clamped
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 10
nz = 10
xmin = -10
xmax = 10
ymin = -10
ymax = 10
zmin = -50
zmax = 0
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[./gravity_y]
type = Gravity
use_displaced_mesh = false
variable = disp_y
value = -10
[../]
[]
[BCs]
[./zmax_xfixed]
type = DirichletBC
variable = disp_x
boundary = front
value = 0
[../]
[./zmax_yfixed]
type = DirichletBC
variable = disp_y
boundary = front
value = 0
[../]
[./zmax_zfixed]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[../]
[./zmin_xfixed]
type = DirichletBC
variable = disp_x
boundary = back
value = 0
[../]
[./zmin_yfixed]
type = DirichletBC
variable = disp_y
boundary = back
value = 0
[../]
[./zmin_zfixed]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[UserObjects]
[./coh_irrelevant]
type = SolidMechanicsHardeningCubic
value_0 = 2E6
value_residual = 2E6
internal_limit = 0.01
[../]
[./tanphi]
type = SolidMechanicsHardeningCubic
value_0 = 0.5
value_residual = 0.5
internal_limit = 0.01
[../]
[./tanpsi]
type = SolidMechanicsHardeningConstant
value = 0.166666666667
[../]
[./t_strength]
type = SolidMechanicsHardeningCubic
value_0 = 0
value_residual = 0
internal_limit = 0.1
[../]
[./c_strength]
type = SolidMechanicsHardeningCubic
value_0 = 1E80
value_residual = 0.0
internal_limit = 0.01
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '6.4E9 6.4E9' # young 16MPa, Poisson 0.25
[../]
[./strain]
type = ComputeIncrementalStrain
[../]
[./admissible]
type = ComputeMultipleInelasticStress
inelastic_models = stress
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakPlaneStressUpdate
cohesion = coh_irrelevant
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
max_NR_iterations = 1000
tip_smoother = 1E5
smoothing_tol = 1E5
yield_function_tol = 1E-5
perfect_guess = true
min_step_size = 0.1
[../]
[./density]
type = GenericFunctionMaterial
block = 0
prop_names = density
prop_values = 1E3*t
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
#petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[../]
[]
[Executioner]
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
line_search = bt
nl_abs_tol = 1E-2
nl_rel_tol = 1e-15
l_tol = 1E-10
l_max_its = 100
nl_max_its = 100
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = beam
exodus = true
csv = true
[]
(modules/combined/test/tests/j2_plasticity_vs_LSH/necking/j2_hard1_necking.i)
#
[Mesh]
file = necking_quad4.e
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y'
use_displaced_mesh = true
# save_in_disp_x = force_x
save_in_disp_y = force_y
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
# [./force_x]
# order = FIRST
# family = LAGRANGE
# [../]
[./force_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./y_top]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = 't/5'
[../]
[]
[UserObjects]
[./str]
type = TensorMechanicsHardeningConstant
value = 2.4e2
[../]
[./j2]
type = TensorMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric_isotropic
#with E = 2.1e5 and nu = 0.3
#changed to SM values using E-nu to Lambda-G
C_ijkl = '121154 80769.2'
[../]
[./strain]
type = ComputeFiniteStrain
block = 1
displacements = 'disp_x disp_y'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 1
ep_plastic_tolerance = 1E-9
plastic_models = j2
[../]
[]
[Executioner]
end_time = 0.2
dt = 0.005
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
[../]
[./disp_y]
type = NodalSum
variable = disp_y
boundary = top
[../]
[./force_y]
type = NodalSum
variable = force_y
boundary = top
[../]
[]
[Outputs]
exodus = true
csv = true
print_linear_residuals = false
perf_graph = true
[]
(modules/solid_mechanics/test/tests/1D_axisymmetric/axisymm_gps_small.i)
# this test checks the asixymmetric 1D generalized plane strain formulation using incremental small strains
[GlobalParams]
displacements = disp_x
scalar_out_of_plane_strain = scalar_strain_yy
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = line.e
[]
[Variables]
[./disp_x]
[../]
[./scalar_strain_yy]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./temp]
initial_condition = 580.0
[../]
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '580 580 680'
[../]
[./disp_x]
type = PiecewiseLinear
x = '0 1'
y = '0 2e-6'
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[]
[Physics]
[SolidMechanics]
[./GeneralizedPlaneStrain]
[./gps]
[../]
[../]
[../]
[]
[AuxKernels]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[./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_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./temp]
type = FunctionAux
variable = temp
function = temp
execute_on = 'timestep_begin'
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
boundary = 1
value = 0
variable = disp_x
[../]
[./disp_x]
type = FunctionDirichletBC
boundary = 2
function = disp_x
variable = disp_x
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3600
poissons_ratio = 0.2
[../]
[./strain]
type = ComputeAxisymmetric1DSmallStrain
eigenstrain_names = eigenstrain
scalar_out_of_plane_strain = scalar_strain_yy
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-8
temperature = temp
stress_free_temperature = 580
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = 'none'
l_max_its = 50
l_tol = 1e-6
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0
end_time = 2
num_steps = 2
[]
[Outputs]
exodus = true
console = true
[]
(modules/solid_mechanics/test/tests/shell/static/straintest.i)
# Test for the axial stress and strain output for single shell element
# for 2D planar shell with uniform mesh.
# A single shell 1 mm x 1 mm element having Young's Modulus of 5 N/mm^2
# and poissons ratio of 0 is fixed at the left end and
# an axial displacement of 0.2 mm is applied at the right.
# Theoretical value of axial stress and strain are 1 N/mm^2 and 0.2.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[rot_x]
order = FIRST
family = LAGRANGE
[]
[rot_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = global_stress_t_points_1
index_i = 0
index_j = 0
[]
[strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_global_strain_t_points_1
index_i = 0
index_j = 0
[]
[]
[BCs]
[fixx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[fixy]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[]
[fixz]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[]
[fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[]
[fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[]
[disp]
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = displacement
[]
[]
[Functions]
[displacement]
type = PiecewiseLinear
x = '0.0 1.0'
y = '0.0 0.2'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
line_search = 'none'
nl_rel_tol = 1e-12
nl_abs_tol = 1e-14
dt = 1
dtmin = 1
end_time = 1
[]
[Kernels]
[solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[]
[solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[]
[solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[]
[solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[]
[solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[]
[]
[Materials]
[elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 5.0
poissons_ratio = 0.0
block = 0
through_thickness_order = SECOND
[]
[strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[]
[stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[]
[]
[Postprocessors]
[disp_x]
type = PointValue
point = '0.5 0.0 0.0'
variable = disp_z
[]
[stress_xx_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_xx
[]
[strain_xx_el_0]
type = ElementalVariableValue
elementid = 0
variable = strain_xx
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/push_and_shear.i)
# Dynamic problem with plasticity.
# A column of material (not subject to gravity) has the z-displacement
# of its sides fixed, but the centre of its bottom side is pushed
# upwards. This causes failure in the bottom elements.
#
# The problem utilises damping in the following way.
# The DynamicStressDivergenceTensors forms the residual
# integral grad(stress) + zeta*grad(stress-dot)
# = V/L * elasticity * (du/dx + zeta * dv/dx)
# where V is the elemental volume, and L is the length-scale,
# and u is the displacement, and v is the velocity.
# The InertialForce forms the residual
# integral density * (accel + eta * velocity)
# = V * density * (a + eta * v)
# where a is the acceleration.
# So, a damped oscillator description with both these
# kernels looks like
# 0 = V * (density * a + density * eta * v + elasticity * zeta * v / L^2 + elasticity / L^2 * u)
# Critical damping is when the coefficient of v is
# 2 * sqrt(density * elasticity / L^2)
# In the case at hand, density=1E4, elasticity~1E10 (Young is 16GPa),
# L~1 to 10 (in the horizontal or vertical direction), so this coefficient ~ 1E7 to 1E6.
# Choosing eta = 1E3 and zeta = 1E-2 gives approximate critical damping.
# If zeta is high then steady-state is achieved very quickly.
#
# In the case of plasticity, the effective stiffness of the elements
# is significantly less. Therefore, the above parameters give
# overdamping.
#
# This simulation is a nice example of the irreversable and non-uniqueness
# of simulations involving plasticity. The result depends on the damping
# parameters and the time stepping.
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 1
nz = 5
bias_z = 1.5
xmin = -10
xmax = 10
ymin = -10
ymax = 10
zmin = -100
zmax = 0
[]
[bottomz_middle]
type = BoundingBoxNodeSetGenerator
new_boundary = bottomz_middle
bottom_left = '-1 -1500 -105'
top_right = '1 1500 -95'
input = generated_mesh
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
beta = 0.25 # Newmark time integration
gamma = 0.5 # Newmark time integration
eta = 1E3 #0.3E4 # higher values mean more damping via density
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[DynamicSolidMechanics] # zeta*K*vel + K * disp
displacements = 'disp_x disp_y disp_z'
stiffness_damping_coefficient = 1E-2 # higher values mean more damping via stiffness
hht_alpha = 0 # better nonlinear convergence than for alpha>0
[]
[inertia_x] # M*accel + eta*M*vel
type = InertialForce
use_displaced_mesh = false
variable = disp_x
velocity = vel_x
acceleration = accel_x
[]
[inertia_y]
type = InertialForce
use_displaced_mesh = false
variable = disp_y
velocity = vel_y
acceleration = accel_y
[]
[inertia_z]
type = InertialForce
use_displaced_mesh = false
variable = disp_z
velocity = vel_z
acceleration = accel_z
[]
[]
[BCs]
[no_x2]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.0
[]
[no_x1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_y1]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_y2]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[z_fixed_sides_xmin]
type = DirichletBC
variable = disp_z
boundary = left
value = 0
[]
[z_fixed_sides_xmax]
type = DirichletBC
variable = disp_z
boundary = right
value = 0
[]
[bottomz]
type = FunctionDirichletBC
variable = disp_z
boundary = bottomz_middle
function = min(10*t,1)
[]
[]
[AuxVariables]
[accel_x]
[]
[vel_x]
[]
[accel_y]
[]
[vel_y]
[]
[accel_z]
[]
[vel_z]
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[strainp_xx]
order = CONSTANT
family = MONOMIAL
[]
[strainp_xy]
order = CONSTANT
family = MONOMIAL
[]
[strainp_xz]
order = CONSTANT
family = MONOMIAL
[]
[strainp_yy]
order = CONSTANT
family = MONOMIAL
[]
[strainp_yz]
order = CONSTANT
family = MONOMIAL
[]
[strainp_zz]
order = CONSTANT
family = MONOMIAL
[]
[straint_xx]
order = CONSTANT
family = MONOMIAL
[]
[straint_xy]
order = CONSTANT
family = MONOMIAL
[]
[straint_xz]
order = CONSTANT
family = MONOMIAL
[]
[straint_yy]
order = CONSTANT
family = MONOMIAL
[]
[straint_yz]
order = CONSTANT
family = MONOMIAL
[]
[straint_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_shear]
order = CONSTANT
family = MONOMIAL
[]
[f_tensile]
order = CONSTANT
family = MONOMIAL
[]
[f_compressive]
order = CONSTANT
family = MONOMIAL
[]
[intnl_shear]
order = CONSTANT
family = MONOMIAL
[]
[intnl_tensile]
order = CONSTANT
family = MONOMIAL
[]
[iter]
order = CONSTANT
family = MONOMIAL
[]
[ls]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[accel_x] # Calculates and stores acceleration at the end of time step
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
execute_on = timestep_end
[]
[vel_x] # Calculates and stores velocity at the end of the time step
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
execute_on = timestep_end
[]
[accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
execute_on = timestep_end
[]
[vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
execute_on = timestep_end
[]
[accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
execute_on = timestep_end
[]
[vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
execute_on = timestep_end
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[]
[strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[]
[strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[]
[strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[]
[strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[]
[strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[]
[straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[]
[straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[]
[straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[]
[straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[]
[straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[]
[straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[]
[f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[]
[f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[]
[f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[]
[intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[]
[intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[]
[iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[]
[ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[]
[]
[UserObjects]
[coh]
type = SolidMechanicsHardeningConstant
value = 1E6
[]
[tanphi]
type = SolidMechanicsHardeningConstant
value = 0.5
[]
[tanpsi]
type = SolidMechanicsHardeningConstant
value = 0.166666666667
[]
[t_strength]
type = SolidMechanicsHardeningConstant
value = 1E80
[]
[c_strength]
type = SolidMechanicsHardeningConstant
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '6.4E9 6.4E9' # young 16MPa, Poisson 0.25
[]
[strain]
type = ComputeIncrementalStrain
[]
[admissible]
type = ComputeMultipleInelasticStress
inelastic_models = stress
perform_finite_strain_rotations = false
[]
[stress]
type = CappedWeakPlaneStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 0.5E6
smoothing_tol = 0.5E6
yield_function_tol = 1E-2
[]
[density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 1E4
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[]
[]
[Executioner]
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
line_search = bt
nl_abs_tol = 1E1
nl_rel_tol = 1e-5
l_tol = 1E-10
l_max_its = 100
nl_max_its = 100
end_time = 0.5
dt = 0.1
type = Transient
[]
[Outputs]
file_base = push_and_shear
exodus = true
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/cp_slip_rate_integ/crysp.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCPSlipRateRes
gtol = 1e-2
rtol = 1e-8
abs_tol = 1e-15
slip_sys_file_name = input_slip_sys.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
hprops = '1.0 541.5 60.8 109.8 2.5'
gprops = '1 4 60.8 5 8 60.8 9 12 60.8'
tan_mod_type = exact
slip_incr_tol = 1
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
dt = 0.2
dtmin = 0.05
dtmax = 10.0
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
end_time = 1
[]
[Outputs]
file_base = out
exodus = true
print_linear_residuals = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/capped_mohr_coulomb/small_deform5.i)
# Using CappedMohrCoulomb with tensile failure only
# A single element is incrementally stretched in the in the z and x directions
# This causes the return direction to be along the hypersurface sigma_III = 0
# and the resulting stresses are checked to lie on the expected yield surface
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
add_variables = true
strain = finite
incremental = true
generate_output = 'max_principal_stress mid_principal_stress min_principal_stress stress_xx stress_xy stress_xz stress_yy stress_yz stress_zz'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '4*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = 'z*(t-0.5)'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_I]
type = PointValue
point = '0 0 0'
variable = max_principal_stress
[../]
[./s_II]
type = PointValue
point = '0 0 0'
variable = mid_principal_stress
[../]
[./s_III]
type = PointValue
point = '0 0 0'
variable = min_principal_stress
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./ts]
type = SolidMechanicsHardeningConstant
value = 1
[../]
[./cs]
type = SolidMechanicsHardeningConstant
value = 1E6
[../]
[./coh]
type = SolidMechanicsHardeningConstant
value = 1E6
[../]
[./ang]
type = SolidMechanicsHardeningConstant
value = 0.5
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 2.0'
[../]
[./tensile]
type = CappedMohrCoulombStressUpdate
tensile_strength = ts
compressive_strength = cs
cohesion = coh
friction_angle = ang
dilation_angle = ang
smoothing_tol = 0.5
yield_function_tol = 1.0E-12
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = tensile
perform_finite_strain_rotations = false
[../]
[]
[Executioner]
end_time = 1
dt = 0.1
type = Transient
[]
[Outputs]
file_base = small_deform5
csv = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial3.i)
[Mesh]
type = FileMesh
file = quarter_hole.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./zmin_zzero]
type = DirichletBC
variable = disp_z
boundary = 'zmin'
value = '0'
[../]
[./xmin_xzero]
type = DirichletBC
variable = disp_x
boundary = 'xmin'
value = '0'
[../]
[./ymin_yzero]
type = DirichletBC
variable = disp_y
boundary = 'ymin'
value = '0'
[../]
[./ymax_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'ymax'
function = '-1E-4*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0.005 0.02 0.002'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10E6
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 40
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 40
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 0.01E6
mc_edge_smoother = 29
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric_isotropic
C_ijkl = '0 5E9' # young = 10Gpa, poisson = 0.0
[../]
[./strain]
type = ComputeIncrementalStrain
block = 1
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 1
ep_plastic_tolerance = 1E-11
plastic_models = mc
max_NR_iterations = 1000
debug_fspb = crash
[../]
[]
# Preconditioning and Executioner options kindly provided by Andrea
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
end_time = 1.05
dt = 0.1
solve_type = NEWTON
type = Transient
nl_abs_tol = 1E-10
nl_rel_tol = 1E-12
l_tol = 1E-2
l_max_its = 50
nl_max_its = 400
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[]
[Outputs]
file_base = uni_axial3
exodus = true
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/eigenstrain/variable.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 20
ny = 20
xmax = 0.5
ymax = 0.5
elem_type = QUAD4
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[AuxVariables]
[./e11_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./e22_aux]
order = CONSTANT
family = MONOMIAL
[../]
[./c]
[../]
[./eigen_strain00]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./matl_e11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = e11_aux
[../]
[./matl_e22]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = e22_aux
[../]
[./eigen_strain00]
type = RankTwoAux
variable = eigen_strain00
rank_two_tensor = eigenstrain
index_j = 0
index_i = 0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 0.5*c^2
coupled_variables = c
outputs = exodus
output_properties = 'var_dep'
f_name = var_dep
enable_jit = true
derivative_order = 2
[../]
[./eigenstrain]
type = ComputeVariableEigenstrain
block = 0
eigen_base = '1 1 1 0 0 0'
prefactor = var_dep
args = c
eigenstrain_name = eigenstrain
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[]
[BCs]
active = 'left_x bottom_y'
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = right
value = 0
[../]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.01
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 31'
l_max_its = 20
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-10
nl_abs_tol = 1.0e-50
[]
[Outputs]
exodus = true
[]
[ICs]
[./c_IC]
int_width = 0.075
x1 = 0
y1 = 0
radius = 0.25
outvalue = 0
variable = c
invalue = 1
type = SmoothCircleIC
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/action/no_action_L.i)
[Mesh]
type = FileMesh
file = 'L.exo'
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
stabilize_strain = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Functions]
[pfn]
type = PiecewiseLinear
x = '0 1 2'
y = '0.00 0.3 0.5'
[]
[]
[Kernels]
[sdx]
type = UpdatedLagrangianStressDivergence
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[sdy]
type = UpdatedLagrangianStressDivergence
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[sdz]
type = UpdatedLagrangianStressDivergence
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[BCs]
[left]
type = DirichletBC
preset = true
variable = disp_x
boundary = fix
value = 0.0
[]
[bottom]
type = DirichletBC
preset = true
variable = disp_y
boundary = fix
value = 0.0
[]
[back]
type = DirichletBC
preset = true
variable = disp_z
boundary = fix
value = 0.0
[]
[front]
type = FunctionDirichletBC
variable = disp_z
boundary = pull
function = pfn
preset = true
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[cauchy_stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[cauchy_stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[cauchy_stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[cauchy_stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[cauchy_stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[cauchy_stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[cauchy_stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = cauchy_stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-8
end_time = 1.0
dtmin = 0.5
dt = 0.5
[]
[Outputs]
exodus = true
csv = false
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/exception.i)
[GlobalParams]
displacements = 'ux uy uz'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[rotout]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[gss]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = '0.1*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 1
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[gss]
type = ElementAverageValue
variable = gss
[]
[slip_increment]
type = ElementAverageValue
variable = slip_increment
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.01
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/elem_prop_read_user_object/prop_grain_read_3d.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
nx = 30
ny = 30
nz = 30
[]
[Variables]
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
[./disp_z]
block = 0
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.05*t
[../]
[]
[UserObjects]
[./prop_read]
type = PropertyReadFile
prop_file_name = 'input_file.txt'
nprop = 4
read_type = grain
ngrain = 4
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[./e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = elastic_strain
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[Materials]
[./elasticity_tensor_with_Euler]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
read_prop_user_object = prop_read
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Postprocessors]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
block = 'ANY_BLOCK_ID 0'
[../]
[./e_yy]
type = ElementAverageValue
variable = e_yy
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.05
num_steps = 2
nl_abs_step_tol = 1e-10
[]
[Outputs]
file_base = prop_grain_read_3d_out
exodus = true
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
(modules/contact/test/tests/verification/patch_tests/brick_4/brick4_template2.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick4_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/contact/test/tests/verification/patch_tests/cyl_3/cyl3_template1.i)
#
# This input file is a template for both the frictionless and glued test
# variations for the current problem geometry. In order to create an input
# file to run outside the runtest framework, look at the tests file and add the
# appropriate input file lines from the cli_args line.
#
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl3_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = 'none'
nl_abs_tol = 1e-7
nl_rel_tol = 1e-6
l_max_its = 100
nl_max_its = 1000
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 = 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
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/umat/predef/predef.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t*10
[]
[]
[AuxVariables]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[Pressure]
[bc_presssure]
boundary = top
function = top_pull
[]
[]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.0
[]
[]
[Materials]
# Active for
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_predef'
num_state_vars = 0
external_fields = 'strain_yy'
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
base_name = 'base'
youngs_modulus = 1e3
poissons_ratio = 0.3
[]
[strain_dependent_elasticity_tensor]
type = CompositeElasticityTensor
args = strain_yy
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
property_name = prefactor_material
coupled_variables = strain_yy
expression = '1.0/(1.0 + strain_yy)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 30
dt = 1.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/multi/three_surface15.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 3
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 3.0E-6m in y direction and 3E-6 in z direction.
# trial stress_yy = 3.0 and stress_zz = 3
#
# A complicated return will follow, with various contraints being
# deactivated, kuhn-tucker failing, line-searching, etc, but
# the result should be
# stress_yy=1=stress_zz, and internal0=2 internal1=2
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3.0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '3.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 4
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1'
debug_jac_at_intnl = '1 1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface15
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/stress_recovery/stress_concentration/stress_concentration.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = FileMesh
file = geo.msh
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xx_recovered]
order = FIRST
family = LAGRANGE
[]
[stress_yy_recovered]
order = FIRST
family = LAGRANGE
[]
[]
[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_xx_recovered]
type = NodalPatchRecoveryAux
variable = stress_xx_recovered
nodal_patch_recovery_uo = stress_xx_patch
execute_on = 'TIMESTEP_END'
[]
[stress_yy_recovered]
type = NodalPatchRecoveryAux
variable = stress_yy_recovered
nodal_patch_recovery_uo = stress_yy_patch
execute_on = 'TIMESTEP_END'
[]
[]
[Kernels]
[solid_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[solid_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[]
[Materials]
[strain]
type = ComputeSmallStrain
[]
[Cijkl]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 2.1e+5
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[BCs]
[top_xdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 0
[]
[top_ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 0.01
[]
[bottom_xdisp]
type = FunctionDirichletBC
variable = disp_x
boundary = 'bottom'
function = 0
[]
[bottom_ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'bottom'
function = 0
[]
[]
[UserObjects]
[stress_xx_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '0 0'
execute_on = 'TIMESTEP_END'
[]
[stress_yy_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '1 1'
execute_on = 'TIMESTEP_END'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
ksp_norm = default
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type'
petsc_options_value = 'preonly lu'
nl_rel_tol = 1e-14
l_max_its = 100
nl_max_its = 30
[]
[Outputs]
time_step_interval = 1
exodus = true
print_linear_residuals = false
[]
(modules/solid_mechanics/test/tests/multi/three_surface01.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 0E-6m in y direction and 1.5E-6 in z direction.
# trial stress_yy = 0 and stress_zz = 1.5
#
# Then SimpleTester0 should activate and the algorithm will return to
# stress_yy = 0, stress_zz = 1
# internal0 should be 0.5, and others zero
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.5E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface01
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/umat/predef/predef_multiple.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t*10
[]
[right_pull]
type = ParsedFunction
expression = -t*0.5
[]
[]
[AuxVariables]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[strain_xx]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[Pressure]
[bc_presssure_top]
boundary = top
function = top_pull
[]
[bc_presssure_right]
boundary = right
function = right_pull
[]
[]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[]
[Materials]
# 1. Active for UMAT
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_multiple_predef'
num_state_vars = 0
external_fields = 'strain_xx strain_yy'
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
base_name = 'base'
youngs_modulus = 1e3
poissons_ratio = 0.3
[]
[strain_dependent_elasticity_tensor]
type = CompositeElasticityTensor
args = 'strain_yy strain_xx'
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
property_name = prefactor_material
coupled_variables = 'strain_yy strain_xx'
expression = '1.0/(1.0 + strain_yy + strain_xx)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 30
dt = 1.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/cavity_pressure/initial_temperature.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 (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V0 + gamma * t
# with
# alpha = n0
# beta = T0 / 2
# gamma = -(0.003322259...) * V0
# 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
#
# The parameters combined at t = 1 gives p = 301.
#
# This test sets the initial temperature to 500, but the CavityPressure
# is told that that initial temperature is T0. Thus, the final solution
# is unchanged.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = 3d.e
[]
[GlobalParams]
volumetric_locking_correction = true
[]
[Functions]
[displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[]
[displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[]
[temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[]
[material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.35'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temp]
initial_condition = 500
[]
[material_input]
[]
[]
[AuxVariables]
[pressure_residual_x]
[]
[pressure_residual_y]
[]
[pressure_residual_z]
[]
[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
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
[]
[heat]
type = Diffusion
variable = temp
use_displaced_mesh = true
[]
[material_input_dummy]
type = Diffusion
variable = material_input
use_displaced_mesh = true
[]
[]
[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
[]
[]
[BCs]
[no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[]
[no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[]
[no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[]
[prescribed_left]
type = FunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[]
[prescribed_right]
type = FunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[]
[no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[]
[no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[]
[temperatureInterior]
type = FunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[]
[MaterialInput]
type = FunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[]
[CavityPressure]
[1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
initial_temperature = 240.54443866068704
volume = internalVolume
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
[]
[]
[]
[Materials]
[elast_tensor1]
type = ComputeElasticityTensor
C_ijkl = '0 5'
fill_method = symmetric_isotropic
block = 1
[]
[strain1]
type = ComputeFiniteStrain
block = 1
[]
[stress1]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[elast_tensor2]
type = ComputeElasticityTensor
C_ijkl = '0 5'
fill_method = symmetric_isotropic
block = 2
[]
[strain2]
type = ComputeFiniteStrain
block = 2
[]
[stress2]
type = ComputeFiniteStrainElasticStress
block = 2
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
use_pre_SMO_residual = true
[]
[Postprocessors]
[internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[]
[aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[]
[materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/multi/three_surface07.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 1.5E-6m in y direction and 0.8E-6 in z direction.
# trial stress_yy = 1.5 and stress_zz = 0.8
#
# Then SimpleTester1 and SimpleTester2 should activate and the algorithm will return to
# the corner stress_yy=1.0, stress_zz=0.5
# internal1 should be 0.2, and internal2 should be 0.3
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1.5E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0.8E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface07
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/porous_flow/examples/tutorial/11.i)
# Two-phase borehole injection problem
[Mesh]
[annular]
type = AnnularMeshGenerator
nr = 10
rmin = 1.0
rmax = 10
growth_r = 1.4
nt = 4
dmin = 0
dmax = 90
[]
[make3D]
input = annular
type = MeshExtruderGenerator
extrusion_vector = '0 0 12'
num_layers = 3
bottom_sideset = 'bottom'
top_sideset = 'top'
[]
[shift_down]
type = TransformGenerator
transform = TRANSLATE
vector_value = '0 0 -6'
input = make3D
[]
[aquifer]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 -2'
top_right = '10 10 2'
input = shift_down
[]
[injection_area]
type = ParsedGenerateSideset
combinatorial_geometry = 'x*x+y*y<1.01'
included_subdomains = 1
new_sideset_name = 'injection_area'
input = 'aquifer'
[]
[rename]
type = RenameBlockGenerator
old_block = '0 1'
new_block = 'caps aquifer'
input = 'injection_area'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pwater pgas T disp_x disp_y'
number_fluid_phases = 2
number_fluid_components = 2
[]
[pc]
type = PorousFlowCapillaryPressureVG
alpha = 1E-6
m = 0.6
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
gravity = '0 0 0'
biot_coefficient = 1.0
PorousFlowDictator = dictator
[]
[Variables]
[pwater]
initial_condition = 20E6
[]
[pgas]
initial_condition = 20.1E6
[]
[T]
initial_condition = 330
scaling = 1E-5
[]
[disp_x]
scaling = 1E-5
[]
[disp_y]
scaling = 1E-5
[]
[]
[Kernels]
[mass_water_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pwater
[]
[flux_water]
type = PorousFlowAdvectiveFlux
fluid_component = 0
use_displaced_mesh = false
variable = pwater
[]
[vol_strain_rate_water]
type = PorousFlowMassVolumetricExpansion
fluid_component = 0
variable = pwater
[]
[mass_co2_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = pgas
[]
[flux_co2]
type = PorousFlowAdvectiveFlux
fluid_component = 1
use_displaced_mesh = false
variable = pgas
[]
[vol_strain_rate_co2]
type = PorousFlowMassVolumetricExpansion
fluid_component = 1
variable = pgas
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = T
[]
[advection]
type = PorousFlowHeatAdvection
use_displaced_mesh = false
variable = T
[]
[conduction]
type = PorousFlowHeatConduction
use_displaced_mesh = false
variable = T
[]
[vol_strain_rate_heat]
type = PorousFlowHeatVolumetricExpansion
variable = T
[]
[grad_stress_x]
type = StressDivergenceTensors
temperature = T
variable = disp_x
eigenstrain_names = thermal_contribution
use_displaced_mesh = false
component = 0
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
variable = disp_x
use_displaced_mesh = false
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
temperature = T
variable = disp_y
eigenstrain_names = thermal_contribution
use_displaced_mesh = false
component = 1
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
variable = disp_y
use_displaced_mesh = false
component = 1
[]
[]
[AuxVariables]
[disp_z]
[]
[effective_fluid_pressure]
family = MONOMIAL
order = CONSTANT
[]
[mass_frac_phase0_species0]
initial_condition = 1 # all water in phase=0
[]
[mass_frac_phase1_species0]
initial_condition = 0 # no water in phase=1
[]
[sgas]
family = MONOMIAL
order = CONSTANT
[]
[swater]
family = MONOMIAL
order = CONSTANT
[]
[stress_rr]
family = MONOMIAL
order = CONSTANT
[]
[stress_tt]
family = MONOMIAL
order = CONSTANT
[]
[stress_zz]
family = MONOMIAL
order = CONSTANT
[]
[porosity]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[effective_fluid_pressure]
type = ParsedAux
coupled_variables = 'pwater pgas swater sgas'
expression = 'pwater * swater + pgas * sgas'
variable = effective_fluid_pressure
[]
[swater]
type = PorousFlowPropertyAux
variable = swater
property = saturation
phase = 0
execute_on = timestep_end
[]
[sgas]
type = PorousFlowPropertyAux
variable = sgas
property = saturation
phase = 1
execute_on = timestep_end
[]
[stress_rr]
type = RankTwoScalarAux
variable = stress_rr
rank_two_tensor = stress
scalar_type = RadialStress
point1 = '0 0 0'
point2 = '0 0 1'
execute_on = timestep_end
[]
[stress_tt]
type = RankTwoScalarAux
variable = stress_tt
rank_two_tensor = stress
scalar_type = HoopStress
point1 = '0 0 0'
point2 = '0 0 1'
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[porosity]
type = PorousFlowPropertyAux
variable = porosity
property = porosity
execute_on = timestep_end
[]
[]
[BCs]
[roller_tmax]
type = DirichletBC
variable = disp_x
value = 0
boundary = dmax
[]
[roller_tmin]
type = DirichletBC
variable = disp_y
value = 0
boundary = dmin
[]
[pinned_top_bottom_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'top bottom'
[]
[pinned_top_bottom_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'top bottom'
[]
[cavity_pressure_x]
type = Pressure
boundary = injection_area
variable = disp_x
component = 0
postprocessor = constrained_effective_fluid_pressure_at_wellbore
use_displaced_mesh = false
[]
[cavity_pressure_y]
type = Pressure
boundary = injection_area
variable = disp_y
component = 1
postprocessor = constrained_effective_fluid_pressure_at_wellbore
use_displaced_mesh = false
[]
[cold_co2]
type = DirichletBC
boundary = injection_area
variable = T
value = 290 # injection temperature
use_displaced_mesh = false
[]
[constant_co2_injection]
type = PorousFlowSink
boundary = injection_area
variable = pgas
fluid_phase = 1
flux_function = -1E-4
use_displaced_mesh = false
[]
[outer_water_removal]
type = PorousFlowPiecewiseLinearSink
boundary = rmax
variable = pwater
fluid_phase = 0
pt_vals = '0 1E9'
multipliers = '0 1E8'
PT_shift = 20E6
use_mobility = true
use_relperm = true
use_displaced_mesh = false
[]
[outer_co2_removal]
type = PorousFlowPiecewiseLinearSink
boundary = rmax
variable = pgas
fluid_phase = 1
pt_vals = '0 1E9'
multipliers = '0 1E8'
PT_shift = 20.1E6
use_mobility = true
use_relperm = true
use_displaced_mesh = false
[]
[]
[FluidProperties]
[true_water]
type = Water97FluidProperties
[]
[tabulated_water]
type = TabulatedFluidProperties
fp = true_water
temperature_min = 275
pressure_max = 1E8
interpolated_properties = 'density viscosity enthalpy internal_energy'
fluid_property_output_file = water97_tabulated_11.csv
# Comment out the fp parameter and uncomment below to use the newly generated tabulation
# fluid_property_file = water97_tabulated_11.csv
[]
[true_co2]
type = CO2FluidProperties
[]
[tabulated_co2]
type = TabulatedFluidProperties
fp = true_co2
temperature_min = 275
pressure_max = 1E8
interpolated_properties = 'density viscosity enthalpy internal_energy'
fluid_property_output_file = co2_tabulated_11.csv
# Comment out the fp parameter and uncomment below to use the newly generated tabulation
# fluid_property_file = co2_tabulated_11.csv
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = T
[]
[saturation_calculator]
type = PorousFlow2PhasePP
phase0_porepressure = pwater
phase1_porepressure = pgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'mass_frac_phase0_species0 mass_frac_phase1_species0'
[]
[water]
type = PorousFlowSingleComponentFluid
fp = tabulated_water
phase = 0
[]
[co2]
type = PorousFlowSingleComponentFluid
fp = tabulated_co2
phase = 1
[]
[relperm_water]
type = PorousFlowRelativePermeabilityCorey
n = 4
s_res = 0.1
sum_s_res = 0.2
phase = 0
[]
[relperm_co2]
type = PorousFlowRelativePermeabilityBC
nw_phase = true
lambda = 2
s_res = 0.1
sum_s_res = 0.2
phase = 1
[]
[porosity_mat]
type = PorousFlowPorosity
fluid = true
mechanical = true
thermal = true
porosity_zero = 0.1
reference_temperature = 330
reference_porepressure = 20E6
thermal_expansion_coeff = 15E-6 # volumetric
solid_bulk = 8E9 # unimportant since biot = 1
[]
[permeability_aquifer]
type = PorousFlowPermeabilityKozenyCarman
block = aquifer
poroperm_function = kozeny_carman_phi0
phi0 = 0.1
n = 2
m = 2
k0 = 1E-12
[]
[permeability_caps]
type = PorousFlowPermeabilityKozenyCarman
block = caps
poroperm_function = kozeny_carman_phi0
phi0 = 0.1
n = 2
m = 2
k0 = 1E-15
k_anisotropy = '1 0 0 0 1 0 0 0 0.1'
[]
[rock_thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '2 0 0 0 2 0 0 0 2'
[]
[rock_internal_energy]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1100
density = 2300
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 5E9
poissons_ratio = 0.0
[]
[strain]
type = ComputeSmallStrain
eigenstrain_names = 'thermal_contribution initial_stress'
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = T
thermal_expansion_coeff = 5E-6 # this is the linear thermal expansion coefficient
eigenstrain_name = thermal_contribution
stress_free_temperature = 330
[]
[initial_strain]
type = ComputeEigenstrainFromInitialStress
initial_stress = '20E6 0 0 0 20E6 0 0 0 20E6'
eigenstrain_name = initial_stress
[]
[stress]
type = ComputeLinearElasticStress
[]
[effective_fluid_pressure_mat]
type = PorousFlowEffectiveFluidPressure
[]
[volumetric_strain]
type = PorousFlowVolumetricStrain
[]
[]
[Postprocessors]
[effective_fluid_pressure_at_wellbore]
type = PointValue
variable = effective_fluid_pressure
point = '1 0 0'
execute_on = timestep_begin
use_displaced_mesh = false
[]
[constrained_effective_fluid_pressure_at_wellbore]
type = FunctionValuePostprocessor
function = constrain_effective_fluid_pressure
execute_on = timestep_begin
[]
[]
[Functions]
[constrain_effective_fluid_pressure]
type = ParsedFunction
symbol_names = effective_fluid_pressure_at_wellbore
symbol_values = effective_fluid_pressure_at_wellbore
expression = 'max(effective_fluid_pressure_at_wellbore, 20E6)'
[]
[]
[Preconditioning]
active = basic
[basic]
type = SMP
full = true
petsc_options = '-ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap'
petsc_options_value = ' asm lu NONZERO 2'
[]
[preferred_but_might_not_be_installed]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1E3
[TimeStepper]
type = IterationAdaptiveDT
dt = 1E3
growth_factor = 1.2
optimal_iterations = 10
[]
nl_abs_tol = 1E-7
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/visco/burgers_creep.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./axial_load]
type = NeumannBC
variable = disp_x
boundary = right
value = 10e6
[../]
[]
[Materials]
[./burgers]
type = GeneralizedKelvinVoigtModel
creep_modulus = '10e9'
creep_viscosity = '1 10'
poisson_ratio = 0.2
young_modulus = 10e9
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = burgers
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-10
nl_max_its = 20
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = burgers_creep_out
exodus = true
[]
(modules/solid_mechanics/test/tests/multi/mc_wpt_1.i)
# checking for small deformation
# A single element is stretched by 1E-6m in x,y and z directions.
# stress_zz = Youngs Modulus*Strain = 2E6*1E-6 = 2 Pa
# wpt_tensile_strength is set to 1Pa
# Then the final stress should return to the yeild surface and its value should be 1pa.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
variable = disp_x
boundary = back
value = 0.0
[../]
[./bottomy]
type = DirichletBC
variable = disp_y
boundary = back
value = 0.0
[../]
[./bottomz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./topx]
type = DirichletBC
variable = disp_x
boundary = front
value = 0E-6
[../]
[./topy]
type = DirichletBC
variable = disp_y
boundary = front
value = 0E-6
[../]
[./topz]
type = DirichletBC
variable = disp_z
boundary = front
value = 1E-6
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 100
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 60
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4
mc_edge_smoother = 25
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[./str]
type = SolidMechanicsHardeningConstant
value = 1
[../]
[./wpt]
type = SolidMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-5
[../]
[]
[Materials]
[./mc]
type = FiniteStrainMultiPlasticity
block = 0
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
ep_plastic_tolerance = 1E-9
plastic_models = 'mc wpt'
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = mc_wpt_1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/porous_flow/examples/coal_mining/fine_with_fluid.i)
#################################################################
#
# NOTE:
# The mesh for this model is too large for the MOOSE repository
# so is kept in the the large_media submodule
#
#################################################################
#
# Strata deformation and fluid flow aaround a coal mine - 3D model
#
# A "half model" is used. The mine is 400m deep and
# just the roof is studied (-400<=z<=0). The mining panel
# sits between 0<=x<=150, and 0<=y<=1000, so this simulates
# a coal panel that is 300m wide and 1000m long. The outer boundaries
# are 1km from the excavation boundaries.
#
# The excavation takes 0.5 years.
#
# The boundary conditions for this simulation are:
# - disp_x = 0 at x=0 and x=1150
# - disp_y = 0 at y=-1000 and y=1000
# - disp_z = 0 at z=-400, but there is a time-dependent
# Young modulus that simulates excavation
# - wc_x = 0 at y=-1000 and y=1000
# - wc_y = 0 at x=0 and x=1150
# - no flow at x=0, z=-400 and z=0
# - fixed porepressure at y=-1000, y=1000 and x=1150
# That is, rollers on the sides, free at top,
# and prescribed at bottom in the unexcavated portion.
#
# A single-phase unsaturated fluid is used.
#
# The small strain formulation is used.
#
# All stresses are measured in MPa, and time units are measured in years.
#
# The initial porepressure is hydrostatic with P=0 at z=0, so
# Porepressure ~ - 0.01*z MPa, where the fluid has density 1E3 kg/m^3 and
# gravity = = 10 m.s^-2 = 1E-5 MPa m^2/kg.
# To be more accurate, i use
# Porepressure = -bulk * log(1 + g*rho0*z/bulk)
# where bulk=2E3 MPa and rho0=1Ee kg/m^3.
# The initial stress is consistent with the weight force from undrained
# density 2500 kg/m^3, and fluid porepressure, and a Biot coefficient of 0.7, ie,
# stress_zz^effective = 0.025*z + 0.7 * initial_porepressure
# The maximum and minimum principal horizontal effective stresses are
# assumed to be equal to 0.8*stress_zz.
#
# Material properties:
# Young's modulus = 8 GPa
# Poisson's ratio = 0.25
# Cosserat layer thickness = 1 m
# Cosserat-joint normal stiffness = large
# Cosserat-joint shear stiffness = 1 GPa
# MC cohesion = 2 MPa
# MC friction angle = 35 deg
# MC dilation angle = 8 deg
# MC tensile strength = 1 MPa
# MC compressive strength = 100 MPa
# WeakPlane cohesion = 0.1 MPa
# WeakPlane friction angle = 30 deg
# WeakPlane dilation angle = 10 deg
# WeakPlane tensile strength = 0.1 MPa
# WeakPlane compressive strength = 100 MPa softening to 1 MPa at strain = 1
# Fluid density at zero porepressure = 1E3 kg/m^3
# Fluid bulk modulus = 2E3 MPa
# Fluid viscosity = 1.1E-3 Pa.s = 1.1E-9 MPa.s = 3.5E-17 MPa.year
#
[GlobalParams]
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
PorousFlowDictator = dictator
biot_coefficient = 0.7
[]
[Mesh]
[file]
type = FileMeshGenerator
file = fine.e
[]
[xmin]
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
new_boundary = xmin
normal = '-1 0 0'
input = file
[]
[xmax]
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
new_boundary = xmax
normal = '1 0 0'
input = xmin
[]
[ymin]
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
new_boundary = ymin
normal = '0 -1 0'
input = xmax
[]
[ymax]
type = SideSetsAroundSubdomainGenerator
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
new_boundary = ymax
normal = '0 1 0'
input = ymin
[]
[zmax]
type = SideSetsAroundSubdomainGenerator
block = 30
new_boundary = zmax
normal = '0 0 1'
input = ymax
[]
[zmin]
type = SideSetsAroundSubdomainGenerator
block = 2
new_boundary = zmin
normal = '0 0 -1'
input = zmax
[]
[excav]
type = SubdomainBoundingBoxGenerator
input = zmin
block_id = 1
bottom_left = '0 0 -400'
top_right = '150 1000 -397'
[]
[roof]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 3
paired_block = 1
input = excav
new_boundary = roof
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[wc_x]
[]
[wc_y]
[]
[porepressure]
scaling = 1E-5
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = ini_pp
[]
[]
[Kernels]
[cx_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_x
component = 0
[]
[cy_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_y
component = 1
[]
[cz_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_z
component = 2
[]
[x_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[]
[y_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[]
[x_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_x
component = 0
[]
[y_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_y
component = 1
[]
[gravity]
type = Gravity
use_displaced_mesh = false
variable = disp_z
value = -10E-6 # remember this is in MPa
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
use_displaced_mesh = false
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
use_displaced_mesh = false
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
use_displaced_mesh = false
component = 2
variable = disp_z
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
use_displaced_mesh = false
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
use_displaced_mesh = false
fluid_component = 0
variable = porepressure
[]
[flux]
type = PorousFlowAdvectiveFlux
use_displaced_mesh = false
variable = porepressure
gravity = '0 0 -10E-6'
fluid_component = 0
[]
[]
[AuxVariables]
[saturation]
order = CONSTANT
family = MONOMIAL
[]
[darcy_x]
order = CONSTANT
family = MONOMIAL
[]
[darcy_y]
order = CONSTANT
family = MONOMIAL
[]
[darcy_z]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[wc_z]
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zx]
order = CONSTANT
family = MONOMIAL
[]
[stress_zy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yx]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zx]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[perm_xx]
order = CONSTANT
family = MONOMIAL
[]
[perm_yy]
order = CONSTANT
family = MONOMIAL
[]
[perm_zz]
order = CONSTANT
family = MONOMIAL
[]
[mc_shear]
order = CONSTANT
family = MONOMIAL
[]
[mc_tensile]
order = CONSTANT
family = MONOMIAL
[]
[wp_shear]
order = CONSTANT
family = MONOMIAL
[]
[wp_tensile]
order = CONSTANT
family = MONOMIAL
[]
[wp_shear_f]
order = CONSTANT
family = MONOMIAL
[]
[wp_tensile_f]
order = CONSTANT
family = MONOMIAL
[]
[mc_shear_f]
order = CONSTANT
family = MONOMIAL
[]
[mc_tensile_f]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[saturation_water]
type = PorousFlowPropertyAux
variable = saturation
property = saturation
phase = 0
execute_on = timestep_end
[]
[darcy_x]
type = PorousFlowDarcyVelocityComponent
variable = darcy_x
gravity = '0 0 -10E-6'
component = x
[]
[darcy_y]
type = PorousFlowDarcyVelocityComponent
variable = darcy_y
gravity = '0 0 -10E-6'
component = y
[]
[darcy_z]
type = PorousFlowDarcyVelocityComponent
variable = darcy_z
gravity = '0 0 -10E-6'
component = z
[]
[porosity]
type = PorousFlowPropertyAux
property = porosity
variable = porosity
execute_on = timestep_end
[]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
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_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
execute_on = timestep_end
[]
[stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
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
[]
[total_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[total_strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[total_strain_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[total_strain_yx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yx
index_i = 1
index_j = 0
execute_on = timestep_end
[]
[total_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[total_strain_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[total_strain_zx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zx
index_i = 2
index_j = 0
execute_on = timestep_end
[]
[total_strain_zy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zy
index_i = 2
index_j = 1
execute_on = timestep_end
[]
[total_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[perm_xx]
type = PorousFlowPropertyAux
property = permeability
variable = perm_xx
row = 0
column = 0
execute_on = timestep_end
[]
[perm_yy]
type = PorousFlowPropertyAux
property = permeability
variable = perm_yy
row = 1
column = 1
execute_on = timestep_end
[]
[perm_zz]
type = PorousFlowPropertyAux
property = permeability
variable = perm_zz
row = 2
column = 2
execute_on = timestep_end
[]
[mc_shear]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_internal_parameter
variable = mc_shear
execute_on = timestep_end
[]
[mc_tensile]
type = MaterialStdVectorAux
index = 1
property = mc_plastic_internal_parameter
variable = mc_tensile
execute_on = timestep_end
[]
[wp_shear]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_internal_parameter
variable = wp_shear
execute_on = timestep_end
[]
[wp_tensile]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_internal_parameter
variable = wp_tensile
execute_on = timestep_end
[]
[mc_shear_f]
type = MaterialStdVectorAux
index = 6
property = mc_plastic_yield_function
variable = mc_shear_f
execute_on = timestep_end
[]
[mc_tensile_f]
type = MaterialStdVectorAux
index = 0
property = mc_plastic_yield_function
variable = mc_tensile_f
execute_on = timestep_end
[]
[wp_shear_f]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_yield_function
variable = wp_shear_f
execute_on = timestep_end
[]
[wp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_yield_function
variable = wp_tensile_f
execute_on = timestep_end
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = 'xmin xmax'
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 'ymin ymax'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = zmin
value = 0.0
[]
[no_wc_x]
type = DirichletBC
variable = wc_x
boundary = 'ymin ymax'
value = 0.0
[]
[no_wc_y]
type = DirichletBC
variable = wc_y
boundary = 'xmin xmax'
value = 0.0
[]
[fix_porepressure]
type = FunctionDirichletBC
variable = porepressure
boundary = 'ymin ymax xmax'
function = ini_pp
[]
[roof_porepressure]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
pt_vals = '-1E3 1E3'
multipliers = '-1 1'
fluid_phase = 0
flux_function = roof_conductance
boundary = roof
[]
[roof]
type = StickyBC
variable = disp_z
min_value = -3.0
boundary = roof
[]
[]
[Functions]
[ini_pp]
type = ParsedFunction
symbol_names = 'bulk p0 g rho0'
symbol_values = '2E3 0.0 1E-5 1E3'
expression = '-bulk*log(exp(-p0/bulk)+g*rho0*z/bulk)'
[]
[ini_xx]
type = ParsedFunction
symbol_names = 'bulk p0 g rho0 biot'
symbol_values = '2E3 0.0 1E-5 1E3 0.7'
expression = '0.8*(2500*10E-6*z+biot*(-bulk*log(exp(-p0/bulk)+g*rho0*z/bulk)))'
[]
[ini_zz]
type = ParsedFunction
symbol_names = 'bulk p0 g rho0 biot'
symbol_values = '2E3 0.0 1E-5 1E3 0.7'
expression = '2500*10E-6*z+biot*(-bulk*log(exp(-p0/bulk)+g*rho0*z/bulk))'
[]
[excav_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval slope'
symbol_values = '0.5 0 1000.0 1E-9 1 10'
# excavation face at ymin+(ymax-ymin)*min(t/end_t,1)
# slope is the distance over which the modulus reduces from maxval to minval
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,if(y<ymin+(ymax-ymin)*min(t/end_t,1)+slope,minval+(maxval-minval)*(y-(ymin+(ymax-ymin)*min(t/end_t,1)))/slope,maxval))'
[]
[density_sideways]
type = ParsedFunction
symbol_names = 'end_t ymin ymax minval maxval'
symbol_values = '0.5 0 1000.0 0 2500'
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),minval,maxval)'
[]
[roof_conductance]
type = ParsedFunction
symbol_names = 'end_t ymin ymax maxval minval'
symbol_values = '0.5 0 1000.0 1E7 0'
expression = 'if(y<ymin+(ymax-ymin)*min(t/end_t,1),maxval,minval)'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1 # MPa^-1
[]
[mc_coh_strong_harden]
type = TensorMechanicsHardeningExponential
value_0 = 1.99 # MPa
value_residual = 2.01 # MPa
rate = 1.0
[]
[mc_fric]
type = TensorMechanicsHardeningConstant
value = 0.61 # 35deg
[]
[mc_dil]
type = TensorMechanicsHardeningConstant
value = 0.15 # 8deg
[]
[mc_tensile_str_strong_harden]
type = TensorMechanicsHardeningExponential
value_0 = 1.0 # MPa
value_residual = 1.0 # MPa
rate = 1.0
[]
[mc_compressive_str]
type = TensorMechanicsHardeningCubic
value_0 = 100 # Large!
value_residual = 100
internal_limit = 0.1
[]
[wp_coh_harden]
type = TensorMechanicsHardeningCubic
value_0 = 0.05
value_residual = 0.05
internal_limit = 10
[]
[wp_tan_fric]
type = TensorMechanicsHardeningConstant
value = 0.26 # 15deg
[]
[wp_tan_dil]
type = TensorMechanicsHardeningConstant
value = 0.18 # 10deg
[]
[wp_tensile_str_harden]
type = TensorMechanicsHardeningCubic
value_0 = 0.05
value_residual = 0.05
internal_limit = 10
[]
[wp_compressive_str_soften]
type = TensorMechanicsHardeningCubic
value_0 = 100
value_residual = 1
internal_limit = 1.0
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E3
density0 = 1000
thermal_expansion = 0
viscosity = 3.5E-17
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity_for_aux]
type = PorousFlowPorosity
at_nodes = false
fluid = true
mechanical = true
ensure_positive = true
porosity_zero = 0.02
solid_bulk = 5.3333E3
[]
[porosity_bulk]
type = PorousFlowPorosity
fluid = true
mechanical = true
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
ensure_positive = true
porosity_zero = 0.02
solid_bulk = 5.3333E3
[]
[porosity_excav]
type = PorousFlowPorosityConst
block = 1
porosity = 1.0
[]
[permeability_bulk]
type = PorousFlowPermeabilityKozenyCarman
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
poroperm_function = kozeny_carman_phi0
k0 = 1E-15
phi0 = 0.02
n = 2
m = 2
[]
[permeability_excav]
type = PorousFlowPermeabilityConst
block = 1
permeability = '0 0 0 0 0 0 0 0 0'
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 4
s_res = 0.4
sum_s_res = 0.4
phase = 0
[]
[elasticity_tensor_0]
type = ComputeLayeredCosseratElasticityTensor
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
[]
[elasticity_tensor_1]
type = ComputeLayeredCosseratElasticityTensor
block = 1
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
elasticity_tensor_prefactor = excav_sideways
[]
[strain]
type = ComputeCosseratIncrementalSmallStrain
eigenstrain_names = ini_stress
[]
[ini_stress]
type = ComputeEigenstrainFromInitialStress
eigenstrain_name = ini_stress
initial_stress = 'ini_xx 0 0 0 ini_xx 0 0 0 ini_zz'
[]
[stress_0]
type = ComputeMultipleInelasticCosseratStress
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
inelastic_models = 'mc wp'
cycle_models = true
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[]
[stress_1]
type = ComputeMultipleInelasticCosseratStress
block = 1
inelastic_models = ''
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[]
[mc]
type = CappedMohrCoulombCosseratStressUpdate
warn_about_precision_loss = false
host_youngs_modulus = 8E3
host_poissons_ratio = 0.25
base_name = mc
tensile_strength = mc_tensile_str_strong_harden
compressive_strength = mc_compressive_str
cohesion = mc_coh_strong_harden
friction_angle = mc_fric
dilation_angle = mc_dil
max_NR_iterations = 100000
smoothing_tol = 0.1 # MPa # Must be linked to cohesion
yield_function_tol = 1E-9 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[]
[wp]
type = CappedWeakPlaneCosseratStressUpdate
warn_about_precision_loss = false
base_name = wp
cohesion = wp_coh_harden
tan_friction_angle = wp_tan_fric
tan_dilation_angle = wp_tan_dil
tensile_strength = wp_tensile_str_harden
compressive_strength = wp_compressive_str_soften
max_NR_iterations = 10000
tip_smoother = 0.05
smoothing_tol = 0.05 # MPa # Note, this must be tied to cohesion, otherwise get no possible return at cone apex
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0E-3
[]
[undrained_density_0]
type = GenericConstantMaterial
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
prop_names = density
prop_values = 2500
[]
[undrained_density_1]
type = GenericFunctionMaterial
block = 1
prop_names = density
prop_values = density_sideways
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[min_roof_disp]
type = NodalExtremeValue
boundary = roof
value_type = min
variable = disp_z
[]
[min_roof_pp]
type = NodalExtremeValue
boundary = roof
value_type = min
variable = porepressure
[]
[min_surface_disp]
type = NodalExtremeValue
boundary = zmax
value_type = min
variable = disp_z
[]
[min_surface_pp]
type = NodalExtremeValue
boundary = zmax
value_type = min
variable = porepressure
[]
[max_perm_zz]
type = ElementExtremeValue
block = '2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30'
variable = perm_zz
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
# best overall
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
# best if you don't have mumps:
#petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
#petsc_options_value = ' asm 2 lu gmres 200'
# very basic:
#petsc_options_iname = '-pc_type -ksp_type -ksp_gmres_restart'
#petsc_options_value = ' bjacobi gmres 200'
line_search = bt
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_max_its = 200
nl_max_its = 30
start_time = 0.0
dt = 0.0025
end_time = 0.5
[]
[Outputs]
time_step_interval = 1
print_linear_residuals = true
exodus = true
csv = true
console = true
[]
(modules/solid_mechanics/test/tests/jacobian/cto16.i)
# Jacobian check for nonlinear, multi-surface plasticity.
# Returns to the tip of the tensile yield surface
# This is a very nonlinear test and a delicate test because it perturbs around
# a tip of the yield function where some derivatives are not well defined
#
# Plasticity models:
# Tensile with strength = 1MPa softening to 0.5MPa in 2E-2 strain
#
# Lame lambda = 1GPa. Lame mu = 1.3GPa
#
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int0
index = 0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int1
index = 1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int2
index = 2
[../]
[]
[Postprocessors]
[./max_int0]
type = ElementExtremeValue
variable = int0
outputs = console
[../]
[./max_int1]
type = ElementExtremeValue
variable = int1
outputs = console
[../]
[./max_int2]
type = ElementExtremeValue
variable = int2
outputs = console
[../]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console' [../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console' [../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console' [../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console' [../]
[]
[UserObjects]
[./ts]
type = SolidMechanicsHardeningCubic
value_0 = 1
value_residual = 0.5
internal_limit = 2E-2
[../]
[./tensile]
type = SolidMechanicsPlasticTensileMulti
tensile_strength = ts
yield_function_tolerance = 1.0E-6 # Note larger value
shift = 1.0E-6 # Note larger value
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1.0E3 1.3E3'
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '15 1 0.2 1 10 -0.3 -0.3 0.2 8'
eigenstrain_name = ini_stress
[../]
[./multi]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1E-7
plastic_models = 'tensile'
max_NR_iterations = 5
deactivation_scheme = 'safe'
min_stepsize = 1
tangent_operator = nonlinear
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_type'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000 test'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
[]
[Outputs]
file_base = cto16
exodus = false
[]
(modules/porous_flow/examples/thm_example/2D_c.i)
# Two phase, temperature-dependent, with mechanics and chemistry, radial with fine mesh, constant injection of cold co2 into a overburden-reservoir-underburden containing mostly water
# species=0 is water
# species=1 is co2
# phase=0 is liquid, and since massfrac_ph0_sp0 = 1, this is all water
# phase=1 is gas, and since massfrac_ph1_sp0 = 0, this is all co2
#
# The mesh used below has very high resolution, so the simulation takes a long time to complete.
# Some suggested meshes of different resolution:
# nx=50, bias_x=1.2
# nx=100, bias_x=1.1
# nx=200, bias_x=1.05
# nx=400, bias_x=1.02
# nx=1000, bias_x=1.01
# nx=2000, bias_x=1.003
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2000
bias_x = 1.003
xmin = 0.1
xmax = 5000
ny = 1
ymin = 0
ymax = 11
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
PorousFlowDictator = dictator
gravity = '0 0 0'
biot_coefficient = 1.0
[]
[Variables]
[pwater]
initial_condition = 18.3e6
[]
[sgas]
initial_condition = 0.0
[]
[temp]
initial_condition = 358
[]
[disp_r]
[]
[]
[AuxVariables]
[rate]
[]
[disp_z]
[]
[massfrac_ph0_sp0]
initial_condition = 1 # all H20 in phase=0
[]
[massfrac_ph1_sp0]
initial_condition = 0 # no H2O in phase=1
[]
[pgas]
family = MONOMIAL
order = FIRST
[]
[swater]
family = MONOMIAL
order = FIRST
[]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_tt]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[mineral_conc_m3_per_m3]
family = MONOMIAL
order = CONSTANT
initial_condition = 0.1
[]
[eqm_const]
initial_condition = 0.0
[]
[porosity]
family = MONOMIAL
order = CONSTANT
[]
[]
[Kernels]
[mass_water_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pwater
[]
[flux_water]
type = PorousFlowAdvectiveFlux
fluid_component = 0
use_displaced_mesh = false
variable = pwater
[]
[mass_co2_dot]
type = PorousFlowMassTimeDerivative
fluid_component = 1
variable = sgas
[]
[flux_co2]
type = PorousFlowAdvectiveFlux
fluid_component = 1
use_displaced_mesh = false
variable = sgas
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[advection]
type = PorousFlowHeatAdvection
use_displaced_mesh = false
variable = temp
[]
[conduction]
type = PorousFlowExponentialDecay
use_displaced_mesh = false
variable = temp
reference = 358
rate = rate
[]
[grad_stress_r]
type = StressDivergenceRZTensors
temperature = temp
eigenstrain_names = thermal_contribution
variable = disp_r
use_displaced_mesh = false
component = 0
[]
[poro_r]
type = PorousFlowEffectiveStressCoupling
variable = disp_r
use_displaced_mesh = false
component = 0
[]
[]
[AuxKernels]
[rate]
type = FunctionAux
variable = rate
execute_on = timestep_begin
function = decay_rate
[]
[pgas]
type = PorousFlowPropertyAux
property = pressure
phase = 1
variable = pgas
[]
[swater]
type = PorousFlowPropertyAux
property = saturation
phase = 0
variable = swater
[]
[stress_rr]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rr
index_i = 0
index_j = 0
[]
[stress_tt]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_tt
index_i = 2
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 1
index_j = 1
[]
[mineral]
type = PorousFlowPropertyAux
property = mineral_concentration
mineral_species = 0
variable = mineral_conc_m3_per_m3
[]
[eqm_const_auxk]
type = ParsedAux
variable = eqm_const
coupled_variables = temp
expression = '(358 - temp) / (358 - 294)'
[]
[porosity_auxk]
type = PorousFlowPropertyAux
property = porosity
variable = porosity
[]
[]
[Functions]
[decay_rate]
# Eqn(26) of the first paper of LaForce et al.
# Ka * (rho C)_a = 10056886.914
# h = 11
type = ParsedFunction
expression = 'sqrt(10056886.914/t)/11.0'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp pwater sgas disp_r'
number_fluid_phases = 2
number_fluid_components = 2
number_aqueous_kinetic = 1
aqueous_phase_number = 1
[]
[pc]
type = PorousFlowCapillaryPressureConst
pc = 0
[]
[]
[FluidProperties]
[water]
type = SimpleFluidProperties
bulk_modulus = 2.27e14
density0 = 970.0
viscosity = 0.3394e-3
cv = 4149.0
cp = 4149.0
porepressure_coefficient = 0.0
thermal_expansion = 0
[]
[co2]
type = SimpleFluidProperties
bulk_modulus = 2.27e14
density0 = 516.48
viscosity = 0.0393e-3
cv = 2920.5
cp = 2920.5
porepressure_coefficient = 0.0
thermal_expansion = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[ppss]
type = PorousFlow2PhasePS
phase0_porepressure = pwater
phase1_saturation = sgas
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
mass_fraction_vars = 'massfrac_ph0_sp0 massfrac_ph1_sp0'
[]
[water]
type = PorousFlowSingleComponentFluid
fp = water
phase = 0
[]
[gas]
type = PorousFlowSingleComponentFluid
fp = co2
phase = 1
[]
[porosity_reservoir]
type = PorousFlowPorosity
porosity_zero = 0.2
chemical = true
reference_chemistry = 0.1
initial_mineral_concentrations = 0.1
[]
[permeability_reservoir]
type = PorousFlowPermeabilityConst
permeability = '2e-12 0 0 0 0 0 0 0 0'
[]
[relperm_liquid]
type = PorousFlowRelativePermeabilityCorey
n = 4
phase = 0
s_res = 0.200
sum_s_res = 0.405
[]
[relperm_gas]
type = PorousFlowRelativePermeabilityBC
phase = 1
s_res = 0.205
sum_s_res = 0.405
nw_phase = true
lambda = 2
[]
[thermal_conductivity_reservoir]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '0 0 0 0 1.320 0 0 0 0'
wet_thermal_conductivity = '0 0 0 0 3.083 0 0 0 0'
[]
[internal_energy_reservoir]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1100
density = 2350.0
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
shear_modulus = 6.0E9
poissons_ratio = 0.2
[]
[strain]
type = ComputeAxisymmetricRZSmallStrain
eigenstrain_names = 'thermal_contribution ini_stress'
[]
[ini_strain]
type = ComputeEigenstrainFromInitialStress
initial_stress = '-12.8E6 0 0 0 -51.3E6 0 0 0 -12.8E6'
eigenstrain_name = ini_stress
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = temp
stress_free_temperature = 358
thermal_expansion_coeff = 5E-6
eigenstrain_name = thermal_contribution
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[predis]
type = PorousFlowAqueousPreDisChemistry
num_reactions = 1
primary_concentrations = 1.0 # fixed activity
equilibrium_constants_as_log10 = true
equilibrium_constants = eqm_const
primary_activity_coefficients = 1.0 # fixed activity
reactions = 1
kinetic_rate_constant = 1E-6
molar_volume = 1.0
specific_reactive_surface_area = 1.0
activation_energy = 0.0 # no Arrhenius
[]
[mineral_conc]
type = PorousFlowAqueousPreDisMineral
initial_concentrations = 0.1
[]
[predis_nodes]
type = PorousFlowAqueousPreDisChemistry
at_nodes = true
num_reactions = 1
primary_concentrations = 1.0 # fixed activity
equilibrium_constants_as_log10 = true
equilibrium_constants = eqm_const
primary_activity_coefficients = 1.0 # fixed activity
reactions = 1
kinetic_rate_constant = 1E-6
molar_volume = 1.0
specific_reactive_surface_area = 1.0
activation_energy = 0.0 # no Arrhenius
[]
[mineral_conc_nodes]
type = PorousFlowAqueousPreDisMineral
at_nodes = true
initial_concentrations = 0.1
[]
[]
[BCs]
[outer_pressure_fixed]
type = DirichletBC
boundary = right
value = 18.3e6
variable = pwater
[]
[outer_saturation_fixed]
type = DirichletBC
boundary = right
value = 0.0
variable = sgas
[]
[outer_temp_fixed]
type = DirichletBC
boundary = right
value = 358
variable = temp
[]
[fixed_outer_r]
type = DirichletBC
variable = disp_r
value = 0
boundary = right
[]
[co2_injection]
type = PorousFlowSink
boundary = left
variable = sgas
use_mobility = false
use_relperm = false
fluid_phase = 1
flux_function = 'min(t/100.0,1)*(-2.294001475)' # 5.0E5 T/year = 15.855 kg/s, over area of 2Pi*0.1*11
[]
[cold_co2]
type = DirichletBC
boundary = left
variable = temp
value = 294
[]
[cavity_pressure_x]
type = Pressure
boundary = left
variable = disp_r
component = 0
postprocessor = p_bh # note, this lags
use_displaced_mesh = false
[]
[]
[Postprocessors]
[p_bh]
type = PointValue
variable = pwater
point = '0.1 0 0'
execute_on = timestep_begin
use_displaced_mesh = false
[]
[mineral_bh] # mineral concentration (m^3(mineral)/m^3(rock)) at the borehole
type = PointValue
variable = mineral_conc_m3_per_m3
point = '0.1 0 0'
use_displaced_mesh = false
[]
[]
[VectorPostprocessors]
[ptsuss]
type = LineValueSampler
use_displaced_mesh = false
start_point = '0.1 0 0'
end_point = '5000 0 0'
sort_by = x
num_points = 50000
outputs = csv
variable = 'pwater temp sgas disp_r stress_rr stress_tt mineral_conc_m3_per_m3 porosity'
[]
[]
[Preconditioning]
active = 'smp'
[smp]
type = SMP
full = true
#petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -pc_asm_overlap -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 2 1E2 1E-5 50'
[]
[mumps]
type = SMP
full = true
petsc_options = '-snes_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix -ksp_gmres_modifiedgramschmidt -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -pc_factor_mat_solver_package -pc_factor_shift_type -snes_rtol -snes_atol -snes_max_it'
petsc_options_value = 'gmres lu mumps NONZERO 1E-5 1E2 50'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1.5768e8
#dtmax = 1e6
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
growth_factor = 1.1
[]
[]
[Outputs]
print_linear_residuals = false
sync_times = '3600 86400 2.592E6 1.5768E8'
perf_graph = true
exodus = true
[csv]
type = CSV
sync_only = true
[]
[]
(modules/combined/test/tests/DiffuseCreep/strain.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./creep_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_i = 0
index_j = 0
[../]
[./creep_strain_yy]
type = RankTwoAux
variable = creep_strain_yy
rank_two_tensor = creep_strain
index_i = 1
index_j = 1
[../]
[./creep_strain_xy]
type = RankTwoAux
variable = creep_strain_xy
rank_two_tensor = creep_strain
index_i = 0
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
args = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./diffuse_strain_increment]
type = FluxBasedStrainIncrement
xflux = jx
yflux = jy
gb = gb
property_name = diffuse
[../]
[./diffuse_creep_strain]
type = SumTensorIncrements
tensor_name = creep_strain
coupled_tensor_increment_names = diffuse
[../]
[]
[BCs]
[./Periodic]
[./all]
auto_direction = 'x y'
[../]
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_max_its = 5
dt = 20
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/rates/shear.i)
# shear modulus
G = 5000
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 0
index_j = 0
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 0
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[]
[BCs]
[x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'top bottom' # This contains all 8 nodes in the patch
function = 't*y'
[]
[y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top bottom' # This contains all 8 nodes in the patch
function = '0'
[]
[z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'top bottom' # This contains all 8 nodes in the patch
function = '0'
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
lambda = ${G}
shear_modulus = ${G}
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = stress_xx
execute_on = 'INITIAL TIMESTEP_BEGIN'
outputs = none
[]
[sxx0]
type = ParsedPostprocessor
pp_names = 'sxx'
expression = 'sxx/${G}'
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[syy]
type = ElementAverageValue
variable = stress_yy
execute_on = 'INITIAL TIMESTEP_BEGIN'
outputs = none
[]
[syy0]
type = ParsedPostprocessor
pp_names = 'syy'
expression = 'syy/${G}'
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[sxy]
type = ElementAverageValue
variable = stress_xy
execute_on = 'INITIAL TIMESTEP_BEGIN'
outputs = none
[]
[sxy0]
type = ParsedPostprocessor
pp_names = 'sxy'
expression = 'sxy/${G}'
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = NEWTON
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
end_time = 20
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/multi/three_surface22.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 1.7E-6m in y direction and 1.1E-6 in z direction.
# trial stress_yy = 1.7 and stress_zz = 1.1
#
# Then all yield functions will activate
# However, there is linear dependence. SimpleTester0 will be rutned off.
# The algorithm will return to
# stress_yy=1.0 and stress_zz=0.5
# internal1=0.1, internal2=0.6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1.7E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface22
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/umat/predef/predef_multiple_mat.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t*10
[]
[right_pull]
type = ParsedFunction
expression = -t*0.5
[]
[]
[AuxVariables]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[strain_xx]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[Pressure]
[bc_presssure_top]
boundary = top
function = top_pull
[]
[bc_presssure_right]
boundary = right
function = right_pull
[]
[]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[]
[Materials]
# 1. Active for UMAT
[strain_xx]
type = RankTwoCartesianComponent
property_name = strain_xx
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[]
[strain_yy]
type = RankTwoCartesianComponent
property_name = strain_yy
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[]
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_multiple_predef'
num_state_vars = 0
external_properties = 'strain_xx strain_yy'
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
base_name = 'base'
youngs_modulus = 1e3
poissons_ratio = 0.3
[]
[strain_dependent_elasticity_tensor]
type = CompositeElasticityTensor
args = 'strain_yy strain_xx'
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
property_name = prefactor_material
material_property_names = 'strain_yy strain_xx'
expression = '1.0/(1.0 + strain_yy + strain_xx)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 30
dt = 1.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/static_deformations/cosserat_glide.i)
# Example taken from Appendix A of
# S Forest "Mechanics of Cosserat media An introduction". Available from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.154.4476&rep=rep1&type=pdf
#
# Analytically, the displacements are
# wc_z = B sinh(w_e y)
# disp_x = (2 mu_c B / w_e / (mu + mu_c)) (1 - cosh(w_e y))
# with w_e^2 = 2 mu mu_c / be / (mu + mu_c)
# and B = arbitrary integration constant
#
# Also, the only nonzero stresses are
# m_zy = 2 B be w_e cosh(w_e y)
# si_yx = -4 mu mu_c/(mu + mu_c) B sinh(w_e y)
#
# MOOSE gives these stress components correctly.
# However, it also gives a seemingly non-zero si_xy
# component. Upon increasing the resolution of the
# mesh (ny=10000, for example), the stress components
# are seen to limit correctly to the above forumlae
#
# I use mu = 2, mu_c = 3, be = 0.6, so w_e = 2
# Also i use B = 1, so at y = 1
# wc_z = 3.626860407847
# disp_x = -1.65731741465
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 100
ymax = 1
nz = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./z_couple]
type = StressDivergenceTensors
variable = wc_z
displacements = 'wc_x wc_y wc_z'
component = 2
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[./z_moment]
type = MomentBalancing
variable = wc_z
component = 2
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./disp_x_zero_at_y_zero]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0
[../]
[./disp_x_fixed_at_y_max]
type = DirichletBC
variable = disp_x
boundary = top
value = -1.65731741465
[../]
[./no_dispy]
type = DirichletBC
variable = disp_y
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_dispz]
type = DirichletBC
variable = disp_z
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = 'back front bottom top left right'
value = 0
[../]
[./no_wc_y]
type = DirichletBC
variable = wc_y
boundary = 'back front bottom top left right'
value = 0
[../]
[./wc_z_zero_at_y_zero]
type = DirichletBC
variable = wc_z
boundary = bottom
value = 0
[../]
[./wc_z_fixed_at_y_max]
type = DirichletBC
variable = wc_z
boundary = top
value = 3.626860407847
[../]
[]
[AuxVariables]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeCosseratElasticityTensor
B_ijkl = '1.1 0.6 0.6' # In Forest notation this is alpha=1.1 (this is unimportant), beta=gamma=0.6.
fill_method_bending = 'general_isotropic'
E_ijkl = '1 2 3' # In Forest notation this is lambda=1 (this is unimportant), mu=2, mu_c=3
fill_method = 'general_isotropic'
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[VectorPostprocessors]
[./soln]
type = LineValueSampler
warn_discontinuous_face_values = false
sort_by = y
variable = 'disp_x wc_z stress_yx couple_stress_zy'
start_point = '0 0 0'
end_point = '0 1 0'
num_points = 11
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = cosserat_glide_out
exodus = true
csv = true
[]
(modules/solid_mechanics/test/tests/multi/three_surface02.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 0E-6m in y direction and 2.0E-6 in z direction.
# trial stress_yy = 0 and stress_zz = 2.0
#
# Then SimpleTester0 and SimpleTester2 should activate and the algorithm will return to
# the corner stress_yy=0.5, stress_zz=1, but this will require a negative plasticity
# multiplier for SimpleTester2, so it will be deactivated, and the algorithm will return to
# stress_yy = 0, stress_zz = 1
# internal0 should be 1.0, and others zero
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '2.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface02
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/multi/two_surface04.i)
# Plasticit models:
# SimpleTester with a = 0 and b = 1 and strength = 1
# SimpleTester with a = 1 and b = 1 and strength = 2
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 4.0E-6m in y directions and 2.0E-6 in z direction.
# trial stress_zz = 2 and stress_yy = 4
#
# Then both SimpleTesters should activate initially and return to the "corner" point
# (stress_zz = 1 = stress_yy), but then the plastic multiplier for SimpleTester1 will
# be negative, and so it will be deactivated, and the algorithm will return to
# stress_zz = 0, stress_yy = 2
# internal1 should be zero, internal2 should be 2
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '4E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '2E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[]
[UserObjects]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 2
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = two_surface04
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/test/tests/nodal_patch_recovery/npr_with_lower_domains.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
[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'
[]
[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
[]
[]
[AuxVariables]
[stress_xx]
order = FIRST
family = MONOMIAL
block = 'plank block'
[]
[stress_yy]
order = FIRST
family = MONOMIAL
block = 'plank block'
[]
[stress_xx_recovered]
order = FIRST
family = LAGRANGE
block = 'plank block'
[]
[stress_yy_recovered]
order = FIRST
family = LAGRANGE
block = 'plank block'
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
block = 'plank block'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
block = 'plank block'
[]
[stress_xx_recovered]
type = NodalPatchRecoveryAux
variable = stress_xx_recovered
nodal_patch_recovery_uo = stress_xx_patch
execute_on = 'TIMESTEP_END'
block = 'plank block'
[]
[stress_yy_recovered]
type = NodalPatchRecoveryAux
variable = stress_yy_recovered
nodal_patch_recovery_uo = stress_yy_patch
execute_on = 'TIMESTEP_END'
block = 'plank block'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[action]
generate_output = 'stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = false
strain = FINITE
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[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
[]
[stress_xx_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '0 0'
execute_on = 'NONLINEAR TIMESTEP_END'
block = 'plank block'
[]
[stress_yy_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '1 1'
execute_on = 'NONLINEAR TIMESTEP_END'
block = 'plank block'
[]
[]
[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 = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[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'
preset = false
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[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'
[]
[heat_plank]
type = HeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = HeatConductionMaterial
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 = 0.4
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[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
[]
[stress_xx_recovered]
type = ElementExtremeValue
variable = stress_xx_recovered
block = 'block'
value_type = max
[]
[stress_yy_recovered]
type = ElementExtremeValue
variable = stress_yy_recovered
block = 'block'
value_type = max
[]
[]
[Outputs]
exodus = true
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_100compression.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_4]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_5]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_6]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_7]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_8]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_9]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_10]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_11]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_6]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_7]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_8]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_9]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_11]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = twin_total_volume_fraction_twins
execute_on = timestep_end
[]
[slip_increment_0]
type = MaterialStdVectorAux
variable = slip_increment_0
property = slip_increment
index = 0
execute_on = timestep_end
[]
[slip_increment_1]
type = MaterialStdVectorAux
variable = slip_increment_1
property = slip_increment
index = 1
execute_on = timestep_end
[]
[slip_increment_2]
type = MaterialStdVectorAux
variable = slip_increment_2
property = slip_increment
index = 2
execute_on = timestep_end
[]
[slip_increment_3]
type = MaterialStdVectorAux
variable = slip_increment_3
property = slip_increment
index = 3
execute_on = timestep_end
[]
[slip_increment_4]
type = MaterialStdVectorAux
variable = slip_increment_4
property = slip_increment
index = 4
execute_on = timestep_end
[]
[slip_increment_5]
type = MaterialStdVectorAux
variable = slip_increment_5
property = slip_increment
index = 5
execute_on = timestep_end
[]
[slip_increment_6]
type = MaterialStdVectorAux
variable = slip_increment_6
property = slip_increment
index = 6
execute_on = timestep_end
[]
[slip_increment_7]
type = MaterialStdVectorAux
variable = slip_increment_7
property = slip_increment
index = 7
execute_on = timestep_end
[]
[slip_increment_8]
type = MaterialStdVectorAux
variable = slip_increment_8
property = slip_increment
index = 8
execute_on = timestep_end
[]
[slip_increment_9]
type = MaterialStdVectorAux
variable = slip_increment_9
property = slip_increment
index = 9
execute_on = timestep_end
[]
[slip_increment_10]
type = MaterialStdVectorAux
variable = slip_increment_10
property = slip_increment
index = 10
execute_on = timestep_end
[]
[slip_increment_11]
type = MaterialStdVectorAux
variable = slip_increment_11
property = slip_increment
index = 11
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_volume_fraction_6]
type = MaterialStdVectorAux
variable = twin_volume_fraction_6
property = twin_twin_system_volume_fraction
index = 6
execute_on = timestep_end
[]
[twin_volume_fraction_7]
type = MaterialStdVectorAux
variable = twin_volume_fraction_7
property = twin_twin_system_volume_fraction
index = 7
execute_on = timestep_end
[]
[twin_volume_fraction_8]
type = MaterialStdVectorAux
variable = twin_volume_fraction_8
property = twin_twin_system_volume_fraction
index = 8
execute_on = timestep_end
[]
[twin_volume_fraction_9]
type = MaterialStdVectorAux
variable = twin_volume_fraction_9
property = twin_twin_system_volume_fraction
index = 9
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_11]
type = MaterialStdVectorAux
variable = twin_volume_fraction_11
property = twin_twin_system_volume_fraction
index = 11
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '-0.025*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5' # roughly copper
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_xtalpl slip_xtalpl'
tan_mod_type = exact
[]
[twin_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
base_name = twin
number_slip_systems = 12
slip_sys_file_name = 'fcc_input_twinning_systems.txt'
initial_twin_lattice_friction = 60.0
[]
[slip_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
total_twin_volume_fraction = 'twin_total_volume_fraction_twins'
[]
[]
[Postprocessors]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[slip_increment_0]
type = ElementAverageValue
variable = slip_increment_0
[]
[slip_increment_1]
type = ElementAverageValue
variable = slip_increment_1
[]
[slip_increment_2]
type = ElementAverageValue
variable = slip_increment_2
[]
[slip_increment_3]
type = ElementAverageValue
variable = slip_increment_3
[]
[slip_increment_4]
type = ElementAverageValue
variable = slip_increment_4
[]
[slip_increment_5]
type = ElementAverageValue
variable = slip_increment_5
[]
[slip_increment_6]
type = ElementAverageValue
variable = slip_increment_6
[]
[slip_increment_7]
type = ElementAverageValue
variable = slip_increment_7
[]
[slip_increment_8]
type = ElementAverageValue
variable = slip_increment_8
[]
[slip_increment_9]
type = ElementAverageValue
variable = slip_increment_9
[]
[slip_increment_10]
type = ElementAverageValue
variable = slip_increment_10
[]
[slip_increment_11]
type = ElementAverageValue
variable = slip_increment_11
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_volume_fraction_6]
type = ElementAverageValue
variable = twin_volume_fraction_6
[]
[twin_volume_fraction_7]
type = ElementAverageValue
variable = twin_volume_fraction_7
[]
[twin_volume_fraction_8]
type = ElementAverageValue
variable = twin_volume_fraction_8
[]
[twin_volume_fraction_9]
type = ElementAverageValue
variable = twin_volume_fraction_9
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[twin_volume_fraction_11]
type = ElementAverageValue
variable = twin_volume_fraction_11
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.005
dtmin = 0.01
num_steps = 10
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/j2_plasticity/small_deform3.i)
# UserObject J2 test
# apply uniform compression in x direction to give
# trial stress_xx = -7, so sqrt(3*J2) = 7
# with zero Poisson's ratio, this should return to
# stress_xx = -3, stress_yy = -2 = stress_zz
# (note that stress_xx - stress_yy = stress_xx - stress_zz = -1, so sqrt(3*j2) = 1,
# and that the mean stress remains = -7/3)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-3.5E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningConstant
value = 1
[../]
[./j2]
type = SolidMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = j2
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform3
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/scalar_kernel/2dsole.i)
# 2D with mixed conditions on stress/strain
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = false
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '2d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0'
fixed_normal = true
new_boundary = 'left right bottom top'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[hvar]
family = SCALAR
order = FIRST
[]
[hvarA]
family = SCALAR
order = SECOND
[]
[]
[AuxVariables]
[sxx]
family = MONOMIAL
order = CONSTANT
[]
[syy]
family = MONOMIAL
order = CONSTANT
[]
[sxy]
family = MONOMIAL
order = CONSTANT
[]
[exx]
family = MONOMIAL
order = CONSTANT
[]
[eyy]
family = MONOMIAL
order = CONSTANT
[]
[exy]
family = MONOMIAL
order = CONSTANT
[]
[]
[Kernels]
[sdx0]
type = HomogenizedTotalLagrangianStressDivergenceA
variable = disp_x
component = 0
macro_var = hvar
macro_other = hvarA
prime_scalar = 0
constraint_types = ${constraint_types}
targets = ${targets}
[]
[sdy0]
type = HomogenizedTotalLagrangianStressDivergenceA
variable = disp_y
component = 1
macro_var = hvar
macro_other = hvarA
prime_scalar = 0
constraint_types = ${constraint_types}
targets = ${targets}
[]
[sdx1]
type = HomogenizedTotalLagrangianStressDivergenceA
variable = disp_x
component = 0
macro_var = hvarA
macro_other = hvar
prime_scalar = 1
constraint_types = ${constraint_types}
targets = ${targets}
[]
[sdy1]
type = HomogenizedTotalLagrangianStressDivergenceA
variable = disp_y
component = 1
macro_var = hvarA
macro_other = hvar
prime_scalar = 1
constraint_types = ${constraint_types}
targets = ${targets}
[]
[]
[Problem]
kernel_coverage_check = false
error_on_jacobian_nonzero_reallocation = true
[]
[AuxKernels]
[sxx]
type = RankTwoAux
variable = sxx
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[syy]
type = RankTwoAux
variable = syy
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[sxy]
type = RankTwoAux
variable = sxy
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[exx]
type = RankTwoAux
variable = exx
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
[]
[eyy]
type = RankTwoAux
variable = eyy
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 1
[]
[exy]
type = RankTwoAux
variable = exy
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 1
[]
[]
[Functions]
[strain11]
type = ParsedFunction
value = '4.0e-2*t'
[]
[strain22]
type = ParsedFunction
value = '-2.0e-2*t'
[]
[strain12]
type = ParsedFunction
value = '1.0e-2*t'
[]
[stress11]
type = ParsedFunction
value = '400*t'
[]
[stress22]
type = ParsedFunction
value = '-200*t'
[]
[stress12]
type = ParsedFunction
value = '100*t'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y'
[]
[y]
variable = disp_y
auto_direction = 'x y'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix1"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix1"
variable = disp_y
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix2"
variable = disp_y
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrainA
macro_gradientA = hvar
macro_gradient = hvarA
constraint_types = ${constraint_types}
targets = ${targets}
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = sxx
execute_on = 'initial timestep_end'
[]
[syy]
type = ElementAverageValue
variable = syy
execute_on = 'initial timestep_end'
[]
[sxy]
type = ElementAverageValue
variable = sxy
execute_on = 'initial timestep_end'
[]
[exx]
type = ElementAverageValue
variable = exx
execute_on = 'initial timestep_end'
[]
[eyy]
type = ElementAverageValue
variable = eyy
execute_on = 'initial timestep_end'
[]
[exy]
type = ElementAverageValue
variable = exy
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
# solve_type = 'PJFNK'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 30
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/small-tests/2d.i)
# 2D with mixed conditions on stress/strain
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = false
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '2d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0'
fixed_normal = true
new_boundary = 'left right bottom top'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[hvar]
family = SCALAR
order = THIRD
[]
[]
[AuxVariables]
[sxx]
family = MONOMIAL
order = CONSTANT
[]
[syy]
family = MONOMIAL
order = CONSTANT
[]
[sxy]
family = MONOMIAL
order = CONSTANT
[]
[exx]
family = MONOMIAL
order = CONSTANT
[]
[eyy]
family = MONOMIAL
order = CONSTANT
[]
[exy]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[sxx]
type = RankTwoAux
variable = sxx
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[syy]
type = RankTwoAux
variable = syy
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[sxy]
type = RankTwoAux
variable = sxy
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[exx]
type = RankTwoAux
variable = exx
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
[]
[eyy]
type = RankTwoAux
variable = eyy
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 1
[]
[exy]
type = RankTwoAux
variable = exy
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 1
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
constraint_types = ${constraint_types}
targets = ${targets}
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[strain11]
type = ParsedFunction
expression = '4.0e-2*t'
[]
[strain22]
type = ParsedFunction
expression = '-2.0e-2*t'
[]
[strain12]
type = ParsedFunction
expression = '1.0e-2*t'
[]
[stress11]
type = ParsedFunction
expression = '400*t'
[]
[stress22]
type = ParsedFunction
expression = '-200*t'
[]
[stress12]
type = ParsedFunction
expression = '100*t'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y'
[]
[y]
variable = disp_y
auto_direction = 'x y'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix1"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix1"
variable = disp_y
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix2"
variable = disp_y
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = sxx
execute_on = 'initial timestep_end'
[]
[syy]
type = ElementAverageValue
variable = syy
execute_on = 'initial timestep_end'
[]
[sxy]
type = ElementAverageValue
variable = sxy
execute_on = 'initial timestep_end'
[]
[exx]
type = ElementAverageValue
variable = exx
execute_on = 'initial timestep_end'
[]
[eyy]
type = ElementAverageValue
variable = eyy
execute_on = 'initial timestep_end'
[]
[exy]
type = ElementAverageValue
variable = exy
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 30
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/ad_2D_geometries/3D-RZ_finiteStrain_test.i)
# Considers the mechanics solution for a thick spherical shell that is uniformly
# pressurized on the inner and outer surfaces, using 3D geometry.
#
# From Roark (Formulas for Stress and Strain, McGraw-Hill, 1975), the radially-dependent
# circumferential stress in a uniformly pressurized thick spherical shell is given by:
#
# S(r) = [ Pi[ri^3(2r^3+ro^3)] - Po[ro^3(2r^3+ri^3)] ] / [2r^3(ro^3-ri^3)]
#
# where:
# Pi = inner pressure
# Po = outer pressure
# ri = inner radius
# ro = outer radius
#
# The tests assume an inner and outer radii of 5 and 10, with internal and external
# pressures of 100000 and 200000 at t = 1.0, respectively. The resulting compressive
# tangential stress is largest at the inner wall and, from the above equation, has a
# value of -271429.
#
# RESULTS are below. Since stresses are average element values, values for the
# edge element and one-element-in are used to extrapolate the stress to the
# inner surface. The vesrion of the tests that are checked use the coarsest meshes.
#
# Mesh Radial elem S(edge elem) S(one elem in) S(extrap to surf)
# 1D-SPH
# 2D-RZ 12 (x10) -265004 -254665 -270174
# 3D 12 (6x6) -261880 -252811 -266415
#
# 1D-SPH
# 2D-RZ 48 (x10) -269853 -266710 -271425
# 3D 48 (10x10) -268522 -265653 -269957
#
# The numerical solution converges to the analytical solution as the mesh is
# refined.
[Mesh]
file = 3D_mesh.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
block = 1
use_displaced_mesh = true
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
block = 1
[../]
[./elastic_strain]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[../]
[./no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = yzero
value = 0.0
[../]
[./no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = zzero
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_x]
type = ADPressure
variable = disp_x
boundary = outer
component = 0
function = '200000*t'
[../]
[./exterior_pressure_y]
type = ADPressure
variable = disp_y
boundary = outer
component = 1
function = '200000*t'
[../]
[./exterior_pressure_z]
type = ADPressure
variable = disp_z
boundary = outer
component = 2
function = '200000*t'
[../]
[./interior_pressure_x]
type = ADPressure
variable = disp_x
boundary = inner
component = 0
function = '100000*t'
[../]
[./interior_pressure_y]
type = ADPressure
variable = disp_y
boundary = inner
component = 1
function = '100000*t'
[../]
[./interior_pressure_z]
type = ADPressure
variable = disp_z
boundary = inner
component = 2
function = '100000*t'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 0.2
dt = 0.1
[]
[Postprocessors]
[./strainTheta]
type = ElementAverageValue
variable = strain_theta
[../]
[./stressTheta]
type = ElementAverageValue
variable = stress_theta
[../]
[./stressTheta_pt]
type = PointValue
point = '5.0 0.0 0.0'
#bottom inside edge for comparison to theory; use csv = true
variable = stress_theta
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/small_deform1.i)
# Elastic deformation.
# With Lame lambda=0 and Lame mu=1, applying the following
# deformation to the zmax surface of a unit cube:
# disp_x = 8*t
# disp_y = 6*t
# disp_z = t
# should yield stress:
# stress_xz = 8*t
# stress_xy = 6*t
# stress_zz = 2*t
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
variable = disp_x
boundary = back
value = 0.0
[../]
[./bottomy]
type = DirichletBC
variable = disp_y
boundary = back
value = 0.0
[../]
[./bottomz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
variable = disp_x
boundary = front
function = 8*t
[../]
[./topy]
type = FunctionDirichletBC
variable = disp_y
boundary = front
function = 6*t
[../]
[./topz]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = t
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = combined_inelastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = combined_inelastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = combined_inelastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = combined_inelastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = combined_inelastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = combined_inelastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./stress_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./stress_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./stress_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./stress_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./stress_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./stress_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./strainp_xx]
type = PointValue
point = '0 0 0'
variable = strainp_xx
[../]
[./strainp_xy]
type = PointValue
point = '0 0 0'
variable = strainp_xy
[../]
[./strainp_xz]
type = PointValue
point = '0 0 0'
variable = strainp_xz
[../]
[./strainp_yy]
type = PointValue
point = '0 0 0'
variable = strainp_yy
[../]
[./strainp_yz]
type = PointValue
point = '0 0 0'
variable = strainp_yz
[../]
[./strainp_zz]
type = PointValue
point = '0 0 0'
variable = strainp_zz
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1'
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./admissible]
type = ComputeMultipleInelasticStress
inelastic_models = ''
perform_finite_strain_rotations = false
[../]
[]
[Executioner]
end_time = 2
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform1
csv = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/planar_hard3.i)
# apply repeated stretches in x z directions, and smaller stretches along the y direction,
# so that sigma_I = sigma_II,
# which means that lode angle = 30deg.
# Both return to the edge (lode angle = 30deg, ie 010100) and tip are experienced.
#
# It is checked that the yield functions are less than their tolerance values
# It is checked that the cohesion hardens correctly
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.05E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[Functions]
[./should_be_zero_fcn]
type = ParsedFunction
expression = 'if((a<1E-5)&(b<1E-5)&(c<1E-5)&(d<1E-5)&(g<1E-5)&(h<1E-5),0,abs(a)+abs(b)+abs(c)+abs(d)+abs(g)+abs(h))'
symbol_names = 'a b c d g h'
symbol_values = 'f0 f1 f2 f3 f4 f5'
[../]
[./coh_analytic]
type = ParsedFunction
expression = '20-10*exp(-1E5*intnl)'
symbol_names = intnl
symbol_values = internal
[../]
[./coh_from_yieldfcns]
type = ParsedFunction
expression = '(f0+f1-(sxx+syy)*sin(phi))/(-2)/cos(phi)'
symbol_names = 'f0 f1 sxx syy phi'
symbol_values = 'f0 f1 s_xx s_yy 0.8726646'
[../]
[./should_be_zero_coh]
type = ParsedFunction
expression = 'if(abs(a-b)<1E-6,0,1E6*abs(a-b))'
symbol_names = 'a b'
symbol_values = 'Coh_analytic Coh_moose'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn0]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn1]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn2]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn3]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn4]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn5]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn0]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn0
[../]
[./yield_fcn1]
type = MaterialStdVectorAux
index = 1
property = plastic_yield_function
variable = yield_fcn1
[../]
[./yield_fcn2]
type = MaterialStdVectorAux
index = 2
property = plastic_yield_function
variable = yield_fcn2
[../]
[./yield_fcn3]
type = MaterialStdVectorAux
index = 3
property = plastic_yield_function
variable = yield_fcn3
[../]
[./yield_fcn4]
type = MaterialStdVectorAux
index = 4
property = plastic_yield_function
variable = yield_fcn4
[../]
[./yield_fcn5]
type = MaterialStdVectorAux
index = 5
property = plastic_yield_function
variable = yield_fcn5
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = yield_fcn0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = yield_fcn1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = yield_fcn2
[../]
[./f3]
type = PointValue
point = '0 0 0'
variable = yield_fcn3
[../]
[./f4]
type = PointValue
point = '0 0 0'
variable = yield_fcn4
[../]
[./f5]
type = PointValue
point = '0 0 0'
variable = yield_fcn5
[../]
[./yfcns_should_be_zero]
type = FunctionValuePostprocessor
function = should_be_zero_fcn
[../]
[./Coh_analytic]
type = FunctionValuePostprocessor
function = coh_analytic
[../]
[./Coh_moose]
type = FunctionValuePostprocessor
function = coh_from_yieldfcns
[../]
[./cohesion_difference_should_be_zero]
type = FunctionValuePostprocessor
function = should_be_zero_coh
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningExponential
value_0 = 10
value_residual = 20
rate = 1E5
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 0.8726646
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 1 #0.8726646 # 50deg
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
yield_function_tolerance = 1E-5
use_custom_returnMap = true
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-12
plastic_models = mc
[../]
[]
[Executioner]
end_time = 5
dt = 1
type = Transient
[]
[Outputs]
file_base = planar_hard3
exodus = false
[./csv]
type = CSV
hide = 'f0 f1 f2 f3 f4 f5 s_xy s_xz s_yz Coh_analytic Coh_moose'
execute_on = 'timestep_end'
[../]
[]
(modules/solid_mechanics/test/tests/isotropic_elasticity_tensor/youngs_modulus_poissons_ratio_test.i)
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
add_variables = true
[../]
[]
[AuxKernels]
[./stress_11]
type = RankTwoAux
variable = stress_11
rank_two_tensor = stress
index_j = 1
index_i = 1
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.001
[../]
[]
[Materials]
[./stress]
type = ComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.1
youngs_modulus = 1e6
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
l_max_its = 20
nl_max_its = 10
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/global_strain/global_strain_shear.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[cnode]
type = ExtraNodesetGenerator
coord = '0.0 0.0 0.0'
new_boundary = 100
input = generated_mesh
[]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./u_z]
[../]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./s01]
order = CONSTANT
family = MONOMIAL
[../]
[./e01]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_z]
type = GlobalDisplacementAux
variable = disp_z
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 2
[../]
[./s01]
type = RankTwoAux
variable = s01
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./e01]
type = RankTwoAux
variable = e01
rank_two_tensor = total_strain
index_i = 0
index_j = 1
[../]
[]
[GlobalParams]
displacements = 'u_x u_y u_z'
block = 0
[]
[Kernels]
[SolidMechanics]
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[BCs]
[./Periodic]
[./all]
auto_direction = 'x y z'
variable = ' u_x u_y u_z'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = u_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '70e9 0.33'
fill_method = symmetric_isotropic_E_nu
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalStrainUserObject
applied_stress_tensor = '0 0 0 5e9 5e9 5e9'
execute_on = 'Initial Linear Nonlinear'
[../]
[]
[Postprocessors]
[./l2err_e01]
type = ElementL2Error
variable = e01
function = 0.095 #Shear strain check
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
line_search = basic
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
l_max_its = 30
nl_max_its = 12
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 1.0e-10
start_time = 0.0
num_steps = 2
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/stabilization/cook_large.i)
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = true
stabilize_strain = true
[]
[Mesh]
type = FileMesh
file = cook_mesh.exo
dim = 2
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[Kernels]
[sdx]
type = UpdatedLagrangianStressDivergence
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[sdy]
type = UpdatedLagrangianStressDivergence
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[BCs]
[fixed_x]
type = DirichletBC
preset = true
variable = disp_x
boundary = canti
value = 0.0
[]
[fixed_y]
type = DirichletBC
preset = true
variable = disp_y
boundary = canti
value = 0.0
[]
[pull]
type = NeumannBC
variable = disp_y
boundary = loading
value = 0.1
[]
[]
[Materials]
[compute_stress]
type = ComputeNeoHookeanStress
lambda = 416666611.0991259
mu = 8300.33333888888926
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = 'newton'
line_search = 'none'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_max_its = 500
nl_abs_tol = 1e-5
nl_rel_tol = 1e-6
[]
[Postprocessors]
[value]
type = PointValue
variable = disp_y
point = '48 60 0'
use_displaced_mesh = false
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/action/noaction_3d.i)
# 3D test with just mixed stress strain control
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
constraint_types = 'stress strain strain strain stress strain strain strain strain'
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '3d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0
'
' 0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'left right bottom top back front'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[hvar]
family = SCALAR
order = NINTH
[]
[]
[AuxVariables]
[pk1_stress_xx]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_yx]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_zx]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_xy]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_yy]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_zy]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_xz]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_yz]
family = MONOMIAL
order = CONSTANT
[]
[pk1_stress_zz]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_xx]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_yx]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_zx]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_xy]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_yy]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_zy]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_xz]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_yz]
family = MONOMIAL
order = CONSTANT
[]
[deformation_gradient_zz]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[pk1_stress_xx]
type = RankTwoAux
variable = pk1_stress_xx
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[pk1_stress_yx]
type = RankTwoAux
variable = pk1_stress_yx
rank_two_tensor = pk1_stress
index_i = 1
index_j = 0
[]
[pk1_stress_zx]
type = RankTwoAux
variable = pk1_stress_zx
rank_two_tensor = pk1_stress
index_i = 2
index_j = 0
[]
[pk1_stress_xy]
type = RankTwoAux
variable = pk1_stress_xy
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[pk1_stress_yy]
type = RankTwoAux
variable = pk1_stress_yy
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[pk1_stress_zy]
type = RankTwoAux
variable = pk1_stress_zy
rank_two_tensor = pk1_stress
index_i = 2
index_j = 1
[]
[pk1_stress_xz]
type = RankTwoAux
variable = pk1_stress_xz
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[pk1_stress_yz]
type = RankTwoAux
variable = pk1_stress_yz
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[pk1_stress_zz]
type = RankTwoAux
variable = pk1_stress_zz
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[deformation_gradient_xx]
type = RankTwoAux
variable = deformation_gradient_xx
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 0
[]
[deformation_gradient_yx]
type = RankTwoAux
variable = deformation_gradient_yx
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 0
[]
[deformation_gradient_zx]
type = RankTwoAux
variable = deformation_gradient_zx
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 0
[]
[deformation_gradient_xy]
type = RankTwoAux
variable = deformation_gradient_xy
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 1
[]
[deformation_gradient_yy]
type = RankTwoAux
variable = deformation_gradient_yy
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[deformation_gradient_zy]
type = RankTwoAux
variable = deformation_gradient_zy
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 1
[]
[deformation_gradient_xz]
type = RankTwoAux
variable = deformation_gradient_xz
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 2
[]
[deformation_gradient_yz]
type = RankTwoAux
variable = deformation_gradient_yz
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 2
[]
[deformation_gradient_zz]
type = RankTwoAux
variable = deformation_gradient_zz
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 2
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
targets = 'stress11 strain21 strain31 strain12 stress22 strain32 strain13 strain23 strain33'
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[stress11]
type = ParsedFunction
expression = '120.0*t'
[]
[stress22]
type = ParsedFunction
expression = '65*t'
[]
[strain33]
type = ParsedFunction
expression = '8.0e-2*t'
[]
[strain23]
type = ParsedFunction
expression = '2.0e-2*t'
[]
[strain13]
type = ParsedFunction
expression = '-7.0e-2*t'
[]
[strain12]
type = ParsedFunction
expression = '1.0e-2*t'
[]
[strain32]
type = ParsedFunction
expression = '1.0e-2*t'
[]
[strain31]
type = ParsedFunction
expression = '2.0e-2*t'
[]
[strain21]
type = ParsedFunction
expression = '-1.5e-2*t'
[]
[zero]
type = ConstantFunction
expression = 0
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y z'
[]
[y]
variable = disp_y
auto_direction = 'x y z'
[]
[z]
variable = disp_z
auto_direction = 'x y z'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix_all"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix_all"
variable = disp_y
value = 0
[]
[fix1_z]
type = DirichletBC
boundary = "fix_all"
variable = disp_z
value = 0
[]
[fix2_x]
type = DirichletBC
boundary = "fix_xy"
variable = disp_x
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix_xy"
variable = disp_y
value = 0
[]
[fix3_z]
type = DirichletBC
boundary = "fix_z"
variable = disp_z
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[elastic_tensor_4]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 76000.0
poissons_ratio = 0.11
block = '4'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 20
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
file_base = 3d
exodus = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/large-tests/3d.i)
# 2D test with just strain control
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '3d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0
'
' 0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'left right bottom top back front'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[hvar]
family = SCALAR
order = NINTH
[]
[]
[AuxVariables]
[s11]
family = MONOMIAL
order = CONSTANT
[]
[s21]
family = MONOMIAL
order = CONSTANT
[]
[s31]
family = MONOMIAL
order = CONSTANT
[]
[s12]
family = MONOMIAL
order = CONSTANT
[]
[s22]
family = MONOMIAL
order = CONSTANT
[]
[s32]
family = MONOMIAL
order = CONSTANT
[]
[s13]
family = MONOMIAL
order = CONSTANT
[]
[s23]
family = MONOMIAL
order = CONSTANT
[]
[s33]
family = MONOMIAL
order = CONSTANT
[]
[F11]
family = MONOMIAL
order = CONSTANT
[]
[F21]
family = MONOMIAL
order = CONSTANT
[]
[F31]
family = MONOMIAL
order = CONSTANT
[]
[F12]
family = MONOMIAL
order = CONSTANT
[]
[F22]
family = MONOMIAL
order = CONSTANT
[]
[F32]
family = MONOMIAL
order = CONSTANT
[]
[F13]
family = MONOMIAL
order = CONSTANT
[]
[F23]
family = MONOMIAL
order = CONSTANT
[]
[F33]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s11]
type = RankTwoAux
variable = s11
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[s21]
type = RankTwoAux
variable = s21
rank_two_tensor = pk1_stress
index_i = 1
index_j = 0
[]
[s31]
type = RankTwoAux
variable = s31
rank_two_tensor = pk1_stress
index_i = 2
index_j = 0
[]
[s12]
type = RankTwoAux
variable = s12
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[s22]
type = RankTwoAux
variable = s22
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[s32]
type = RankTwoAux
variable = s32
rank_two_tensor = pk1_stress
index_i = 2
index_j = 1
[]
[s13]
type = RankTwoAux
variable = s13
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[s23]
type = RankTwoAux
variable = s23
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[s33]
type = RankTwoAux
variable = s33
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[F11]
type = RankTwoAux
variable = F11
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 0
[]
[F21]
type = RankTwoAux
variable = F21
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 0
[]
[F31]
type = RankTwoAux
variable = F31
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 0
[]
[F12]
type = RankTwoAux
variable = F12
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 1
[]
[F22]
type = RankTwoAux
variable = F22
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[F32]
type = RankTwoAux
variable = F32
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 1
[]
[F13]
type = RankTwoAux
variable = F13
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 2
[]
[F23]
type = RankTwoAux
variable = F23
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 2
[]
[F33]
type = RankTwoAux
variable = F33
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 2
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
constraint_types = ${constraint_types}
targets = ${targets}
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[strain11]
type = ParsedFunction
expression = '8.0e-2*t'
[]
[strain22]
type = ParsedFunction
expression = '-4.0e-2*t'
[]
[strain33]
type = ParsedFunction
expression = '8.0e-2*t'
[]
[strain23]
type = ParsedFunction
expression = '2.0e-2*t'
[]
[strain13]
type = ParsedFunction
expression = '-7.0e-2*t'
[]
[strain12]
type = ParsedFunction
expression = '1.0e-2*t'
[]
[strain32]
type = ParsedFunction
expression = '1.0e-2*t'
[]
[strain31]
type = ParsedFunction
expression = '2.0e-2*t'
[]
[strain21]
type = ParsedFunction
expression = '-1.5e-2*t'
[]
[stress11]
type = ParsedFunction
expression = '4.0e2*t'
[]
[stress22]
type = ParsedFunction
expression = '-2.0e2*t'
[]
[stress33]
type = ParsedFunction
expression = '8.0e2*t'
[]
[stress23]
type = ParsedFunction
expression = '2.0e2*t'
[]
[stress13]
type = ParsedFunction
expression = '-7.0e2*t'
[]
[stress12]
type = ParsedFunction
expression = '1.0e2*t'
[]
[stress32]
type = ParsedFunction
expression = '1.0e2*t'
[]
[stress31]
type = ParsedFunction
expression = '2.0e2*t'
[]
[stress21]
type = ParsedFunction
expression = '-1.5e2*t'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y z'
[]
[y]
variable = disp_y
auto_direction = 'x y z'
[]
[z]
variable = disp_z
auto_direction = 'x y z'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix_all"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix_all"
variable = disp_y
value = 0
[]
[fix1_z]
type = DirichletBC
boundary = "fix_all"
variable = disp_z
value = 0
[]
[fix2_x]
type = DirichletBC
boundary = "fix_xy"
variable = disp_x
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix_xy"
variable = disp_y
value = 0
[]
[fix3_z]
type = DirichletBC
boundary = "fix_z"
variable = disp_z
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[elastic_tensor_4]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 76000.0
poissons_ratio = 0.11
block = '4'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Postprocessors]
[s11]
type = ElementAverageValue
variable = s11
execute_on = 'initial timestep_end'
[]
[s21]
type = ElementAverageValue
variable = s21
execute_on = 'initial timestep_end'
[]
[s31]
type = ElementAverageValue
variable = s31
execute_on = 'initial timestep_end'
[]
[s12]
type = ElementAverageValue
variable = s12
execute_on = 'initial timestep_end'
[]
[s22]
type = ElementAverageValue
variable = s22
execute_on = 'initial timestep_end'
[]
[s32]
type = ElementAverageValue
variable = s32
execute_on = 'initial timestep_end'
[]
[s13]
type = ElementAverageValue
variable = s13
execute_on = 'initial timestep_end'
[]
[s23]
type = ElementAverageValue
variable = s23
execute_on = 'initial timestep_end'
[]
[s33]
type = ElementAverageValue
variable = s33
execute_on = 'initial timestep_end'
[]
[F11]
type = ElementAverageValue
variable = F11
execute_on = 'initial timestep_end'
[]
[F21]
type = ElementAverageValue
variable = F21
execute_on = 'initial timestep_end'
[]
[F31]
type = ElementAverageValue
variable = F31
execute_on = 'initial timestep_end'
[]
[F12]
type = ElementAverageValue
variable = F12
execute_on = 'initial timestep_end'
[]
[F22]
type = ElementAverageValue
variable = F22
execute_on = 'initial timestep_end'
[]
[F32]
type = ElementAverageValue
variable = F32
execute_on = 'initial timestep_end'
[]
[F13]
type = ElementAverageValue
variable = F13
execute_on = 'initial timestep_end'
[]
[F23]
type = ElementAverageValue
variable = F23
execute_on = 'initial timestep_end'
[]
[F33]
type = ElementAverageValue
variable = F33
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 10
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
csv = true
[]
(modules/porous_flow/test/tests/mass_conservation/mass13.i)
# The sample is an annulus in RZ coordinates.
# Roller BCs are applied to the rmin, top and bottom boundaries
# A constant displacement is applied to the outer boundary: disp_r = -0.01 * t * (r - rmin)/(rmax - rmin).
# There is no fluid flow.
# Fluid mass conservation is checked.
#
# The flag volumetric_locking_correction = true is set for the strain calculator,
# which ensures that the volumetric strain is uniform throughout the element
#
# Theoretically,
# volumetric_strain = volume / volume0 - 1 = ((rmax - 0.01*t)^2 - rmin^2) / (rmax^2 - rmin^2) - 1
# However, with ComputeAxisymmetricRZSmallStrain, strain_rr = -0.01 * t / (rmax - rmin)
# and strain_tt = disp_r / r = -0.01 * t * (1 - rmin / r_qp) / (rmax - rmin), where r_qp is the radius of the quadpoint
# With volumetric_locking_correction = true, r_qp = (rmax - rmin) / 2.
# The volumetric strain is
# epv = -0.01 * t * (2 - rmin / r_qp) / (rmax - rmin)
# and volume = volume0 * (1 + epv)
#
# Fluid conservation reads
# volume0 * rho0 * exp(P0/bulk) = volume * rho0 * exp(P/bulk), so
# P - P0 = bulk * log(volume0 / volume) = 0.5 * log(1 / (1 + epv))
# With rmax = 2 and rmin = 1
# fluid_mass = volume0 * rho0 * exp(P0/bulk) = pi*3 * 1 * exp(0.1/0.5) = 11.51145
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmin = 1
xmax = 2
ymin = -0.5
ymax = 0.5
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
PorousFlowDictator = dictator
block = 0
biot_coefficient = 0.3
[]
[Variables]
[disp_r]
[]
[disp_z]
[]
[porepressure]
initial_condition = 0.1
[]
[]
[BCs]
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'bottom top'
[]
[rmin_fixed]
type = DirichletBC
variable = disp_r
value = 0
boundary = left
[]
[contract]
type = FunctionDirichletBC
variable = disp_r
function = -0.01*t
boundary = right
[]
[]
[Kernels]
[grad_stress_r]
type = StressDivergenceRZTensors
variable = disp_r
component = 0
[]
[grad_stress_z]
type = StressDivergenceRZTensors
variable = disp_z
component = 1
[]
[poro_r]
type = PorousFlowEffectiveStressCoupling
variable = disp_r
component = 0
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
variable = disp_z
component = 1
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[]
[AuxVariables]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_rz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_tt]
order = CONSTANT
family = MONOMIAL
[]
[strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_tt]
order = CONSTANT
family = MONOMIAL
[]
[vol_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_rr]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rr
index_i = 0
index_j = 0
[]
[stress_rz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rz
index_i = 0
index_j = 1
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 1
index_j = 1
[]
[stress_tt]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_tt
index_i = 2
index_j = 2
[]
[strain_rr]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_rr
index_i = 0
index_j = 0
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 1
index_j = 1
[]
[strain_tt]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_tt
index_i = 2
index_j = 2
[]
[vol_strain]
type = MaterialRealAux
property = PorousFlow_total_volumetric_strain_qp
variable = vol_strain
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeAxisymmetricRZSmallStrain
volumetric_locking_correction = true # the strain will be the same at every qp of the element
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0.5 0 0 0 0.5 0 0 0 0.5'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_r disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '1.0 0 0'
variable = porepressure
[]
[vol_strain]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '1 0 0'
variable = vol_strain
[]
[strain_rr]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '1 0 0'
variable = strain_rr
[]
[strain_zz]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '1 0 0'
variable = strain_zz
[]
[strain_tt]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '1 0 0'
variable = strain_tt
[]
[rdisp]
type = PointValue
outputs = csv
point = '2 0 0'
use_displaced_mesh = false
variable = disp_r
[]
[stress_rr]
type = PointValue
outputs = csv
point = '1 0 0'
variable = stress_rr
[]
[stress_zz]
type = PointValue
outputs = csv
point = '1 0 0'
variable = stress_zz
[]
[stress_tt]
type = PointValue
outputs = csv
point = '1 0 0'
variable = stress_tt
[]
[fluid_mass]
type = PorousFlowFluidMass
fluid_component = 0
execute_on = 'initial timestep_end'
outputs = 'console csv'
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-8 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 2
[]
[Outputs]
execute_on = 'initial timestep_end'
[csv]
type = CSV
[]
[]
(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
[]
[]
(modules/solid_mechanics/test/tests/shell/static/pinched_cylinder_symm_unstructured.i)
# Test for displacement of pinched cylinder (similar to pinch_cyl_symm.i)
# This variant of the test is run with an unstructured mesh
[Mesh]
[mesh]
type = FileMeshGenerator
file = pinched_cyl_10_10_unstructured.msh
[]
[block_100]
type = ParsedSubdomainMeshGenerator
input = mesh
combinatorial_geometry = 'x > -1.1 & x < 1.1 & y > -1.1 & y < 1.1 & z > -0.1 & z < 2.1'
block_id = 100
[]
[nodeset_1]
type = BoundingBoxNodeSetGenerator
input = block_100
top_right = '1.1 1.1 0'
bottom_left = '-1.1 -1.1 0'
new_boundary = 'CD' #CD
[]
[nodeset_2]
type = BoundingBoxNodeSetGenerator
input = nodeset_1
top_right = '1.1 1.1 1.0'
bottom_left = '-1.1 -1.1 1.0'
new_boundary = 'AB' #AB
[]
[nodeset_3]
type = BoundingBoxNodeSetGenerator
input = nodeset_2
top_right = '0.02 1.1 1.0'
bottom_left = '-0.1 0.98 0.0'
new_boundary = 'AD' #AD
[]
[nodeset_4]
type = BoundingBoxNodeSetGenerator
input = nodeset_3
top_right = '1.1 0.02 1.0'
bottom_left = '0.98 -0.1 0.0'
new_boundary = 'BC' #BC
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[rot_x]
order = FIRST
family = LAGRANGE
[]
[rot_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[stress_xx0]
order = CONSTANT
family = MONOMIAL
[]
[stress_xx1]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx0]
type = RankTwoAux
variable = stress_xx0
rank_two_tensor = global_stress_t_points_0
index_i = 0
index_j = 0
execute_on = TIMESTEP_END
[]
[stress_xx1]
type = RankTwoAux
variable = stress_xx1
rank_two_tensor = global_stress_t_points_1
index_i = 0
index_j = 0
execute_on = TIMESTEP_END
[]
[]
[BCs]
[simply_support_x]
type = DirichletBC
variable = disp_x
boundary = 'CD AD'
value = 0.0
[]
[simply_support_y]
type = DirichletBC
variable = disp_y
boundary = 'CD BC'
value = 0.0
[]
[simply_support_z]
type = DirichletBC
variable = disp_z
boundary = 'CD AB'
value = 0.0
[]
[simply_support_rot_x]
type = DirichletBC
variable = rot_x
boundary = 'CD BC'
value = 0.0
[]
[simply_support_rot_y]
type = DirichletBC
variable = rot_y
boundary = 'CD AD'
value = 0.0
[]
[]
[DiracKernels]
[point1]
type = ConstantPointSource
variable = disp_x
point = '1 0 1'
value = -2.5 # P = 10
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu mumps'
line_search = 'none'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
dt = 1.0
dtmin = 1.0
end_time = 1.0
[]
[Kernels]
[solid_disp_x]
type = ADStressDivergenceShell
block = '100'
component = 0
variable = disp_x
through_thickness_order = SECOND
[]
[solid_disp_y]
type = ADStressDivergenceShell
block = '100'
component = 1
variable = disp_y
through_thickness_order = SECOND
[]
[solid_disp_z]
type = ADStressDivergenceShell
block = '100'
component = 2
variable = disp_z
through_thickness_order = SECOND
[]
[solid_rot_x]
type = ADStressDivergenceShell
block = '100'
component = 3
variable = rot_x
through_thickness_order = SECOND
[]
[solid_rot_y]
type = ADStressDivergenceShell
block = '100'
component = 4
variable = rot_y
through_thickness_order = SECOND
[]
[]
[Materials]
[elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 1e6
poissons_ratio = 0.3
block = '100'
through_thickness_order = SECOND
[]
[strain]
type = ADComputeIncrementalShellStrain
block = '100'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.01
through_thickness_order = SECOND
[]
[stress]
type = ADComputeShellStress
block = '100'
through_thickness_order = SECOND
[]
[]
[Postprocessors]
[disp_z2]
type = PointValue
point = '1 0 1'
variable = disp_x
[]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/brick_3/brick3_template2.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick3_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
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-8
nl_rel_tol = 1e-7
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+7
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/drucker_prager/small_deform3_outer_tip.i)
# apply repeated stretches in x z directions, and smaller stretches along the y direction,
# so that sigma_I = sigma_II,
# which means that lode angle = 30deg.
# The allows yield surface in meridional plane to be mapped out
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '-1.7E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
smoother = 8
mc_interpolation_scheme = outer_tip
yield_function_tolerance = 1E-7
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-13
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform3_outer_tip
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/auxkernels/principalstress.i)
[Mesh]
type = GeneratedMesh
elem_type = HEX8
dim = 3
nx = 1
ny = 1
nz = 1
xmin=0.0
xmax=1.0
ymin=0.0
ymax=1.0
zmin=0.0
zmax=1.0
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Materials]
[./fplastic]
type = FiniteStrainPlasticMaterial
block = 0
yield_stress='0. 445. 0.05 610. 0.1 680. 0.38 810. 0.95 920. 2. 950.'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '2.827e5 1.21e5 1.21e5 2.827e5 1.21e5 2.827e5 0.808e5 0.808e5 0.808e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./front]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = 't'
[../]
[./right]
type = FunctionDirichletBC
variable = disp_y
boundary = right
function = '-0.5*t'
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_max]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_mid]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_min]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./stress_max]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_max
scalar_type = MaxPrincipal
[../]
[./stress_mid]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_mid
scalar_type = MidPrincipal
[../]
[./stress_min]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_min
scalar_type = MinPrincipal
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./stress_max]
type = ElementAverageValue
variable = stress_max
[../]
[./stress_mid]
type = ElementAverageValue
variable = stress_mid
[../]
[./stress_min]
type = ElementAverageValue
variable = stress_min
[../]
[]
[Executioner]
type = Transient
dt=0.1
dtmin=0.1
dtmax=1
end_time=1.0
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
[]
[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/solid_mechanics/examples/coal_mining/cosserat_elastic.i)
# Strata deformation and fracturing around a coal mine
#
# A 2D geometry is used that simulates a transverse section of
# the coal mine. The model is actually 3D, but the "x"
# dimension is only 10m long, meshed with 1 element, and
# there is no "x" displacement. The mine is 400m deep
# and just the roof is studied (0<=z<=400). The model sits
# between 0<=y<=450. The excavation sits in 0<=y<=150. This
# is a "half model": the boundary conditions are such that
# the model simulates an excavation sitting in -150<=y<=150
# inside a model of the region -450<=y<=450. The
# excavation height is 3m (ie, the excavation lies within
# 0<=z<=3).
#
# Time is meaningless in this example
# as quasi-static solutions are sought at each timestep, but
# the number of timesteps controls the resolution of the
# process.
#
# The boundary conditions for this elastic simulation are:
# - disp_x = 0 everywhere
# - disp_y = 0 at y=0 and y=450
# - disp_z = 0 for y>150
# - wc_x = 0 at y=0 and y=450.
# That is, rollers on the sides, free at top,
# and prescribed at bottom in the unexcavated portion.
#
# The small strain formulation is used.
#
# All stresses are measured in MPa. The initial stress is consistent with
# the weight force from density 2500 kg/m^3, ie, stress_zz = -0.025*(300-z) MPa
# where gravity = 10 m.s^-2 = 1E-5 MPa m^2/kg. The maximum and minimum
# principal horizontal stresses are assumed to be equal to 0.8*stress_zz.
#
# This is an elastic simulation, but the weak-plane and Drucker-Prager
# parameters and AuxVariables may be found below. They are irrelevant
# in this simulation. The weak-plane and Drucker-Prager cohesions,
# tensile strengths and compressive strengths have been set very high
#
# Material properties:
# Young's modulus = 8 GPa
# Poisson's ratio = 0.25
# Cosserat layer thickness = 1 m
# Cosserat-joint normal stiffness = large
# Cosserat-joint shear stiffness = 1 GPa
#
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
xmin = -5
xmax = 5
nz = 40
zmin = 0
zmax = 403.003
bias_z = 1.1
ny = 30 # make this a multiple of 3, so y=150 is at a node
ymin = 0
ymax = 450
[]
[left]
type = SideSetsAroundSubdomainGenerator
new_boundary = 11
normal = '0 -1 0'
input = generated_mesh
[]
[right]
type = SideSetsAroundSubdomainGenerator
new_boundary = 12
normal = '0 1 0'
input = left
[]
[front]
type = SideSetsAroundSubdomainGenerator
new_boundary = 13
normal = '-1 0 0'
input = right
[]
[back]
type = SideSetsAroundSubdomainGenerator
new_boundary = 14
normal = '1 0 0'
input = front
[]
[top]
type = SideSetsAroundSubdomainGenerator
new_boundary = 15
normal = '0 0 1'
input = back
[]
[bottom]
type = SideSetsAroundSubdomainGenerator
new_boundary = 16
normal = '0 0 -1'
input = top
[]
[excav]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '-5 0 0'
top_right = '5 150 3'
input = bottom
[]
[roof]
type = SideSetsBetweenSubdomainsGenerator
new_boundary = 21
primary_block = 0
paired_block = 1
input = excav
[]
[hole]
type = BlockDeletionGenerator
block = 1
input = roof
[]
[]
[GlobalParams]
block = 0
perform_finite_strain_rotations = false
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[]
[Kernels]
[./cy_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
use_displaced_mesh = false
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
use_displaced_mesh = false
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
use_displaced_mesh = false
variable = wc_x
component = 0
[../]
[./gravity]
type = Gravity
use_displaced_mesh = false
variable = disp_z
value = -10E-6 # remember this is in MPa
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./dp_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./dp_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./wp_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[./dp_shear_f]
order = CONSTANT
family = MONOMIAL
[../]
[./dp_tensile_f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./dp_shear]
type = MaterialStdVectorAux
index = 0
property = dp_plastic_internal_parameter
variable = dp_shear
[../]
[./dp_tensile]
type = MaterialStdVectorAux
index = 1
property = dp_plastic_internal_parameter
variable = dp_tensile
[../]
[./wp_shear]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_internal_parameter
variable = wp_shear
[../]
[./wp_tensile]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_internal_parameter
variable = wp_tensile
[../]
[./dp_shear_f]
type = MaterialStdVectorAux
index = 0
property = dp_plastic_yield_function
variable = dp_shear_f
[../]
[./dp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = dp_plastic_yield_function
variable = dp_tensile_f
[../]
[./wp_shear_f]
type = MaterialStdVectorAux
index = 0
property = wp_plastic_yield_function
variable = wp_shear_f
[../]
[./wp_tensile_f]
type = MaterialStdVectorAux
index = 1
property = wp_plastic_yield_function
variable = wp_tensile_f
[../]
[]
[BCs]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = '11 12'
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = '16'
value = 0.0
[../]
[./no_wc_x]
type = DirichletBC
variable = wc_x
boundary = '11 12'
value = 0.0
[../]
[]
[Functions]
[./ini_xx]
type = ParsedFunction
expression = '-0.8*2500*10E-6*(403.003-z)'
[../]
[./ini_zz]
type = ParsedFunction
expression = '-2500*10E-6*(403.003-z)'
[../]
[]
[UserObjects]
[./dp_coh_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 2.9 # MPa
value_residual = 3.1 # MPa
rate = 1.0
[../]
[./dp_fric]
type = SolidMechanicsHardeningConstant
value = 0.65 # 37deg
[../]
[./dp_dil]
type = SolidMechanicsHardeningConstant
value = 0.65
[../]
[./dp_tensile_str_strong_harden]
type = SolidMechanicsHardeningExponential
value_0 = 1.0 # MPa
value_residual = 1.4 # MPa
rate = 1.0
[../]
[./dp_compressive_str]
type = SolidMechanicsHardeningConstant
value = 1.0E3 # Large!
[../]
[./drucker_prager_model]
type = SolidMechanicsPlasticDruckerPrager
mc_cohesion = dp_coh_strong_harden
mc_friction_angle = dp_fric
mc_dilation_angle = dp_dil
internal_constraint_tolerance = 1 # irrelevant here
yield_function_tolerance = 1 # irrelevant here
[../]
[./wp_coh]
type = SolidMechanicsHardeningConstant
value = 1E12
[../]
[./wp_tan_fric]
type = SolidMechanicsHardeningConstant
value = 0.36 # 20deg
[../]
[./wp_tan_dil]
type = SolidMechanicsHardeningConstant
value = 0.18 # 10deg
[../]
[./wp_tensile_str]
type = SolidMechanicsHardeningConstant
value = 1E12
[../]
[./wp_compressive_str]
type = SolidMechanicsHardeningConstant
value = 1E12
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 8E3 # MPa
poisson = 0.25
layer_thickness = 1.0
joint_normal_stiffness = 1E9 # huge
joint_shear_stiffness = 1E3 # MPa
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = 'ini_xx 0 0 0 ini_xx 0 0 0 ini_zz'
eigenstrain_name = ini_stress
[../]
[./stress]
# this is needed so as to correctly apply the initial stress
type = ComputeMultipleInelasticCosseratStress
block = 0
inelastic_models = ''
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./dp]
type = CappedDruckerPragerCosseratStressUpdate
block = 0
warn_about_precision_loss = false
host_youngs_modulus = 8E3
host_poissons_ratio = 0.25
base_name = dp
DP_model = drucker_prager_model
tensile_strength = dp_tensile_str_strong_harden
compressive_strength = dp_compressive_str
max_NR_iterations = 100000
tip_smoother = 0.1E1
smoothing_tol = 0.1E1 # MPa # Must be linked to cohesion
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0
[../]
[./wp]
type = CappedWeakPlaneCosseratStressUpdate
block = 0
warn_about_precision_loss = false
base_name = wp
cohesion = wp_coh
tan_friction_angle = wp_tan_fric
tan_dilation_angle = wp_tan_dil
tensile_strength = wp_tensile_str
compressive_strength = wp_compressive_str
max_NR_iterations = 10000
tip_smoother = 0.1
smoothing_tol = 0.1 # MPa # Note, this must be tied to cohesion, otherwise get no possible return at cone apex
yield_function_tol = 1E-11 # MPa. this is essentially the lowest possible without lots of precision loss
perfect_guess = true
min_step_size = 1.0E-3
[../]
[./density]
type = GenericConstantMaterial
prop_names = density
prop_values = 2500
[../]
[]
[Postprocessors]
[./subs_max]
type = PointValue
point = '0 0 403.003'
variable = disp_z
use_displaced_mesh = false
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'Linear'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
line_search = bt
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_max_its = 30
nl_max_its = 1000
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
file_base = cosserat_elastic
time_step_interval = 1
print_linear_residuals = false
exodus = true
csv = true
console = true
#[./console]
# type = Console
# output_linear = false
#[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/special/objective_shear.i)
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[sdx]
type = UpdatedLagrangianStressDivergence
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[sdy]
type = UpdatedLagrangianStressDivergence
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[sdz]
type = UpdatedLagrangianStressDivergence
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[Functions]
[shearme]
type = PiecewiseLinear
x = '0 1'
y = '0 2'
[]
[]
[BCs]
[back]
type = DirichletBC
preset = true
variable = disp_z
boundary = back
value = 0.0
[]
[bottom_y]
type = DirichletBC
preset = true
variable = disp_y
boundary = bottom
value = 0.0
[]
[bottom_x]
type = DirichletBC
preset = true
variable = disp_x
boundary = bottom
value = 0.0
[]
[shear]
type = FunctionDirichletBC
variable = disp_x
boundary = top
function = shearme
preset = true
[]
[hmm]
type = DirichletBC
preset = true
variable = disp_y
boundary = top
value = 0.0
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 0.01
solve_type = 'newton'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
end_time = 1
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/small_deform_hard3.i)
# apply repeated stretches in x z directions, and smaller stretches along the y direction,
# so that sigma_I = sigma_II,
# which means that lode angle = 30deg.
# The allows yield surface in meridional plane to be mapped out
#
# friction_angle = 50deg, friction_angle_residual=51deg, friction_angle_rate = 1E7 (huge)
# cohesion = 10, cohesion_residual = 9.9, cohesion_rate = 1E7 (huge)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.25E-6*y*sin(t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningExponential
value_0 = 10
value_residual = 9.9
rate = 1E7
[../]
[./mc_phi]
type = SolidMechanicsHardeningExponential
value_0 = 0.8726646 # 50deg
value_residual = 0.8901179 # 51deg
rate = 1E7
[../]
[./mc_psi]
type = SolidMechanicsHardeningExponential
value_0 = 0
value_residual = 0.8726646 # 50deg
rate = 3000
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4
mc_edge_smoother = 20
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
debug_jac_at_stress = '10 1 2 1 11 -3 2 -3 8'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 30
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform_hard3
exodus = false
[./csv]
type = CSV
[../]
[]
(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/porous_flow/test/tests/mass_conservation/mass12.i)
# The sample is an annulus in RZ coordinates.
# Roller BCs are applied to the r_min, r_max and bottom boundaries
# A constant displacement is applied to the top: disp_z = -0.01*t.
# There is no fluid flow.
# Fluid mass conservation is checked.
#
# Under these conditions
# fluid_mass = volume0 * rho0 * exp(P0/bulk) = pi*3 * 1 * exp(0.1/0.5) = 11.51145
# volume0 * rho0 * exp(P0/bulk) = volume * rho0 * exp(P/bulk), so
# P - P0 = bulk * log(volume0 / volume) = 0.5 * log(1 / (1 - 0.01*t))
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmin = 1.0
xmax = 2.0
ymin = -0.5
ymax = 0.5
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
PorousFlowDictator = dictator
block = 0
[]
[Variables]
[disp_r]
[]
[disp_z]
[]
[porepressure]
initial_condition = 0.1
[]
[]
[BCs]
[bottom_roller]
type = DirichletBC
variable = disp_z
value = 0
boundary = bottom
[]
[side_rollers]
type = DirichletBC
variable = disp_r
value = 0
boundary = 'left right'
[]
[top_move]
type = FunctionDirichletBC
variable = disp_z
function = -0.01*t
boundary = top
[]
[]
[Kernels]
[grad_stress_r]
type = StressDivergenceRZTensors
variable = disp_r
component = 0
[]
[grad_stress_z]
type = StressDivergenceRZTensors
variable = disp_z
component = 1
[]
[poro_r]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_r
component = 0
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_z
component = 1
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[]
[AuxVariables]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_rz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_tt]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_rr]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rr
index_i = 0
index_j = 0
[]
[stress_rz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_rz
index_i = 0
index_j = 1
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 1
index_j = 1
[]
[stress_tt]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_tt
index_i = 2
index_j = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeAxisymmetricRZSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0.5 0 0 0 0.5 0 0 0 0.5'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_r disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '1 0 0'
variable = porepressure
[]
[rdisp]
type = PointValue
outputs = csv
point = '2 0 0'
use_displaced_mesh = false
variable = disp_r
[]
[stress_rr]
type = PointValue
outputs = csv
point = '1 0 0'
variable = stress_rr
[]
[stress_zz]
type = PointValue
outputs = csv
point = '1 0 0'
variable = stress_zz
[]
[stress_tt]
type = PointValue
outputs = csv
point = '1 0 0'
variable = stress_tt
[]
[fluid_mass]
type = PorousFlowFluidMass
fluid_component = 0
execute_on = 'initial timestep_end'
outputs = 'console csv'
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-8 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 2
[]
[Outputs]
execute_on = 'initial timestep_end'
[csv]
type = CSV
[]
[]
(modules/solid_mechanics/test/tests/elem_prop_read_user_object/prop_grain_read.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD4
displacements = 'disp_x disp_y'
nx = 10
ny = 10
[]
[Variables]
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.05*t
[../]
[]
[UserObjects]
[./prop_read]
type = PropertyReadFile
prop_file_name = 'input_file.txt'
# Enter file data as prop#1, prop#2, .., prop#nprop
nprop = 4
read_type = voronoi
nvoronoi = 3
use_random_voronoi = true
rand_seed = 25346
rve_type = periodic
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[./e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = elastic_strain
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[Materials]
[./elasticity_tensor_with_Euler]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 0.176e5 0.176e5 1.684e5 0.176e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
read_prop_user_object = prop_read
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Postprocessors]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
block = 'ANY_BLOCK_ID 0'
[../]
[./e_yy]
type = ElementAverageValue
variable = e_yy
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.05
num_steps = 1
nl_abs_step_tol = 1e-10
[]
[Outputs]
file_base = prop_grain_read_out
exodus = true
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y'
use_displaced_mesh = true
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_no_substructure.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[substructure_density]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[slip_resistance_3]
type = MaterialStdVectorAux
variable = slip_resistance_3
property = slip_resistance
index = 3
execute_on = timestep_end
[]
[substructure_density]
type = MaterialRealAux
variable = substructure_density
property = total_substructure_density
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
preset = true
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7'
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0 #artifically low for specific test
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '100 200'
effective_shear_modulus_per_mode = '5e4 5e4'
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1e5 2e7'
normalized_slip_activiation_energy_per_mode = '4e-3 3e-2'
slip_energy_proportionality_factor_per_mode = '300 100'
substructure_rate_coefficient_per_mode = '-355 -0.4' #artifical, non-physical values for testing purposes
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '1 1'
grain_size = 20.0e-3 #20 microns
[]
[]
[Postprocessors]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[slip_resistance_3]
type = ElementAverageValue
variable = slip_resistance_3
[]
[substructure_density]
type = ElementAverageValue
variable = substructure_density
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.5
dtmin = 1.0e-2
dtmax = 10.0
end_time = 2.5
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/hyperelastic_viscoplastic/one_elem.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
block = 0
[../]
[./uy]
block = 0
[../]
[./uz]
block = 0
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./peeq]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./peeq]
type = MaterialRealAux
variable = peeq
property = ep_eqv
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = '0.01*t'
[../]
[]
[UserObjects]
[./flowstress]
type = HEVPRambergOsgoodHardening
yield_stress = 100
hardening_exponent = 0.1
reference_plastic_strain = 0.002
intvar_prop_name = ep_eqv
[../]
[./flowrate]
type = HEVPFlowRatePowerLawJ2
reference_flow_rate = 0.0001
flow_rate_exponent = 50.0
flow_rate_tol = 1
strength_prop_name = flowstress
[../]
[./ep_eqv]
type = HEVPEqvPlasticStrain
intvar_rate_prop_name = ep_eqv_rate
[../]
[./ep_eqv_rate]
type = HEVPEqvPlasticStrainRate
flow_rate_prop_name = flowrate
[../]
[]
[Materials]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[../]
[./viscop]
type = FiniteStrainHyperElasticViscoPlastic
block = 0
resid_abs_tol = 1e-18
resid_rel_tol = 1e-8
maxiters = 50
max_substep_iteration = 5
flow_rate_user_objects = 'flowrate'
strength_user_objects = 'flowstress'
internal_var_user_objects = 'ep_eqv'
internal_var_rate_user_objects = 'ep_eqv_rate'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '2.8e5 1.2e5 1.2e5 2.8e5 1.2e5 2.8e5 0.8e5 0.8e5 0.8e5'
fill_method = symmetric9
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./peeq]
type = ElementAverageValue
variable = peeq
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.02
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
dtmax = 10.0
nl_rel_tol = 1e-10
dtmin = 0.02
num_steps = 10
[]
[Outputs]
file_base = one_elem
exodus = true
csv = false
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/small_deform_cosserat3.i)
# Plastic deformation. Layered Cosserat with parameters:
# Young = 10.0
# Poisson = 0.25
# layer_thickness = 10
# joint_normal_stiffness = 2.5
# joint_shear_stiffness = 2.0
# These give the following nonzero components of the elasticity tensor:
# E_0000 = E_1111 = 1.156756756757E+01
# E_0011 = E_1100 = 3.855855855856E+00
# E_2222 = E_pp = 8.108108108108E+00
# E_0022 = E_1122 = E_2200 = E_2211 = 2.702702702703E+00
# G = E_0101 = E_0110 = E_1001 = E_1010 = 4
# Gt = E_qq = E_0202 = E_0220 = E_2002 = E_1212 = E_1221 = E_2112 = 3.333333333333E+00
# E_2020 = E_2121 = 3.666666666667E+00
# They give the following nonzero components of the bending rigidity tensor:
# D = 8.888888888889E+02
# B_0101 = B_1010 = 8.080808080808E+00
# B_0110 = B_1001 = -2.020202020202E+00
#
# Applying the following deformation to the zmax surface of a unit cube:
# disp_x = 32*t/Gt
# disp_y = 24*t/Gt
# disp_z = 10*t/E_2222
# omega_x = omega_y = omega_z = 0
# yields the following strains:
# strain_xz = 32*t/Gt = 9.6*t
# strain_yz = 24*t/Gt = 7.2*t
# strain_zz = 10*t/E_2222 = 1.23333333*t
# and all other components, and the curvature, are zero.
# The nonzero components of stress are therefore:
# stress_xx = stress_yy = 3.33333*t
# stress_xz = stress_zx = 32*t
# stress_yz = stress_zy = 24*t
# stress_zz = 10*t
# The moment stress is zero.
# So q = 40*t and p = 10*t
#
# Use tan(friction_angle) = 0.5 and tan(dilation_angle) = E_qq/Epp/2, and cohesion=20,
# the system should return to p=0, q=20, ie stress_zz=0, stress_xz=16,
# stress_yz=12 on the first time step (t=1)
# and
# stress_xx = stress_yy = 0
# and
# stress_zx = 32, and stress_zy = 24.
# Although this has resulted in a non-symmetric stress tensor, the
# moments generated are cancelled by the boundary conditions on
# omega_x and omega_y. (Removing these boundary conditions results
# in a symmetric stress tensor, and some omega!=0 being generated.)
# No moment stresses are generated because omega=0=curvature.
#
# The total strains are given above (strain_xz = 9.6,
# strain_yz = 7.2 and strain_zz = 1.23333).
# Since q returned from 40 to 20, plastic_strain_xz = strain_xz/2 = 4.8
# and plastic_strain_yz = strain_yz/2 = 3.6.
# Since p returned to zero, all of the total strain_zz is
# plastic, ie plastic_strain_zz = 1.23333
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
variable = disp_x
boundary = back
value = 0.0
[../]
[./bottomy]
type = DirichletBC
variable = disp_y
boundary = back
value = 0.0
[../]
[./bottomz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./bottom_wc_x]
type = DirichletBC
variable = wc_x
boundary = back
value = 0.0
[../]
[./bottom_wc_y]
type = DirichletBC
variable = wc_y
boundary = back
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
variable = disp_x
boundary = front
function = 32*t/3.333333333333E+00
[../]
[./topy]
type = FunctionDirichletBC
variable = disp_y
boundary = front
function = 24*t/3.333333333333E+00
[../]
[./topz]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = 10*t/8.108108108108E+00
[../]
[./top_wc_x]
type = DirichletBC
variable = wc_x
boundary = front
value = 0.0
[../]
[./top_wc_y]
type = DirichletBC
variable = wc_y
boundary = front
value = 0.0
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yx
index_i = 1
index_j = 0
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zx
index_i = 2
index_j = 0
[../]
[./strainp_zy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zy
index_i = 2
index_j = 1
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yx
index_i = 1
index_j = 0
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zx
index_i = 2
index_j = 0
[../]
[./straint_zy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zy
index_i = 2
index_j = 1
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yx]
type = PointValue
point = '0 0 0'
variable = stress_yx
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zx]
type = PointValue
point = '0 0 0'
variable = stress_zx
[../]
[./s_zy]
type = PointValue
point = '0 0 0'
variable = stress_zy
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./c_s_xx]
type = PointValue
point = '0 0 0'
variable = couple_stress_xx
[../]
[./c_s_xy]
type = PointValue
point = '0 0 0'
variable = couple_stress_xy
[../]
[./c_s_xz]
type = PointValue
point = '0 0 0'
variable = couple_stress_xz
[../]
[./c_s_yx]
type = PointValue
point = '0 0 0'
variable = couple_stress_yx
[../]
[./c_s_yy]
type = PointValue
point = '0 0 0'
variable = couple_stress_yy
[../]
[./c_s_yz]
type = PointValue
point = '0 0 0'
variable = couple_stress_yz
[../]
[./c_s_zx]
type = PointValue
point = '0 0 0'
variable = couple_stress_zx
[../]
[./c_s_zy]
type = PointValue
point = '0 0 0'
variable = couple_stress_zy
[../]
[./c_s_zz]
type = PointValue
point = '0 0 0'
variable = couple_stress_zz
[../]
[./strainp_xx]
type = PointValue
point = '0 0 0'
variable = strainp_xx
[../]
[./strainp_xy]
type = PointValue
point = '0 0 0'
variable = strainp_xy
[../]
[./strainp_xz]
type = PointValue
point = '0 0 0'
variable = strainp_xz
[../]
[./strainp_yx]
type = PointValue
point = '0 0 0'
variable = strainp_yx
[../]
[./strainp_yy]
type = PointValue
point = '0 0 0'
variable = strainp_yy
[../]
[./strainp_yz]
type = PointValue
point = '0 0 0'
variable = strainp_yz
[../]
[./strainp_zx]
type = PointValue
point = '0 0 0'
variable = strainp_zx
[../]
[./strainp_zy]
type = PointValue
point = '0 0 0'
variable = strainp_zy
[../]
[./strainp_zz]
type = PointValue
point = '0 0 0'
variable = strainp_zz
[../]
[./straint_xx]
type = PointValue
point = '0 0 0'
variable = straint_xx
[../]
[./straint_xy]
type = PointValue
point = '0 0 0'
variable = straint_xy
[../]
[./straint_xz]
type = PointValue
point = '0 0 0'
variable = straint_xz
[../]
[./straint_yx]
type = PointValue
point = '0 0 0'
variable = straint_yx
[../]
[./straint_yy]
type = PointValue
point = '0 0 0'
variable = straint_yy
[../]
[./straint_yz]
type = PointValue
point = '0 0 0'
variable = straint_yz
[../]
[./straint_zx]
type = PointValue
point = '0 0 0'
variable = straint_zx
[../]
[./straint_zy]
type = PointValue
point = '0 0 0'
variable = straint_zy
[../]
[./straint_zz]
type = PointValue
point = '0 0 0'
variable = straint_zz
[../]
[./f_shear]
type = PointValue
point = '0 0 0'
variable = f_shear
[../]
[./f_tensile]
type = PointValue
point = '0 0 0'
variable = f_tensile
[../]
[./f_compressive]
type = PointValue
point = '0 0 0'
variable = f_compressive
[../]
[./intnl_shear]
type = PointValue
point = '0 0 0'
variable = intnl_shear
[../]
[./intnl_tensile]
type = PointValue
point = '0 0 0'
variable = intnl_tensile
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[./ls]
type = PointValue
point = '0 0 0'
variable = ls
[../]
[]
[UserObjects]
[./coh]
type = SolidMechanicsHardeningConstant
value = 20
[../]
[./tanphi]
type = SolidMechanicsHardeningConstant
value = 0.5
[../]
[./tanpsi]
type = SolidMechanicsHardeningConstant
value = 2.055555555556E-01
[../]
[./t_strength]
type = SolidMechanicsHardeningConstant
value = 100
[../]
[./c_strength]
type = SolidMechanicsHardeningConstant
value = 100
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 10.0
poisson = 0.25
layer_thickness = 10.0
joint_normal_stiffness = 2.5
joint_shear_stiffness = 2.0
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
[../]
[./admissible]
type = ComputeMultipleInelasticCosseratStress
inelastic_models = stress
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakPlaneCosseratStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 0
smoothing_tol = 0
yield_function_tol = 1E-5
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform_cosserat3
csv = true
[]
(modules/solid_mechanics/test/tests/recompute_radial_return/cp_affine_plasticity.i)
# Affine Plasticity Test for Transient Stress Eigenvalues with Stationary Eigenvectors
# This test is taken from K. Jamojjala, R. Brannon, A. Sadeghirad, J. Guilkey,
# "Verification tests in solid mechanics," Engineering with Computers, Vol 31.,
# p. 193-213.
# The test involves applying particular strains and expecting particular stresses.
# The material properties are:
# Yield in shear 165 MPa
# Shear modulus 79 GPa
# Poisson's ratio 1/3
# The strains are:
# Time e11 e22 e33
# 0 0 0 0
# 1 -0.003 -0.003 0.006
# 2 -0.0103923 0 0.0103923
# The expected stresses are:
# sigma11:
# -474*t 0 < t <= 0.201
# -95.26 0.201 < t <= 1
# (189.4+0.1704*sqrt(a)-0.003242*a)
# --------------------------------- 1 < t <= 2
# 1+0.00001712*a
# -189.4 t > 2 (paper erroneously gives a positive value)
#
# sigma22:
# -474*t 0 < t <= 0.201
# -95.26 0.201 < t <= 1
# -(76.87+1.443*sqrt(a)-0.001316*a)
# --------------------------------- 1 < t <= 2 (paper gives opposite sign)
# 1+0.00001712*a
# 76.87 t > 2
#
# sigma33:
# 948*t 0 < t <= 0.201
# 190.5 0.201 < t <= 1
# -(112.5-1.272*sqrt(a)-0.001926*a)
# --------------------------------- 1 < t <= 2 (paper has two sign errors here)
# 1+0.00001712*a
# 112.5 t > 2
#
# where a = exp(12.33*t).
#
# Note: If planning to run this case with strain type ComputeFiniteStrain, the
# displacement function must be adjusted. Instead of
# strain = (l - l0)/l0 = (u+l0 - l0)/l0 = u/l0
# with l0=1.0, we would have
# strain = log(l/l0) = log((u+l0)/l0)
# with l0=1.0. So, for strain = -0.003,
# -0.003 = log((u+l0)/l0) ->
# u = exp(-0.003)*l0 - l0 = -0.0029955044966269995.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
block = '0'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
# This test uses ElementalVariableValue postprocessors on specific
# elements, so element numbering needs to stay unchanged
allow_renumbering = false
[]
[Functions]
[disp_x]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. -0.003 -0.0103923'
[]
[disp_y]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. -0.003 0.'
[]
[disp_z]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 0.006 0.0103923'
[]
[stress_xx]
type = ParsedFunction
# The paper gives 0.201 as the time at initial yield, but 0.20097635952803425 is the exact value.
# The paper gives -95.26 MPa as the stress at yield, but -95.26279441628823 is the exact value.
# The paper gives 12.33 as the factor in the exponential, but 12.332921390339125 is the exact value.
# 189.409039923814000, 0.170423791206825, -0.003242011311945, 1.711645501845780E-05 - exact values
symbol_names = 'timeAtYield stressAtYield expFac a b c d'
symbol_values = '0.20097635952803425 -95.26279441628823 12.332921390339125 189.409039923814000 0.170423791206825 -0.003242011311945 1.711645501845780E-05'
value = '1e6*
if(t<=timeAtYield, -474*t,
if(t<=1, stressAtYield,
(a+b*sqrt(exp(expFac*t))+c*exp(expFac*t))/(1.0+d*exp(expFac*t))))' # tends to -a
[]
[stress_yy]
type = ParsedFunction
# The paper gives 0.201 as the time at initial yield, but 0.20097635952803425 is the exact value.
# the paper gives -95.26 MPa as the stress at yield, but -95.26279441628823 is the exact value.
# The paper gives 12.33 as the factor in the exponential, but 12.332921390339125 is the exact value.
# -76.867432297315000, -1.442488120272900, 0.001315697947301, 1.711645501845780E-05 - exact values
symbol_names = 'timeAtYield stressAtYield expFac a b c d'
symbol_values = '0.20097635952803425 -95.26279441628823 12.332921390339125 -76.867432297315000 -1.442488120272900 0.001315697947301 1.711645501845780E-05'
value = '1e6*
if(t<=timeAtYield, -474*t,
if(t<=1, stressAtYield,
(a+b*sqrt(exp(expFac*t))+c*exp(expFac*t))/(1.0+d*exp(expFac*t))))' # tends to -a
[]
[stress_zz]
type = ParsedFunction
# The paper gives 0.201 as the time at initial yield, but 0.20097635952803425 is the exact value.
# the paper gives 190.5 MPa as the stress at yield, but 190.52558883257645 is the exact value.
# The paper gives 12.33 as the factor in the exponential, but 12.332921390339125 is the exact value.
# -112.541607626499000, 1.272064329066080, 0.001926313364644, 1.711645501845780E-05 - exact values
symbol_names = 'timeAtYield stressAtYield expFac a b c d'
symbol_values = '0.20097635952803425 190.52558883257645 12.332921390339125 -112.541607626499000 1.272064329066080 0.001926313364644 1.711645501845780E-05'
value = '1e6*
if(t<=timeAtYield, 948*t,
if(t<=1, stressAtYield,
(a+b*sqrt(exp(expFac*t))+c*exp(expFac*t))/(1.0+d*exp(expFac*t))))' # tends to -a
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[]
[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_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = vonmisesStress
execute_on = 'timestep_end'
[../]
[./plastic_strain_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
[../]
[./plastic_strain_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
[../]
[./plastic_strain_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_zz
index_i = 2
index_j = 2
execute_on = 'timestep_end'
[../]
[]
[BCs]
[fixed_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[fixed_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[fixed_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[disp_x]
type = FunctionDirichletBC
variable = disp_x
boundary = right
function = disp_x
[]
[disp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = disp_y
[]
[disp_z]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = disp_z
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 210666666666.666667
poissons_ratio = 0.3333333333333333
[../]
[./strain]
type = ComputeIncrementalStrain
[../]
[creep]
type = PowerLawCreepStressUpdate
coefficient = 0
n_exponent = 1
m_exponent = 1
activation_energy = 0
temperature = 1
[]
[isotropic_plasticity]
type = IsotropicPlasticityStressUpdate
yield_stress = 285788383.2488647 # = sqrt(3)*165e6 = sqrt(3) * yield in shear
hardening_constant = 0.0
[]
[radial_return_stress]
type = ComputeCreepPlasticityStress
tangent_operator = elastic
creep_model = creep
plasticity_model = isotropic_plasticity
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 0.01 # use 0.0001 for a nearly exact match
end_time = 2.0
[]
[Postprocessors]
[analytic_xx]
type = FunctionValuePostprocessor
function = stress_xx
[]
[analytic_yy]
type = FunctionValuePostprocessor
function = stress_yy
[]
[analytic_zz]
type = FunctionValuePostprocessor
function = stress_zz
[]
[stress_xx]
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy]
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz]
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[stress_xx_l2_error]
type = ElementL2Error
variable = stress_xx
function = stress_xx
[]
[stress_yy_l2_error]
type = ElementL2Error
variable = stress_yy
function = stress_yy
[]
[stress_zz_l2_error]
type = ElementL2Error
variable = stress_zz
function = stress_zz
[]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/brick_2/brick2_template2.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = brick2_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
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+7
al_penetration_tolerance = 1e-8
[../]
[]
(modules/xfem/test/tests/crack_tip_enrichment/edge_crack_2d.i)
[XFEM]
qrule = volfrac
output_cut_plane = true
use_crack_tip_enrichment = true
crack_front_definition = crack_tip
enrichment_displacements = 'enrich1_x enrich2_x enrich3_x enrich4_x enrich1_y enrich2_y enrich3_y enrich4_y'
displacements = 'disp_x disp_y'
cut_off_boundary = all
cut_off_radius = 0.2
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.0 1.0 0.5 1.0'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[./crack_tip]
type = CrackFrontDefinition
crack_direction_method = CrackDirectionVector
crack_front_points = '0.5 1.0 0'
crack_direction_vector = '1 0 0'
2d = true
axis_2d = 2
[../]
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 9
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 2.0
elem_type = QUAD4
[]
[./all_node]
type = BoundingBoxNodeSetGenerator
new_boundary = 'all'
top_right = '1 2 0'
bottom_left = '0 0 0'
input = gen
[../]
[./right_bottom_node]
type = ExtraNodesetGenerator
new_boundary = 'right_bottom_node'
coord = '1.0 0.0'
input = all_node
[../]
[./right_top_node]
type = ExtraNodesetGenerator
new_boundary = 'right_top_node'
coord = '1.0 2.0'
input = right_bottom_node
[../]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_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
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = vonmisesStress
execute_on = timestep_end
[../]
[]
[BCs]
[./top_y]
type = Pressure
variable = disp_y
boundary = top
factor = -1
displacements = 'disp_x disp_y'
[../]
[./bottom_y]
type = Pressure
variable = disp_y
boundary = bottom
factor = -1
displacements = 'disp_x disp_y'
[../]
[./fix_y]
type = DirichletBC
boundary = right_bottom_node
variable = disp_y
value = 0.0
[../]
[./fix_x]
type = DirichletBC
boundary = right_bottom_node
variable = disp_x
value = 0.0
[../]
[./fix_x2]
type = DirichletBC
boundary = right_top_node
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./strain]
type = ComputeCrackTipEnrichmentSmallStrain
displacements = 'disp_x disp_y'
crack_front_definition = crack_tip
enrichment_displacements = 'enrich1_x enrich2_x enrich3_x enrich4_x enrich1_y enrich2_y enrich3_y enrich4_y'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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'
# Since we do not sub-triangularize the tip element,
# we need to use higher order quadrature rule to improve
# integration accuracy.
# Here second = SECOND is for regression test only.
# However, order = SIXTH is recommended.
[./Quadrature]
type = GAUSS
order = SECOND
[../]
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 10
l_tol = 1e-4
# controls for nonlinear iterations
nl_max_its = 100
nl_rel_tol = 1e-12 #11
nl_abs_tol = 1e-12 #12
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
dtmin = 1.0
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
file_base = edge_crack_2d_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_no_negative_aprismatic.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[center_node]
type = BoundingBoxNodeSetGenerator
input = cube
new_boundary = 'center_point'
top_right = '0.51 0.51 0'
bottom_left = '0.49 0.49 0'
[]
[back_edge_y]
type = BoundingBoxNodeSetGenerator
input = center_node
new_boundary = 'back_edge_y'
bottom_left = '0.9 0.5 0'
top_right = '1.1 0.5 0'
[]
[back_edge_x]
type = BoundingBoxNodeSetGenerator
input = back_edge_y
new_boundary = back_edge_x
bottom_left = '0.5 0.9 0'
top_right = '0.5 1.0 0'
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_2]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_12]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_13]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_0]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_1]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_2]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_12]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_13]
order = CONSTANT
family = MONOMIAL
[]
[substructure_density]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_12]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_13]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = resolved_shear_stress_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_1]
type = MaterialStdVectorAux
variable = resolved_shear_stress_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[tau_2]
type = MaterialStdVectorAux
variable = resolved_shear_stress_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[tau_12]
type = MaterialStdVectorAux
variable = resolved_shear_stress_12
property = applied_shear_stress
index = 12
execute_on = timestep_end
[]
[tau_13]
type = MaterialStdVectorAux
variable = resolved_shear_stress_13
property = applied_shear_stress
index = 13
execute_on = timestep_end
[]
[forest_dislocations_0]
type = MaterialStdVectorAux
variable = forest_dislocations_0
property = forest_dislocation_density
index = 0
execute_on = timestep_end
[]
[forest_dislocations_1]
type = MaterialStdVectorAux
variable = forest_dislocations_1
property = forest_dislocation_density
index = 1
execute_on = timestep_end
[]
[forest_dislocations_2]
type = MaterialStdVectorAux
variable = forest_dislocations_2
property = forest_dislocation_density
index = 2
execute_on = timestep_end
[]
[forest_dislocations_12]
type = MaterialStdVectorAux
variable = forest_dislocations_12
property = forest_dislocation_density
index = 12
execute_on = timestep_end
[]
[forest_dislocations_13]
type = MaterialStdVectorAux
variable = forest_dislocations_13
property = forest_dislocation_density
index = 13
execute_on = timestep_end
[]
[substructure_density]
type = MaterialRealAux
variable = substructure_density
property = total_substructure_density
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_1]
type = MaterialStdVectorAux
variable = slip_resistance_1
property = slip_resistance
index = 1
execute_on = timestep_end
[]
[slip_resistance_2]
type = MaterialStdVectorAux
variable = slip_resistance_2
property = slip_resistance
index = 2
execute_on = timestep_end
[]
[slip_resistance_12]
type = MaterialStdVectorAux
variable = slip_resistance_12
property = slip_resistance
index = 12
execute_on = timestep_end
[]
[slip_resistance_13]
type = MaterialStdVectorAux
variable = slip_resistance_13
property = slip_resistance
index = 13
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'center_point back_edge_y'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'center_point back_edge_x'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
euler_angle_1 = 164.5
euler_angle_2 = 90.0
euler_angle_3 = 15.3
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0
zero_tol = 1.1
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '0.5 5'
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '-1e5 -2e7'
normalized_slip_activiation_energy_per_mode = '4e-3 3e-2'
slip_energy_proportionality_factor_per_mode = '330 100'
substructure_rate_coefficient_per_mode = '400 100'
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '2e-3 2e-3' #minimize impact
grain_size = 20.0e-3 #20 microns
[]
[]
[Postprocessors]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[tau_0]
type = ElementAverageValue
variable = resolved_shear_stress_0
[]
[tau_1]
type = ElementAverageValue
variable = resolved_shear_stress_1
[]
[tau_2]
type = ElementAverageValue
variable = resolved_shear_stress_2
[]
[tau_12]
type = ElementAverageValue
variable = resolved_shear_stress_12
[]
[tau_13]
type = ElementAverageValue
variable = resolved_shear_stress_13
[]
[forest_dislocation_0]
type = ElementAverageValue
variable = forest_dislocations_0
[]
[forest_dislocation_1]
type = ElementAverageValue
variable = forest_dislocations_1
[]
[forest_dislocation_2]
type = ElementAverageValue
variable = forest_dislocations_2
[]
[forest_dislocation_12]
type = ElementAverageValue
variable = forest_dislocations_12
[]
[forest_dislocation_13]
type = ElementAverageValue
variable = forest_dislocations_13
[]
[substructure_density]
type = ElementAverageValue
variable = substructure_density
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_1]
type = ElementAverageValue
variable = slip_resistance_1
[]
[slip_resistance_2]
type = ElementAverageValue
variable = slip_resistance_2
[]
[slip_resistance_12]
type = ElementAverageValue
variable = slip_resistance_12
[]
[slip_resistance_13]
type = ElementAverageValue
variable = slip_resistance_13
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
nl_max_its = 20
l_max_its = 50
dt = 0.00375
dtmin = 1.0e-4
dtmax = 0.1
num_steps = 9
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/uni_axial2_planar.i)
# same as uni_axial2 but with planar mohr-coulomb
[Mesh]
type = FileMesh
file = quarter_hole.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./zmin_zzero]
type = DirichletBC
variable = disp_z
boundary = 'zmin'
value = '0'
[../]
[./xmin_xzero]
type = DirichletBC
variable = disp_x
boundary = 'xmin'
value = '0'
[../]
[./ymin_yzero]
type = DirichletBC
variable = disp_y
boundary = 'ymin'
value = '0'
[../]
[./ymax_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'ymax'
function = '-1E-4*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0.005 0.02 0.002'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0.005 0.02 0.002'
variable = yield_fcn
[../]
[]
[UserObjects]
[./coh]
type = SolidMechanicsHardeningConstant
value = 1E7
[../]
[./fric]
type = SolidMechanicsHardeningConstant
value = 2
convert_to_radians = true
[../]
[./dil]
type = SolidMechanicsHardeningConstant
value = 2
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = coh
friction_angle = fric
dilation_angle = dil
yield_function_tolerance = 1.0 # THIS IS HIGHER THAN THE SMOOTH CASE TO AVOID PRECISION-LOSS PROBLEMS!
shift = 1.0
internal_constraint_tolerance = 1E-9
use_custom_returnMap = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric_isotropic
C_ijkl = '0 5E9' # young = 10Gpa, poisson = 0.0
[../]
[./strain]
type = ComputeIncrementalStrain
block = 1
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 1
ep_plastic_tolerance = 1E-9
plastic_models = mc
max_NR_iterations = 100
deactivation_scheme = 'safe'
min_stepsize = 1
max_stepsize_for_dumb = 1
debug_fspb = crash
[../]
[]
# Preconditioning and Executioner options kindly provided by Andrea
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
end_time = 0.5
dt = 0.1
solve_type = NEWTON
type = Transient
[]
[Outputs]
file_base = uni_axial2_planar
[./exodus]
type = Exodus
hide = 'stress_xx stress_xy stress_xz stress_yy stress_yz stress_zz yield_fcn s_xx s_xy s_xz s_yy s_yz s_zz f'
[../]
[./csv]
type = CSV
time_step_interval = 1
[../]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/planar_hard2.i)
# apply uniform stretches in x, y and z directions.
# let friction_angle = 60deg, friction_angle_residual=10deg, friction_angle_rate = 0.5E4
# With cohesion = C, friction_angle = phi, the
# algorithm should return to
# sigma_m = C*Cos(phi)/Sin(phi)
# Or, when T=C,
# phi = arctan(C/sigma_m)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningExponential
value_0 = 1.04719755 # 60deg
value_residual = 0.17453293 # 10deg
rate = 0.5E4
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
shift = 1E-12
use_custom_returnMap = true
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.0E7 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-12
plastic_models = mc
[../]
[]
[Executioner]
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = planar_hard2
exodus = false
[./csv]
type = CSV
execute_on = timestep_end
[../]
[]
(modules/combined/test/tests/beam_eigenstrain_transfer/subapp_err_4.i)
# SubApp with 2D model to test multi app vectorpostprocessor to aux var transfer
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 5
xmin = 0.0
xmax = 0.5
ymin = 0.0
ymax = 0.150080
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temp]
[../]
[./axial_strain]
order = FIRST
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(500.0)+300.0
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./axial_strain]
type = RankTwoAux
variable = axial_strain
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[VectorPostprocessors]
[./axial_str]
type = LineValueSampler
warn_discontinuous_face_values = false
start_point = '0.5 0.0 0.0'
end_point = '0.5 0.1 0.0'
variable = axial_strain
num_points = 21
sort_by = 'id'
[../]
[]
[Postprocessors]
[./end_disp]
type = PointValue
variable = disp_y
point = '0.5 0.150080 0.0'
[../]
[]
(modules/solid_mechanics/test/tests/shell/static/straintest_shear.i)
# Test for the shear stress and strain output for 2D planar shell with uniform mesh.
# A cantiliver beam of length 10 m and cross-section 1.5 m x 0.1 m having
# Young's Modulus of 5 N/mm^2 and poissons ratio of 0 is subjected to shear
# displacement of 0.05 m at the free end.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 1
xmin = 0.0
xmax = 10
ymin = 0.0
ymax = 1.5
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[rot_x]
order = FIRST
family = LAGRANGE
[]
[rot_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
variable = stress_xx
selected_qp = 0
rank_two_tensor = global_stress_t_points_1
index_i = 0
index_j = 0
[]
[strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_global_strain_t_points_1
selected_qp = 0
index_i = 0
index_j = 0
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_1
selected_qp = 0
index_i = 1
index_j = 1
[]
[strain_yy]
type = RankTwoAux
variable = strain_yy
rank_two_tensor = total_global_strain_t_points_1
selected_qp = 0
index_i = 1
index_j = 1
[]
[stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = global_stress_t_points_1
selected_qp = 0
index_i = 0
index_j = 1
[]
[strain_xy]
type = RankTwoAux
variable = strain_xy
rank_two_tensor = total_global_strain_t_points_1
selected_qp = 0
index_i = 0
index_j = 1
[]
[stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_1
selected_qp = 0
index_i = 1
index_j = 2
[]
[strain_yz]
type = RankTwoAux
variable = strain_yz
rank_two_tensor = total_global_strain_t_points_1
selected_qp = 0
index_i = 1
index_j = 2
[]
[stress_xz]
type = RankTwoAux
variable = stress_xz
rank_two_tensor = global_stress_t_points_1
selected_qp = 0
index_i = 0
index_j = 2
[]
[strain_xz]
type = RankTwoAux
variable = strain_yz
rank_two_tensor = total_global_strain_t_points_1
selected_qp = 0
index_i = 0
index_j = 2
[]
[]
[BCs]
[fixx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[fixy]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[]
[fixz]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[]
[fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[]
[fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[]
[disp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'right'
function = displacement
[]
[]
[Functions]
[displacement]
type = PiecewiseLinear
x = '0.0 1.0'
y = '0.0 0.05'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
line_search = 'none'
nl_rel_tol = 1e-12
nl_abs_tol = 1e-14
dt = 1
dtmin = 1
end_time = 1
[]
[Kernels]
[solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[]
[solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[]
[solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[]
[solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[]
[solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[]
[]
[Materials]
[elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 4.0e6
poissons_ratio = 0.0
block = 0
through_thickness_order = SECOND
[]
[strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[]
[stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[]
[]
[Postprocessors]
[stress_xy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_xy
[]
[strain_xy_el_0]
type = ElementalVariableValue
elementid = 0
variable = strain_xy
[]
[stress_xy_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_xy
[]
[strain_xy_el_1]
type = ElementalVariableValue
elementid = 1
variable = strain_xy
[]
[stress_xy_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_xy
[]
[strain_xy_el_2]
type = ElementalVariableValue
elementid = 2
variable = strain_xy
[]
[stress_xy_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_xy
[]
[strain_xy_el_3]
type = ElementalVariableValue
elementid = 3
variable = strain_xy
[]
[stress_xx_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_xx
[]
[strain_xx_el_0]
type = ElementalVariableValue
elementid = 0
variable = strain_xx
[]
[stress_xx_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_xx
[]
[strain_xx_el_1]
type = ElementalVariableValue
elementid = 1
variable = strain_xx
[]
[stress_xx_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_xx
[]
[strain_xx_el_2]
type = ElementalVariableValue
elementid = 2
variable = strain_xx
[]
[stress_xx_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_xx
[]
[strain_xx_el_3]
type = ElementalVariableValue
elementid = 3
variable = strain_xx
[]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/ring_4/ring4_template2.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring4_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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-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 = 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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/line_material_rank_two_sampler/rank_two_sampler.i)
[GlobalParams]
displacements = 'x_disp y_disp z_disp'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 3
ny = 3
nz = 3
elem_type = HEX
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1.'
y = '0. 1.'
scale_factor = 1e-6
[../]
[]
[Variables]
[./x_disp]
order = FIRST
family = LAGRANGE
[../]
[./y_disp]
order = FIRST
family = LAGRANGE
[../]
[./z_disp]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[]
[VectorPostprocessors]
[./stress_xx]
type = LineMaterialRankTwoSampler
start = '0.1667 0.4 0.45'
end = '0.8333 0.6 0.55'
property = stress
index_i = 0
index_j = 0
sort_by = id
[../]
[]
[Kernels]
[SolidMechanics]
use_displaced_mesh = true
[../]
[]
[BCs]
[./front]
type = FunctionDirichletBC
variable = z_disp
boundary = 5
function = rampConstant
[../]
[./back_x]
type = DirichletBC
variable = x_disp
boundary = 0
value = 0.0
[../]
[./back_y]
type = DirichletBC
variable = y_disp
boundary = 0
value = 0.0
[../]
[./back_z]
type = DirichletBC
variable = z_disp
boundary = 0
value = 0.0
[../]
[]
[Materials]
[./elast_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = .3
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_max_its = 100
start_time = 0.0
num_steps = 99999
end_time = 1.0
dt = 0.1
[]
[Outputs]
file_base = rank_two_sampler_out
csv = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/updated/special/rotate.i)
# Simple 3D test
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Kernels]
[sdx]
type = UpdatedLagrangianStressDivergence
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[sdy]
type = UpdatedLagrangianStressDivergence
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[sdz]
type = UpdatedLagrangianStressDivergence
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[angles]
type = PiecewiseLinear
x = '0 1 2'
y = '0 0 1.5707963'
[]
[stretch]
type = PiecewiseLinear
x = '0 1 2'
y = '0 0.1 0.1'
[]
[move_y]
type = ParsedFunction
expression = 'y*cos(theta) - z * (1 + a)*sin(theta) - y'
symbol_names = 'a theta'
symbol_values = 'stretch angles'
[]
[move_z]
type = ParsedFunction
expression = 'y*sin(theta) + z*(1+a)*cos(theta) - z'
symbol_names = 'a theta'
symbol_values = 'stretch angles'
[]
[dts]
type = PiecewiseConstant
x = '0 1 2'
y = '0.1 0.001 0.001'
direction = 'LEFT_INCLUSIVE'
[]
[]
[BCs]
[fix]
type = DirichletBC
preset = true
value = 0.0
boundary = left
variable = disp_x
[]
[front_y]
type = FunctionDirichletBC
boundary = front
variable = disp_y
function = move_y
preset = true
[]
[back_y]
type = FunctionDirichletBC
boundary = back
variable = disp_y
function = move_y
preset = true
[]
[front_z]
type = FunctionDirichletBC
boundary = front
variable = disp_z
function = move_z
preset = true
[]
[back_z]
type = FunctionDirichletBC
boundary = back
variable = disp_z
function = move_z
preset = true
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1000.0
poissons_ratio = 0.25
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = stress_xx
[]
[syy]
type = ElementAverageValue
variable = stress_yy
[]
[szz]
type = ElementAverageValue
variable = stress_zz
[]
[syz]
type = ElementAverageValue
variable = stress_yz
[]
[sxz]
type = ElementAverageValue
variable = stress_xz
[]
[sxy]
type = ElementAverageValue
variable = stress_xy
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-6
start_time = 0.0
end_time = 2.0
[TimeStepper]
type = FunctionDT
function = dts
interpolate = False
[]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_011orientation.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[lagrangian_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[lagrangian_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[gss]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[lagrangian_strain_zz]
type = RankTwoAux
variable = lagrangian_strain_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[lagrangian_strain_yy]
type = RankTwoAux
rank_two_tensor = total_lagrangian_strain
variable = lagrangian_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
euler_angle_1 = 120.0
euler_angle_2 = 125.264
euler_angle_3 = 45.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[lagrangian_strain_yy]
type = ElementAverageValue
variable = lagrangian_strain_yy
[]
[lagrangian_strain_zz]
type = ElementAverageValue
variable = lagrangian_strain_zz
[]
[gss]
type = ElementAverageValue
variable = gss
[]
[slip_increment]
type = ElementAverageValue
variable = slip_increment
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 10.0
num_steps = 10
[]
[Outputs]
csv = true
[]
(modules/combined/test/tests/thermo_mech/youngs_modulus_function_temp.i)
# ---------------------------------------------------------------------------
# This test is designed to verify the variable elasticity tensor functionality in the
# ComputeFiniteStrainElasticStress class with the elasticity_tensor_has_changed flag
# by varying the young's modulus with temperature. A constant strain is applied
# to the mesh in this case, and the stress varies with the changing elastic constants.
#
# Geometry: A single element cube in symmetry boundary conditions and pulled
# at a constant displacement to create a constant strain in the x-direction.
#
# Temperature: The temperature varies from 400K to 700K in this simulation by
# 100K each time step. The temperature is held constant in the last
# timestep to ensure that the elasticity tensor components are constant
# under constant temperature.
#
# Results: Because Poisson's ratio is set to zero, only the stress along the x
# axis is non-zero. The stress changes with temperature.
#
# Temperature(K) strain_{xx}(m/m) Young's Modulus(Pa) stress_{xx}(Pa)
# 400 0.001 10.0e6 1.0e4
# 500 0.001 10.0e6 1.0e4
# 600 0.001 9.94e6 9.94e3
# 700 0.001 9.93e6 9.93e3
#
# The tensor mechanics results align exactly with the analytical results above
# when this test is run with ComputeIncrementalStrain. When the test is
# run with ComputeFiniteStrain, a 0.05% discrepancy between the analytical
# strains and the simulation strain results is observed, and this discrepancy
# is carried over into the calculation of the elastic stress.
#-------------------------------------------------------------------------
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 400
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_function]
type = PiecewiseLinear
x = '1 4'
y = '400 700'
[../]
[]
[Kernels]
[./heat]
type = Diffusion
variable = temp
[../]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./elastic_strain_xx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./u_left_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./u_back_fix]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./u_pull_right]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.001
[../]
[./temp_bc_1]
type = FunctionDirichletBC
variable = temp
preset = false
boundary = '1 2 3 4'
function = temperature_function
[../]
[]
[Materials]
[./youngs_modulus]
type = PiecewiseLinearInterpolationMaterial
xy_data = '0 10e+6
599.9999 10e+6
600 9.94e+6
99900 10e3'
property = youngs_modulus
variable = temp
[../]
[./elasticity_tensor]
type = ComputeVariableIsotropicElasticityTensor
args = temp
youngs_modulus = youngs_modulus
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeIncrementalStrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
end_time = 5
[]
[Postprocessors]
[./elastic_strain_xx]
type = ElementAverageValue
variable = elastic_strain_xx
[../]
[./elastic_stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./temp]
type = AverageNodalVariableValue
variable = temp
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/umat/print_c/print_compare_c.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t/1000
[]
[]
[AuxVariables]
[strain_xy]
family = MONOMIAL
order = FIRST
[]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 1
index_j = 0
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[]
[NodalKernels]
[force_x]
type = ConstantRate
variable = disp_x
boundary = top
rate = 1.0e0
[]
[]
[Materials]
# 1. Active for UMAT verification
[umat_c]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_print_c'
num_state_vars = 0
use_one_based_indexing = true
[]
[umat_f]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic'
num_state_vars = 0
use_one_based_indexing = true
[]
[umat_eigen]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_print_eigen'
num_state_vars = 0
use_one_based_indexing = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 10
dt = 10.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/ring_3/ring3_template2.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring3_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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'
# petsc_options = '-mat_superlu_dist_iterrefine -mat_superlu_dist_replacetinypivot'
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-5
[]
[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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/mean_cap_TC/small_deform7.i)
# apply nonuniform stretch in x, y and z directions using
# Lame lambda = 0.7E7, Lame mu = 1.0E7,
# trial_stress(0, 0) = 2.9
# trial_stress(1, 1) = 10.9
# trial_stress(2, 2) = 14.9
# With tensile_strength = 2, decaying to zero at internal parameter = 4E-7
# via a Cubic, the algorithm should return to:
# internal parameter = 2.26829E-7
# trace(stress) = 0.799989 = tensile_strength
# stress(0, 0) = -6.4
# stress(1, 1) = 1.6
# stress(2, 2) = 5.6
# THEN apply a nonuniform compression in x, y, and z so that
# trial_stress(0, 0)
# With compressive_strength = -1, decaying to -0.5 at internal parameter 1E-8
# via a Cubic, the algorithm should return to
# trial_stress(0, 0) = -3.1
# trial_stress(1, 1) = -3.1
# trial_stress(2, 2) = 2.9
# the algorithm should return to trace(stress) = -0.5 = compressive_strength
# stress(0, 0) = -2.1667
# stress(1, 1) = -2.1667
# stress(2, 2) = 3.8333
# and internal parameter = 2.0406E-7
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = 'if(t<1.5,-1E-7*x,1E-7*x)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = 'if(t<1.5,3E-7*y,1E-7*y)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = 'if(t<1.5,5E-7*z,4E-7*z)'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[./intnl]
type = PointValue
point = '0 0 0'
variable = intnl
[../]
[]
[UserObjects]
[./tensile_strength]
type = SolidMechanicsHardeningCubic
value_0 = 2
value_residual = 0
internal_limit = 4E-7
[../]
[./compressive_strength]
type = SolidMechanicsHardeningCubic
value_0 = -1
value_residual = -0.5
internal_limit = 1E-8
[../]
[./cap]
type = SolidMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
use_custom_returnMap = true
use_custom_cto = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-11
plastic_models = cap
[../]
[]
[Executioner]
end_time = 2
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform7
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/exception.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
[../]
[./uy]
[../]
[./uz]
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./pk2]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./slip_increment]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.1*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = pk2
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[../]
[./slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_rate_gss
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[../]
[]
[UserObjects]
[./slip_rate_gss]
type = CrystalPlasticitySlipRateGSS
variable_size = 12
slip_sys_file_name = input_slip_sys.txt
num_slip_sys_flowrate_props = 2
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 12
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 12
groups = '0 4 8 12'
group_values = '60.8 60.8 60.8'
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_gss]
type = CrystalPlasticityStateVarRateComponentGSS
variable_size = 12
hprops = '1.0 541.5 109.8 2.5'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
block = 0
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'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./pk2]
type = ElementAverageValue
variable = pk2
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[./slip_increment]
type = ElementAverageValue
variable = slip_increment
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.01
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_increase.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX27
[]
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[linear_void_strain]
order = CONSTANT
family = MONOMIAL
[]
[e_void_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_void_yy]
order = CONSTANT
family = MONOMIAL
[]
[e_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[pk2_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[tau_0]
order = FIRST
family = MONOMIAL
[]
[tau_10]
order = FIRST
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[Functions]
[temperature_ramp]
type = ParsedFunction
expression = '600.0 + t'
[]
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = 'temperature_ramp'
execute_on = timestep_begin
[]
[linear_void_strain]
type = MaterialRealAux
variable = linear_void_strain
property = equivalent_linear_change
execute_on = timestep_end
[]
[e_void_xx]
type = RankTwoAux
variable = e_void_xx
rank_two_tensor = void_eigenstrain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_void_yy]
type = RankTwoAux
variable = e_void_yy
rank_two_tensor = void_eigenstrain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[e_void_zz]
type = RankTwoAux
variable = e_void_zz
rank_two_tensor = void_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f_void_zz]
type = RankTwoAux
variable = f_void_zz
rank_two_tensor = volumetric_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[pk2_zz]
type = RankTwoAux
variable = pk2_zz
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = tau_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_10]
type = MaterialStdVectorAux
variable = tau_10
property = applied_shear_stress
index = 10
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[hold_front]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.98e5 1.25e5 1.25e5 1.98e5 1.25e5 1.98e5 1.22e5 1.22e5 1.22e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = void_eigenstrain
tan_mod_type = exact
line_search_method = CUT_HALF
use_line_search = true
maximum_substep_iteration = 5
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[void_eigenstrain]
type = ComputeCrystalPlasticityVolumetricEigenstrain
eigenstrain_name = void_eigenstrain
deformation_gradient_name = volumetric_deformation_gradient
mean_spherical_void_radius = void_radius
spherical_void_number_density = void_density
[]
[void_density]
type = ParsedMaterial
property_name = void_density
coupled_variables = temperature
expression = '1.0e8 * (temperature - 600.0)'
[]
[void_radius]
type = GenericConstantMaterial
prop_names = void_radius
prop_values = '1.0e-6' ##1 nm avg particle radius
[]
[]
[Postprocessors]
[linear_void_strain]
type = ElementAverageValue
variable = linear_void_strain
[]
[e_void_xx]
type = ElementAverageValue
variable = e_void_xx
[]
[e_void_yy]
type = ElementAverageValue
variable = e_void_yy
[]
[e_void_zz]
type = ElementAverageValue
variable = e_void_zz
[]
[f_void_zz]
type = ElementAverageValue
variable = f_void_zz
[]
[density]
type = ElementAverageMaterialProperty
mat_prop = void_density
execute_on = TIMESTEP_END
[]
[radius]
type = ElementAverageMaterialProperty
mat_prop = void_radius
execute_on = TIMESTEP_END
[]
[pk2_zz]
type = ElementAverageValue
variable = pk2_zz
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[tau_0]
type = ElementAverageValue
variable = tau_0
[]
[tau_10]
type = ElementAverageValue
variable = tau_10
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
line_search = 'none'
nl_abs_tol = 1e-12
nl_rel_tol = 1e-8
nl_forced_its = 1
dt = 1.0
dtmin = 0.1
end_time = 5.0
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/small_deform1_uo.i)
# apply uniform stretch in x, y and z directions.
# With cohesion = 10, friction_angle = 60deg, tip_smoother = 4, the
# algorithm should return to
# sigma_m = (10*Cos(60) - 4)/Sin(60) = 1.1547
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 60
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4
mc_edge_smoother = 25
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform1_uo
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/multi/three_surface13.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 3
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 2.0E-6m in y direction and 0E-6 in z direction.
# trial stress_yy = 2 and stress_zz = 0
#
# Then SimpleTester1 should activate and the algorithm will return to
# stress_yy=1
# internal1 should be 1
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2.0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface13
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/ad_uniaxial_y.i)
# This test simulates uniaxial tensile loading in y-direction.
# The slope of the stress vs. plastic strain is evaluated from
# the simulation and compared with the value calculated using
# the analytical expression. This test uses a material with li-
# near strain hardening.
# For uniaxial tensile loading in y-direction, the slope of the
# stress vs. plastic strain is (2K / (F + H)) where K is the ha-
# rdening constant, and F & H are the Hill's constant. For deta-
# ils on the derivation of the expression for slope please refer
# the documentation of this material.
# Slope obtained from this MOOSE test simulation:
# = 1.521 x 10^9
# Slope obtained from analytical expression:
# = 2 x 10^9 / (0.6 + 0.7) = 1.538 x 10^9
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[sigma_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[sigma_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1e1 1e8'
y = '0 -4e8 -4e8'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_yy stress_yy strain_yy plastic_strain_yy'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeElasticityTensor
fill_method = orthotropic
C_ijkl = '10.0e10 15.0e10 20.0e10 2.0e10 2.0e10 2.0e10 0.2 0.2 0.2 0.13333333333333333 0.1 0.15'
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_plasticity"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.6 0.4 0.7 1.5 1.5 1.5"
[]
[trial_plasticity]
type = ADHillElastoPlasticityStressUpdate
hardening_constant = 10e9
yield_stress = 60e6
absolute_tolerance = 1e-15
relative_tolerance = 1e-13
# internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-5
# internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[Pressure]
[Side1]
boundary = top
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-12
nl_abs_tol = 1.0e-14
l_max_its = 90
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 0.1
time_t = '0 2.5 10'
time_dt = '0.1 1.0e-2 1.0e-2'
[]
start_time = 0
end_time = 10.0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[plasticity_strain_yy]
type = ElementalVariableValue
variable = plastic_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[elastic_strain_yy]
type = ElementalVariableValue
variable = elastic_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[strain_yy]
type = ElementalVariableValue
variable = strain_yy
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[sigma_yy]
type = ElementalVariableValue
variable = stress_yy
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[]
[Outputs]
csv = true
perf_graph = true
[]
(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
[../]
[]
(modules/combined/examples/phase_field-mechanics/hex_grain_growth_2D_eldrforce.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 20
ny = 17
nz = 0
xmax = 1000
ymax = 866
zmax = 0
elem_type = QUAD4
uniform_refine = 2
[]
[GlobalParams]
op_num = 3
var_name_base = gr
[]
[Variables]
[./PolycrystalVariables]
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[UserObjects]
[./hex_ic]
type = PolycrystalHex
coloring_algorithm = bt
grain_num = 36
x_offset = 0.0
output_adjacency_matrix = true
[../]
[./euler_angle_file]
type = EulerAngleFileReader
file_name = grn_36_test2_2D.tex
[../]
[./grain_tracker]
type = GrainTrackerElasticity
threshold = 0.2
compute_var_to_feature_map = true
execute_on = 'initial timestep_begin'
flood_entity_type = ELEMENTAL
fill_method = symmetric9
C_ijkl = '1.27e5 0.708e5 0.708e5 1.27e5 0.708e5 1.27e5 0.7355e5 0.7355e5 0.7355e5'
euler_angle_provider = euler_angle_file
[../]
[]
[ICs]
[./PolycrystalICs]
[./PolycrystalColoringIC]
polycrystal_ic_uo = hex_ic
[../]
[../]
[]
[AuxVariables]
[./bnds]
order = FIRST
family = LAGRANGE
[../]
[./elastic_strain11]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain22]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain12]
order = CONSTANT
family = MONOMIAL
[../]
[./unique_grains]
order = CONSTANT
family = MONOMIAL
[../]
[./var_indices]
order = CONSTANT
family = MONOMIAL
[../]
[./C1111]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises_stress]
order = CONSTANT
family = MONOMIAL
[../]
[./euler_angle]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./PolycrystalKernel]
[../]
[./PolycrystalElasticDrivingForce]
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./BndsCalc]
type = BndsCalcAux
variable = bnds
execute_on = 'initial timestep_end'
[../]
[./elastic_strain11]
type = RankTwoAux
variable = elastic_strain11
rank_two_tensor = elastic_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./elastic_strain22]
type = RankTwoAux
variable = elastic_strain22
rank_two_tensor = elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./elastic_strain12]
type = RankTwoAux
variable = elastic_strain12
rank_two_tensor = elastic_strain
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./unique_grains]
type = FeatureFloodCountAux
variable = unique_grains
execute_on = timestep_end
flood_counter = grain_tracker
field_display = UNIQUE_REGION
[../]
[./var_indices]
type = FeatureFloodCountAux
variable = var_indices
execute_on = timestep_end
flood_counter = grain_tracker
field_display = VARIABLE_COLORING
[../]
[./C1111]
type = RankFourAux
variable = C1111
rank_four_tensor = elasticity_tensor
index_l = 0
index_j = 0
index_k = 0
index_i = 0
execute_on = timestep_end
[../]
[./vonmises_stress]
type = RankTwoScalarAux
variable = vonmises_stress
rank_two_tensor = stress
scalar_type = VonMisesStress
[../]
[./euler_angle]
type = OutputEulerAngles
variable = euler_angle
euler_angle_provider = euler_angle_file
grain_tracker = grain_tracker
output_euler_angle = 'phi1'
[../]
[]
[BCs]
[./Periodic]
[./All]
auto_direction = 'x y'
variable = 'gr0 gr1 gr2'
[../]
[../]
[./top_displacement]
type = DirichletBC
variable = disp_y
boundary = top
value = -50.0
[../]
[./x_anchor]
type = DirichletBC
variable = disp_x
boundary = 'left right'
value = 0.0
[../]
[./y_anchor]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./Copper]
type = GBEvolution
block = 0
T = 500 # K
wGB = 15 # nm
GBmob0 = 2.5e-6 # m^4/(Js) from Schoenfelder 1997
Q = 0.23 # Migration energy in eV
GBenergy = 0.708 # GB energy in J/m^2
[../]
[./ElasticityTensor]
type = ComputePolycrystalElasticityTensor
block = 0
grain_tracker = grain_tracker
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[]
[Postprocessors]
[./dofs]
type = NumDOFs
[../]
[./dt]
type = TimestepSize
[../]
[./run_time]
type = PerfGraphData
section_name = "Root"
data_type = total
[../]
[./bnd_length]
type = GrainBoundaryArea
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart -pc_hypre_boomeramg_strong_threshold'
petsc_options_value = 'hypre boomeramg 31 0.7'
l_tol = 1.0e-4
l_max_its = 30
nl_max_its = 40
nl_rel_tol = 1.0e-7
start_time = 0.0
num_steps = 50
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1.5
growth_factor = 1.2
cutback_factor = 0.8
optimal_iterations = 8
[../]
[./Adaptivity]
initial_adaptivity = 2
refine_fraction = 0.8
coarsen_fraction = 0.05
max_h_level = 3
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/initial_stress/gravity_with_aux.i)
# Apply an initial stress, using AuxVariables, that should be
# exactly that caused by gravity, and then
# do a transient step to check that nothing
# happens
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 10
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -10
zmax = 0
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[./weight]
type = BodyForce
variable = disp_z
value = -0.5 # this is density*gravity
[../]
[]
[BCs]
# back = zmin
# front = zmax
# bottom = ymin
# top = ymax
# left = xmin
# right = xmax
[./x]
type = DirichletBC
variable = disp_x
boundary = 'left right'
value = 0
[../]
[./y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0
[../]
[./z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./aux_equals_1]
initial_condition = 1
[../]
[./aux_equals_2]
initial_condition = 2
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./half_weight]
type = ParsedFunction
expression = '0.25*z' # half of the initial stress that should result from the weight force
[../]
[./kxx]
type = ParsedFunction
expression = '0.4*z' # some arbitrary xx and yy stress that should not affect the result
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0.25
[../]
[./strain]
type = ComputeSmallStrain
eigenstrain_names = ini_stress
[../]
[./strain_from_initial_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = 'kxx 0 0 0 kxx 0 0 0 half_weight'
initial_stress_aux = 'aux_equals_1 aux_equals_1 aux_equals_1 aux_equals_1 aux_equals_1 aux_equals_1 aux_equals_1 aux_equals_1 aux_equals_2'
eigenstrain_name = ini_stress
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
end_time = 1.0
dt = 1.0
solve_type = NEWTON
type = Transient
nl_abs_tol = 1E-8
nl_rel_tol = 1E-12
l_tol = 1E-3
l_max_its = 200
nl_max_its = 400
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[]
[Outputs]
file_base = gravity_with_aux
exodus = true
[]
(modules/contact/test/tests/pdass_problems/ironing_penalty.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = iron.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10001
new_block_name = 'secondary_lower'
sidesets = '10'
input = input_file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10000
sidesets = '20'
new_block_name = 'primary_lower'
input = secondary
[]
patch_update_strategy = auto
patch_size = 20
allow_renumbering = false
[]
[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
[]
[real_weighted_gap]
order = FIRST
family = LAGRANGE
[]
[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]
[]
[von_mises]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 2. 8.'
y = '0. -1.0 -1.0'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 8.'
y = '0. 8.'
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
block = '1 2'
strain = FINITE
[]
[]
[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
[]
[real_weighted_gap_auxk]
type = PenaltyMortarUserObjectAux
variable = real_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'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
block = '1 2'
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
block = '1 2'
[]
[von_mises_kernel]
#Calculates the von mises stress and assigns it to von_mises
type = RankTwoScalarAux
variable = von_mises
rank_two_tensor = stress
execute_on = timestep_end
scalar_type = VonMisesStress
block = '1 2'
[]
[]
[VectorPostprocessors]
[penalty_normal_pressure]
type = NodalValueSampler
variable = penalty_normal_pressure
boundary = 10
sort_by = id
[]
[]
[BCs]
[bot_x_disp]
type = DirichletBC
variable = disp_x
boundary = '40'
value = 0.0
preset = false
[]
[bot_y_disp]
type = DirichletBC
variable = disp_y
boundary = '40'
value = 0.0
preset = false
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = '30'
function = disp_ramp_vert
preset = false
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = '30'
function = disp_ramp_horz
preset = false
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 6896
poissons_ratio = 0.32
[]
[stuff1_strain]
type = ComputeFiniteStrain
block = '2'
[]
[stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 689.6
poissons_ratio = 0.32
[]
[stuff2_strain]
type = ComputeFiniteStrain
block = '1'
[]
[stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
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-7
l_tol = 1e-6
l_max_its = 50
nl_max_its = 30
start_time = 0.0
end_time = 6.5 # 6.5
dt = 0.0125
dtmin = 1e-5
[Predictor]
type = SimplePredictor
scale = 1.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
start_time = 0.0
execute_vector_postprocessors_on = FINAL
[]
[console]
type = Console
max_rows = 5
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[friction_uo]
type = PenaltyFrictionUserObject
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 10000
secondary_subdomain = 10001
disp_x = disp_x
disp_y = disp_y
friction_coefficient = 0.1 # with 2.0 works
secondary_variable = disp_x
penalty = 1e5
penalty_friction = 1e4
use_physical_gap = true
[]
[]
[Constraints]
[x]
type = NormalMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
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 = 20
secondary_boundary = 10
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
[]
[t_x]
type = TangentialMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
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
[]
[t_y]
type = TangentialMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
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/solid_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_hht.i)
# Test for rayleigh damping implemented using HHT time integration
#
# The test is for an 1D bar element of unit length fixed on one end
# with a ramped pressure boundary condition applied to the other end.
# zeta and eta correspond to the stiffness and mass proportional rayleigh damping
# alpha, beta and gamma are HHT time integration parameters
# The equation of motion in terms of matrices is:
#
# M*accel + (eta*M+zeta*K)*[(1+alpha)vel-alpha vel_old]
# + alpha*(K*disp - K*disp_old) + K*disp = P(t+alpha dt)*Area
#
# Here M is the mass matrix, K is the stiffness matrix, P is the applied pressure
#
# This equation is equivalent to:
#
# density*accel + eta*density*[(1+alpha)vel-alpha vel_old]
# + zeta*[(1+alpha)*d/dt(Div stress)- alpha*d/dt(Div stress_old)]
# + alpha *(Div stress - Div stress_old) +Div Stress= P(t+alpha dt)
#
# The first two terms on the left are evaluated using the Inertial force kernel
# The next three terms on the left involving zeta and alpha are evaluated using
# the DynamicStressDivergenceTensors Kernel
# The residual due to Pressure is evaluated using Pressure boundary condition
#
# The system will come to steady state slowly after the pressure becomes constant.
# Alpha equal to zero will result in Newmark integration.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.1
use_displaced_mesh = false
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/Dynamic]
[all]
add_variables = true
hht_alpha = 0.11
newmark_beta = 0.25
newmark_gamma = 0.5
mass_damping_coefficient = 0.1
stiffness_damping_coefficient = 0.1
density = 7750
[]
[]
[BCs]
[top_y]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[]
[top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[Pressure]
[Side1]
boundary = bottom
function = pressure
factor = 1
hht_alpha = 0.11
[]
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '210e9 0'
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dt = 0.1
[]
[Functions]
[pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.1 0.2 1.0 1.0 1.0'
scale_factor = 1e9
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[disp]
type = NodalExtremeValue
variable = disp_y
boundary = bottom
[]
[vel]
type = NodalExtremeValue
variable = vel_y
boundary = bottom
[]
[accel]
type = NodalExtremeValue
variable = accel_y
boundary = bottom
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/thermal_eigenstrain_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[eth_xx]
order = CONSTANT
family = MONOMIAL
[]
[eth_yy]
order = CONSTANT
family = MONOMIAL
[]
[eth_zz]
order = CONSTANT
family = MONOMIAL
[]
[fth_xx]
order = CONSTANT
family = MONOMIAL
[]
[fth_yy]
order = CONSTANT
family = MONOMIAL
[]
[fth_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = '300+400*t' # temperature increases at a constant rate
execute_on = timestep_begin
[]
[eth_xx]
type = RankTwoAux
variable = eth_xx
rank_two_tensor = thermal_eigenstrain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[eth_yy]
type = RankTwoAux
variable = eth_yy
rank_two_tensor = thermal_eigenstrain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[eth_zz]
type = RankTwoAux
variable = eth_zz
rank_two_tensor = thermal_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fth_xx]
type = RankTwoAux
variable = fth_xx
rank_two_tensor = thermal_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fth_yy]
type = RankTwoAux
variable = fth_yy
rank_two_tensor = thermal_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fth_zz]
type = RankTwoAux
variable = fth_zz
rank_two_tensor = thermal_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = thermal_eigenstrain
tan_mod_type = exact
maximum_substep_iteration = 5
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[thermal_eigenstrain]
type = ComputeCrystalPlasticityThermalEigenstrain
eigenstrain_name = thermal_eigenstrain
deformation_gradient_name = thermal_deformation_gradient
temperature = temperature
thermal_expansion_coefficients = '1e-05 2e-05 4e-05' # thermal expansion coefficients along three directions
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[eth_xx]
type = ElementAverageValue
variable = eth_xx
[]
[eth_yy]
type = ElementAverageValue
variable = eth_yy
[]
[eth_zz]
type = ElementAverageValue
variable = eth_zz
[]
[fth_xx]
type = ElementAverageValue
variable = fth_xx
[]
[fth_yy]
type = ElementAverageValue
variable = fth_yy
[]
[fth_zz]
type = ElementAverageValue
variable = fth_zz
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.1
dtmin = 1e-4
end_time = 10
[]
[Outputs]
csv = true
[console]
type = Console
max_rows = 5
[]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/convergence/ld-strain.i)
# 2D test with just strain control
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
constraint_types = 'strain strain strain strain strain strain strain strain strain'
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '3d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0
'
' 0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'left right bottom top back front'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[hvar]
family = SCALAR
order = NINTH
[]
[]
[ICs]
[disp_x]
type = RandomIC
variable = disp_x
min = -0.1
max = 0.1
[]
[disp_y]
type = RandomIC
variable = disp_y
min = -0.1
max = 0.1
[]
[disp_z]
type = RandomIC
variable = disp_z
min = -0.1
max = 0.1
[]
[hvar]
type = ScalarConstantIC
variable = hvar
value = 0.1
[]
[]
[AuxVariables]
[s11]
family = MONOMIAL
order = CONSTANT
[]
[s21]
family = MONOMIAL
order = CONSTANT
[]
[s31]
family = MONOMIAL
order = CONSTANT
[]
[s12]
family = MONOMIAL
order = CONSTANT
[]
[s22]
family = MONOMIAL
order = CONSTANT
[]
[s32]
family = MONOMIAL
order = CONSTANT
[]
[s13]
family = MONOMIAL
order = CONSTANT
[]
[s23]
family = MONOMIAL
order = CONSTANT
[]
[s33]
family = MONOMIAL
order = CONSTANT
[]
[F11]
family = MONOMIAL
order = CONSTANT
[]
[F21]
family = MONOMIAL
order = CONSTANT
[]
[F31]
family = MONOMIAL
order = CONSTANT
[]
[F12]
family = MONOMIAL
order = CONSTANT
[]
[F22]
family = MONOMIAL
order = CONSTANT
[]
[F32]
family = MONOMIAL
order = CONSTANT
[]
[F13]
family = MONOMIAL
order = CONSTANT
[]
[F23]
family = MONOMIAL
order = CONSTANT
[]
[F33]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s11]
type = RankTwoAux
variable = s11
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[s21]
type = RankTwoAux
variable = s21
rank_two_tensor = pk1_stress
index_i = 1
index_j = 0
[]
[s31]
type = RankTwoAux
variable = s31
rank_two_tensor = pk1_stress
index_i = 2
index_j = 0
[]
[s12]
type = RankTwoAux
variable = s12
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[s22]
type = RankTwoAux
variable = s22
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[s32]
type = RankTwoAux
variable = s32
rank_two_tensor = pk1_stress
index_i = 2
index_j = 1
[]
[s13]
type = RankTwoAux
variable = s13
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[s23]
type = RankTwoAux
variable = s23
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[s33]
type = RankTwoAux
variable = s33
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[F11]
type = RankTwoAux
variable = F11
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 0
[]
[F21]
type = RankTwoAux
variable = F21
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 0
[]
[F31]
type = RankTwoAux
variable = F31
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 0
[]
[F12]
type = RankTwoAux
variable = F12
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 1
[]
[F22]
type = RankTwoAux
variable = F22
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[F32]
type = RankTwoAux
variable = F32
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 1
[]
[F13]
type = RankTwoAux
variable = F13
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 2
[]
[F23]
type = RankTwoAux
variable = F23
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 2
[]
[F33]
type = RankTwoAux
variable = F33
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 2
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
targets = 'strain11 strain21 strain31 strain12 strain22 strain32 strain13 strain23 strain33'
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[strain11]
type = ParsedFunction
expression = '8.0e-2*t'
[]
[strain22]
type = ParsedFunction
expression = '-4.0e-2*t'
[]
[strain33]
type = ParsedFunction
expression = '8.0e-2*t'
[]
[strain23]
type = ParsedFunction
expression = '2.0e-2*t'
[]
[strain13]
type = ParsedFunction
expression = '-7.0e-2*t'
[]
[strain12]
type = ParsedFunction
expression = '1.0e-2*t'
[]
[strain32]
type = ParsedFunction
expression = '1.0e-2*t'
[]
[strain31]
type = ParsedFunction
expression = '2.0e-2*t'
[]
[strain21]
type = ParsedFunction
expression = '-1.5e-2*t'
[]
[zero]
type = ConstantFunction
value = 0
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y z'
[]
[y]
variable = disp_y
auto_direction = 'x y z'
[]
[z]
variable = disp_z
auto_direction = 'x y z'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix_all"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix_all"
variable = disp_y
value = 0
[]
[fix1_z]
type = DirichletBC
boundary = "fix_all"
variable = disp_z
value = 0
[]
[fix2_x]
type = DirichletBC
boundary = "fix_xy"
variable = disp_x
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix_xy"
variable = disp_y
value = 0
[]
[fix3_z]
type = DirichletBC
boundary = "fix_z"
variable = disp_z
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[elastic_tensor_4]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 76000.0
poissons_ratio = 0.11
block = '4'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[s11]
type = ElementAverageValue
variable = s11
execute_on = 'initial timestep_end'
[]
[s21]
type = ElementAverageValue
variable = s21
execute_on = 'initial timestep_end'
[]
[s31]
type = ElementAverageValue
variable = s31
execute_on = 'initial timestep_end'
[]
[s12]
type = ElementAverageValue
variable = s12
execute_on = 'initial timestep_end'
[]
[s22]
type = ElementAverageValue
variable = s22
execute_on = 'initial timestep_end'
[]
[s32]
type = ElementAverageValue
variable = s32
execute_on = 'initial timestep_end'
[]
[s13]
type = ElementAverageValue
variable = s13
execute_on = 'initial timestep_end'
[]
[s23]
type = ElementAverageValue
variable = s23
execute_on = 'initial timestep_end'
[]
[s33]
type = ElementAverageValue
variable = s33
execute_on = 'initial timestep_end'
[]
[F11]
type = ElementAverageValue
variable = F11
execute_on = 'initial timestep_end'
[]
[F21]
type = ElementAverageValue
variable = F21
execute_on = 'initial timestep_end'
[]
[F31]
type = ElementAverageValue
variable = F31
execute_on = 'initial timestep_end'
[]
[F12]
type = ElementAverageValue
variable = F12
execute_on = 'initial timestep_end'
[]
[F22]
type = ElementAverageValue
variable = F22
execute_on = 'initial timestep_end'
[]
[F32]
type = ElementAverageValue
variable = F32
execute_on = 'initial timestep_end'
[]
[F13]
type = ElementAverageValue
variable = F13
execute_on = 'initial timestep_end'
[]
[F23]
type = ElementAverageValue
variable = F23
execute_on = 'initial timestep_end'
[]
[F33]
type = ElementAverageValue
variable = F33
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 20
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 0.2
[]
[Outputs]
exodus = false
csv = false
[]
(modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free_orientation_inclined_hht.i)
# Test to verify the fundamental natural frequency of a one element ADComputeShellStress
# BCs: Clamped on one end, free on others.
# Initial perturbation applied to edge of the beam. After that, the shell vibrates freely.
#
# Results have been compared for various thicknesses with the following approximate Results
# (Moose results were obtained with 8 elements along the length)
# Thickness = 0.1. Reference freq: 10.785 Hz, Moose freq: 10.612 Hz
# Thickness = 0.05. Reference freq: 5.393 Hz, Moose freq: 5.335 Hz
# Thickness = 0.025. Reference freq: 2.696 Hz, Moose freq: 2.660 Hz
#
# Reference values have been obtained from Robert Blevins, "Formulas for Dynamics, Acoustics and Vibration",
# Table 5.3 case 11. Formula looks like: f = lambda^2/(2*pi*a^2) * sqrt(E*h^2/(12*(1-nu*nu))), where lambda
# changes as a function of shell dimensions.
# This test uses one single element for speed reasons.
# Here, the shell, instead of being on the XY plane, is oriented at a 45 deg. angle
# with respect to the Y axis.
[Mesh]
type = FileMesh
file = shell_inclined.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./rot_x]
[../]
[./rot_y]
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
# aux variables for dynamics
[./vel_x]
[../]
[./vel_y]
[../]
[./vel_z]
[../]
[./accel_x]
[../]
[./accel_y]
[../]
[./accel_z]
[../]
[./rot_vel_x]
[../]
[./rot_vel_y]
[../]
[./rot_accel_x]
[../]
[./rot_accel_y]
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
[../]
# Kernels for dynamics
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = '0'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = '0'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = '0'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = '0'
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = '0'
value = 0.0
[../]
[]
[Functions]
[./force_function]
type = PiecewiseLinear
x = '0.0 0.01 0.15 10.0'
y = '0.0 0.01 0.0 0.0'
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = '2'
function = force_function
[../]
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[../]
[./inertial_force_x]
type = ADInertialForceShell
use_displaced_mesh = true
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 0
variable = disp_x
thickness = 0.1
eta = 0.0
alpha = 0.0
[../]
[./inertial_force_y]
type = ADInertialForceShell
use_displaced_mesh = true
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 1
variable = disp_y
thickness = 0.1
eta = 0.0
alpha = 0.0
[../]
[./inertial_force_z]
type = ADInertialForceShell
use_displaced_mesh = true
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 2
variable = disp_z
thickness = 0.1
eta = 0.0
alpha = 0.0
[../]
[./inertial_force_rot_x]
type = ADInertialForceShell
use_displaced_mesh = true
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 3
variable = rot_x
thickness = 0.1
eta = 0.0
alpha = 0.0
[../]
[./inertial_force_rot_y]
type = ADInertialForceShell
use_displaced_mesh = true
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 4
variable = rot_y
thickness = 0.1
eta = 0.0
alpha = 0.0
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 2100000
poissons_ratio = 0.3
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_z_tip]
type = PointValue
point = '0.0 1.06 1.06'
variable = disp_z
[../]
[./rot_x_tip]
type = PointValue
point = '0.0 1.06 1.06'
variable = rot_x
[../]
[./stress_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yy
[../]
[./stress_yy_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yy
[../]
[./stress_yy_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yy
[../]
[./stress_yy_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yy
[../]
[./stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[../]
[./stress_yz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yz
[../]
[./stress_yz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yz
[../]
[./stress_yz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yz
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-11
nl_max_its = 15
nl_rel_tol = 1e-11
nl_abs_tol = 1e-10
l_max_its = 20
dt = 0.005
dtmin = 0.005
timestep_tolerance = 2e-13
end_time = 0.5
[./TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[../]
[]
[Outputs]
perf_graph = true
csv = true
[]
(modules/solid_mechanics/test/tests/thermal_expansion/constant_expansion_stress_free_temp.i)
# This test involves only thermal expansion strains on a 2x2x2 cube of approximate
# steel material; however, in this case the stress free temperature of the material
# has been set to 200K so that there is an initial delta temperature of 100K.
# An initial temperature of 300K is given for the material,
# and an auxkernel is used to calculate the temperature in the entire cube to
# raise the temperature each time step. The final temperature is 675K
# The thermal strain increment should therefore be
# (675K - 300K) * 1.3e-5 1/K + 100K * 1.3e-5 1/K = 6.175e-3 m/m.
# This test uses a start up step to identify problems in the calculation of
# eigenstrains with a stress free temperature that is different from the initial
# value of the temperature in the problem
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
initial_condition = 300.0
[../]
[./eigenstrain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./eigenstrain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./total_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./total_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./total_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(5000.0)+300.0
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[./eigenstrain_yy]
type = RankTwoAux
rank_two_tensor = eigenstrain
variable = eigenstrain_yy
index_i = 1
index_j = 1
execute_on = 'initial timestep_end'
[../]
[./eigenstrain_xx]
type = RankTwoAux
rank_two_tensor = eigenstrain
variable = eigenstrain_xx
index_i = 0
index_j = 0
execute_on = 'initial timestep_end'
[../]
[./eigenstrain_zz]
type = RankTwoAux
rank_two_tensor = eigenstrain
variable = eigenstrain_zz
index_i = 2
index_j = 2
execute_on = 'initial timestep_end'
[../]
[./total_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yy
index_i = 1
index_j = 1
execute_on = 'initial timestep_end'
[../]
[./total_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xx
index_i = 0
index_j = 0
execute_on = 'initial timestep_end'
[../]
[./total_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zz
index_i = 2
index_j = 2
execute_on = 'initial timestep_end'
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./z_bot]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 200
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = -0.0125
n_startup_steps = 1
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
[]
[Postprocessors]
[./eigenstrain_xx]
type = ElementAverageValue
variable = eigenstrain_xx
execute_on = 'initial timestep_end'
[../]
[./eigenstrain_yy]
type = ElementAverageValue
variable = eigenstrain_yy
execute_on = 'initial timestep_end'
[../]
[./eigenstrain_zz]
type = ElementAverageValue
variable = eigenstrain_zz
execute_on = 'initial timestep_end'
[../]
[./total_strain_xx]
type = ElementAverageValue
variable = total_strain_xx
execute_on = 'initial timestep_end'
[../]
[./total_strain_yy]
type = ElementAverageValue
variable = total_strain_yy
execute_on = 'initial timestep_end'
[../]
[./total_strain_zz]
type = ElementAverageValue
variable = total_strain_zz
execute_on = 'initial timestep_end'
[../]
[./temperature]
type = AverageNodalVariableValue
variable = temp
execute_on = 'initial timestep_end'
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_representative_slip_systems.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_2]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_4]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = resolved_shear_stress_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_1]
type = MaterialStdVectorAux
variable = resolved_shear_stress_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[tau_2]
type = MaterialStdVectorAux
variable = resolved_shear_stress_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[tau_4]
type = MaterialStdVectorAux
variable = resolved_shear_stress_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.1*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
euler_angle_1 = 45
euler_angle_2 = 60
euler_angle_3 = 30
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 5
slip_sys_file_name = select_input_slip_sys_hcp.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 4
number_slip_systems_per_mode = '1 1 2 1'
lattice_friction_per_mode = '10 10 15 30'
effective_shear_modulus_per_mode = '47e3 47e3 47e3 47e3'
burgers_vector_per_mode = '2.934e-7 2.934e-7 2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '2e7 1e5 2e7 2e7'
normalized_slip_activiation_energy_per_mode = '3e-2 4e-3 3e-2 3e-2'
slip_energy_proportionality_factor_per_mode = '100 330 100 100'
substructure_rate_coefficient_per_mode = '100 400 1 1'
applied_strain_rate = 0.001
gamma_o = 1.0e-3
strain_rate_sensitivity_exponent = 0.05
Hall_Petch_like_constant_per_mode = '10 10 10 10'
grain_size = 20.0e-3 #20 microns,
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[tau_0]
type = ElementAverageValue
variable = resolved_shear_stress_0
[]
[tau_1]
type = ElementAverageValue
variable = resolved_shear_stress_1
[]
[tau_2]
type = ElementAverageValue
variable = resolved_shear_stress_2
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[tau_4]
type = ElementAverageValue
variable = resolved_shear_stress_4
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 0.1
end_time = 0.4
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_iso_creep_x_3d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[creep_strain_zz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
[]
[creep_strain_xz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xz
index_i = 0
index_j = 2
[]
[creep_strain_yz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yz
index_i = 1
index_j = 2
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0e-9 1.0'
y = '0 -4e1 -4e1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
# inelastic_models = 'trial_creep_iso'
max_iterations = 50
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.5 0.5 1.5 1.5 1.5"
[]
[trial_creep_aniso_iso]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
relative_tolerance = 1e-20
absolute_tolerance = 1e-20
internal_solve_output_on = never
# Force it to not use integration error
max_integration_error = 1.0
[]
[trial_creep_iso]
type = ADPowerLawCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
# F G H L M N
max_inelastic_increment = 0.00003
relative_tolerance = 1e-16
absolute_tolerance = 1e-16
internal_solve_output_on = never
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-13
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 10
dt = 5.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_yy]
type = ElementalVariableValue
variable = creep_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_zz]
type = ElementalVariableValue
variable = creep_strain_zz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_xy]
type = ElementalVariableValue
variable = creep_strain_xy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_yz]
type = ElementalVariableValue
variable = creep_strain_yz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_xz]
type = ElementalVariableValue
variable = creep_strain_xz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
block = 0
[../]
[./uy]
block = 0
[../]
[./uz]
block = 0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCrystalPlasticity
block = 0
gtol = 1e-2
slip_sys_file_name = input_slip_sys.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
hprops = '1.0 541.5 60.8 109.8 2.5'
gprops = '1 4 60.8 5 8 60.8 9 12 60.8'
tan_mod_type = exact
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.05
dtmax = 10.0
dtmin = 0.05
num_steps = 10
[]
[Outputs]
file_base = out
exodus = true
[]
(modules/combined/test/tests/DiffuseCreep/strain_gb_relax.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = strain
index_i = 0
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
variable = strain_yy
rank_two_tensor = strain
index_i = 1
index_j = 1
[../]
[./strain_xy]
type = RankTwoAux
variable = strain_xy
rank_two_tensor = strain
index_i = 0
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
args = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./gb_relax_prefactor]
type = DerivativeParsedMaterial
block = 0
expression = '0.01*(c-0.15)*gb'
coupled_variables = 'c gb'
property_name = gb_relax_prefactor
derivative_order = 1
[../]
[./gb_relax]
type = GBRelaxationStrainIncrement
property_name = gb_relax
prefactor_name = gb_relax_prefactor
gb_normal_name = gb_normal
[../]
[./strain]
type = SumTensorIncrements
tensor_name = strain
coupled_tensor_increment_names = gb_relax
[../]
[]
[BCs]
[./Periodic]
[./all]
auto_direction = 'x y'
[../]
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_max_its = 5
dt = 20
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/multi/special_rock1.i)
# Plasticity models:
# Mohr-Coulomb with cohesion = 40MPa, friction angle = 35deg, dilation angle = 5deg
# Tensile with strength = 1MPa
#
# Lame lambda = 1GPa. Lame mu = 1.3GPa
#
# A line of elements is perturbed randomly, and return to the yield surface at each quadpoint is checked
#
# NOTE: The yield function tolerances here are set at 100-times what i would usually use
# This is because otherwise the test fails on the 'pearcey' architecture.
# This is because identical stress tensors yield slightly different eigenvalues
# (and hence return-map residuals) on 'pearcey' than elsewhere, which results in
# a different number of NR iterations are needed to return to the yield surface.
# This is presumably because of compiler internals, or the BLAS routines being
# optimised differently or something similar.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 125
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 125
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[ICs]
[./x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console csv'
[../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console csv'
[../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console csv'
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console csv'
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 4E7
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
use_custom_returnMap = false
yield_function_tolerance = 1.0E+2 # Note larger value
shift = 1.0E+2 # Note larger value
internal_constraint_tolerance = 1.0E-7
[../]
[./mc_smooth]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4E6
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./ts]
type = SolidMechanicsHardeningConstant
value = 1E6
[../]
[./tensile]
type = SolidMechanicsPlasticTensileMulti
tensile_strength = ts
yield_function_tolerance = 1.0E+2 # Note larger value
shift = 1.0E+2 # Note larger value
internal_constraint_tolerance = 1.0E-7
use_custom_returnMap = false
use_custom_cto = false
[../]
[./tensile_smooth]
type = SolidMechanicsPlasticTensile
tensile_strength = ts
tensile_tip_smoother = 1E5
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1.0E9 1.3E9'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-5 # Note larger value, to match the larger yield_function_tolerances
plastic_models = 'tensile mc'
max_NR_iterations = 5
specialIC = 'rock'
deactivation_scheme = 'safe'
min_stepsize = 1
max_stepsize_for_dumb = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1 1'
debug_jac_at_intnl = '1 1 1 1'
debug_stress_change = 1E1
debug_pm_change = '1E-6 1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = special_rock1
exodus = false
csv = true
[]
(modules/combined/test/tests/poro_mechanics/pp_generation_unconfined_action.i)
# This is identical to pp_generation_unconfined.i but it uses
# and action instead of explicitly writing all the Kernels out
#
# A sample is constrained on all sides, except its top
# and its boundaries are
# also impermeable. Fluid is pumped into the sample via a
# volumetric source (ie m^3/second per cubic meter), and the
# rise in the top surface, porepressure, and stress are observed.
#
# Source = s (units = 1/second)
#
# Expect:
# strain_zz = disp_z = BiotCoefficient*BiotModulus*s*t/((bulk + 4*shear/3) + BiotCoefficient^2*BiotModulus)
# porepressure = BiotModulus*(s*t - BiotCoefficient*strain_zz)
# stress_xx = (bulk - 2*shear/3)*strain_zz (remember this is effective stress)
# stress_xx = (bulk + 4*shear/3)*strain_zz (remember this is effective stress)
#
# Parameters:
# Biot coefficient = 0.3
# Porosity = 0.1
# Bulk modulus = 2
# Shear modulus = 1.5
# fluid bulk modulus = 1/0.3 = 3.333333
# 1/Biot modulus = (1 - 0.3)*(0.3 - 0.1)/2 + 0.1*0.3 = 0.1. BiotModulus = 10
#
# s = 0.1
#
# Expect
# disp_z = 0.3*10*s*t/((2 + 4*1.5/3) + 0.3^2*10) = 0.612245*s*t
# porepressure = 10*(s*t - 0.3*0.612245*s*t) = 8.163265*s*t
# stress_xx = (2 - 2*1.5/3)*0.612245*s*t = 0.612245*s*t
# stress_zz = (2 + 4*shear/3)*0.612245*s*t = 2.44898*s*t
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./porepressure]
[../]
[]
[BCs]
[./confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[../]
[./confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[../]
[./confinez]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back'
[../]
[]
[Kernels]
[./PoroMechanics]
[../]
[./poro_timederiv]
type = PoroFullSatTimeDerivative
variable = porepressure
[../]
[./source]
type = BodyForce
function = 0.1
variable = porepressure
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./poro_material]
type = PoroFullSatMaterial
porosity0 = 0.1
biot_coefficient = 0.3
solid_bulk_compliance = 0.5
fluid_bulk_compliance = 0.3
constant_porosity = true
[../]
[]
[Postprocessors]
[./p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[../]
[./zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
variable = disp_z
[../]
[./stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[../]
[./stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[../]
[./stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 10000'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = pp_generation_unconfined_action
[./csv]
type = CSV
[../]
[]
(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/xfem/test/tests/crack_tip_enrichment/penny_crack_3d.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
use_crack_tip_enrichment = true
crack_front_definition = crack_front
enrichment_displacements = 'enrich1_x enrich2_x enrich3_x enrich4_x enrich1_y enrich2_y enrich3_y enrich4_y enrich1_z enrich2_z enrich3_z enrich4_z'
cut_off_boundary = all
cut_off_radius = 0.3
[]
[UserObjects]
[circle_cut_uo]
type = CircleCutUserObject
cut_data = '0 0 0
0.5 0 0
0 0.5 0'
[]
[crack_front]
type = CrackFrontDefinition
crack_direction_method = CurvedCrackFront
crack_front_points = '0.500000000000000 0 0
0.000000000000000 0.500000000000000 0
-0.500000000000000 0.000000000000000 0
-0.000000000000000 -0.500000000000000 0'
[]
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 9
ny = 9
nz = 3
xmin = -1.0
xmax = 1.0
ymin = -1.0
ymax = 1.0
zmin = -0.75
zmax = 0.75
elem_type = HEX8
[]
[all_node]
type = BoundingBoxNodeSetGenerator
input = gen
new_boundary = 'all'
top_right = '1 1 1'
bottom_left = '-1 -1 -1'
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = false
volumetric_locking_correction = false
[]
[]
[BCs]
[top_z]
type = Pressure
variable = disp_z
boundary = front
factor = -1
[]
[bottom_x]
type = DirichletBC
boundary = back
variable = disp_x
value = 0.0
[]
[bottom_y]
type = DirichletBC
boundary = back
variable = disp_y
value = 0.0
[]
[bottom_z]
type = DirichletBC
boundary = back
variable = disp_z
value = 0.0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[strain]
type = ComputeCrackTipEnrichmentSmallStrain
crack_front_definition = crack_front
enrichment_displacements = 'enrich1_x enrich2_x enrich3_x enrich4_x enrich1_y enrich2_y enrich3_y enrich4_y enrich1_z enrich2_z enrich3_z enrich4_z'
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
[Quadrature]
type = GAUSS
order = SECOND
[]
# controls for linear iterations
l_max_its = 10
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[console]
type = Console
output_linear = true
[]
[]
(modules/solid_mechanics/test/tests/j2_plasticity/hard1.i)
# UserObject J2 test, with hardening, but with rate=0
# apply uniform compression in x direction to give
# trial stress_xx = -5, so sqrt(3*J2) = 5
# with zero Poisson's ratio, this should return to
# stress_xx = -3, stress_yy = -1 = stress_zz,
# for strength = 2
# (note that stress_xx - stress_yy = stress_xx - stress_zz = -2, so sqrt(3*j2) = 2,
# and that the mean stress remains = -5/3)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-2.5E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningConstant
value = 2
[../]
[./j2]
type = SolidMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = j2
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = hard1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/multi/three_surface12.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 3
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 1.5E-6m in y direction and 1.5E-6 in z direction.
# trial stress_yy = .15 and stress_zz = 1.5
#
# Then SimpleTester0 and SimpleTester1 should activate and the algorithm will return to
# stress_zz=1=stress_yy
# internal0 should be 0.5 and internal1 should be 0.5
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1.5E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.5E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface12
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/action/two_block.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics/SolidMechanics/QuasiStatic]
[./block1]
strain = FINITE
add_variables = true
#block = 1
[../]
[./block2]
strain = SMALL
add_variables = true
block = 2
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress1]
type = ComputeFiniteStrainElasticStress
block = 1
[../]
[./_elastic_stress2]
type = ComputeLinearElasticStress
block = 2
[../]
[]
[BCs]
[./left]
type = DirichletBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[./top]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./right]
type = DirichletBC
boundary = 'right'
variable = disp_x
value = 0.01
[../]
[./bottom]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.01
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/poro/vol_expansion.i)
# Apply an increasing porepressure, with zero mechanical forces,
# and observe the corresponding volumetric expansion
#
# P = t
# With the Biot coefficient being 2.0, the effective stresses should be
# stress_xx = stress_yy = stress_zz = 2t
# With bulk modulus = 1 then should have
# vol_strain = strain_xx + strain_yy + strain_zz = 2t.
# I use a single element lying 0<=x<=1, 0<=y<=1 and 0<=z<=1, and
# fix the left, bottom and back boundaries appropriately,
# so at the point x=y=z=1, the displacements should be
# disp_x = disp_y = disp_z = 2t/3 (small strain physics is used)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./p]
[../]
[]
[BCs]
[./p]
type = FunctionDirichletBC
boundary = 'bottom top'
variable = p
function = t
[../]
[./xmin]
type = DirichletBC
boundary = left
variable = disp_x
value = 0
[../]
[./ymin]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
[../]
[./zmin]
type = DirichletBC
boundary = back
variable = disp_z
value = 0
[../]
[]
[Kernels]
[./unimportant_p]
type = Diffusion
variable = p
[../]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[./poro_x]
type = PoroMechanicsCoupling
variable = disp_x
porepressure = p
component = 0
[../]
[./poro_y]
type = PoroMechanicsCoupling
variable = disp_y
porepressure = p
component = 1
[../]
[./poro_z]
type = PoroMechanicsCoupling
variable = disp_z
porepressure = p
component = 2
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./corner_x]
type = PointValue
point = '1 1 1'
variable = disp_x
[../]
[./corner_y]
type = PointValue
point = '1 1 1'
variable = disp_y
[../]
[./corner_z]
type = PointValue
point = '1 1 1'
variable = disp_z
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
# bulk modulus = 1, poisson ratio = 0.2
C_ijkl = '0.5 0.75'
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./biot]
type = GenericConstantMaterial
prop_names = biot_coefficient
prop_values = 2.0
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol'
petsc_options_value = 'gmres bjacobi 1E-10 1E-10 10 1E-15 1E-10'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
dt = 0.1
end_time = 1
[]
[Outputs]
file_base = vol_expansion
exodus = true
[]
(modules/solid_mechanics/test/tests/dynamics/time_integration/newmark.i)
# Test for Newmark time integration
# The test is for an 1D bar element of unit length fixed on one end
# with a ramped pressure boundary condition applied to the other end.
# beta and gamma are Newmark time integration parameters
# The equation of motion in terms of matrices is:
#
# M*accel + K*disp = P*Area
#
# Here M is the mass matrix, K is the stiffness matrix, P is the applied pressure
#
# This equation is equivalent to:
#
# density*accel + Div Stress = P
#
# The first term on the left is evaluated using the Inertial force kernel
# The last term on the left is evaluated using StressDivergenceTensors
# The residual due to Pressure is evaluated using Pressure boundary condition
[Mesh]
type = GeneratedMesh
dim = 3
xmax = 0.1
ymax = 1.0
zmax = 0.1
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[]
[inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25
gamma = 0.5
[]
[inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
[]
[inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
[]
[]
[AuxKernels]
[accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[]
[vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[]
[accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[]
[vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[]
[accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[]
[vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[BCs]
[top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[]
[top_y]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[]
[top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[]
[Pressure]
[Side1]
boundary = bottom
function = pressure
factor = 1
displacements = 'disp_x disp_y disp_z'
[]
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '210 0'
[]
[strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[]
[stress]
type = ComputeLinearElasticStress
[]
[density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = '7750'
[]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dt = 0.1
[]
[Functions]
[pressure]
type = PiecewiseLinear
x = '0.0 0.2 1.0 5.0'
y = '0.0 0.2 1.0 1.0'
scale_factor = 1e3
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[disp]
type = NodalExtremeValue
variable = disp_y
boundary = bottom
[]
[vel]
type = NodalExtremeValue
variable = vel_y
boundary = bottom
[]
[accel]
type = NodalExtremeValue
variable = accel_y
boundary = bottom
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
[]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/contact/test/tests/verification/patch_tests/cyl_3/cyl3_mu_0_2_pen.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl3_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = cyl3_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 = cyl3_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
tangential_tolerance = 1e-3
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_fileread.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx=1
ny=1
nz=1
xmin=0.0
xmax=1.0
ymin=0.0
ymax=1.0
zmin=0.0
zmax=1.0
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
[./disp_z]
block = 0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = 'initial timestep_end'
block = 0
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = 'initial timestep_end'
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCrystalPlasticity
block = 0
gtol = 1e-2
slip_sys_file_name = input_slip_sys.txt
slip_sys_res_prop_file_name = input_slip_sys_res.txt
slip_sys_flow_prop_file_name = input_slip_sys_flow_prop.txt
hprops = '1.0 541.5 60.8 109.8 2.5'
nss = 12
intvar_read_type = slip_sys_res_file
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
execute_on = 'initial timestep_end'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
execute_on = 'initial timestep_end'
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
execute_on = 'initial timestep_end'
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
execute_on = 'initial timestep_end'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.05
dtmax = 10.0
dtmin = 0.05
num_steps = 10
[]
[Outputs]
file_base = crysp_fileread_out
exodus = true
[]
(modules/fsi/test/tests/fsi_acoustics/3D_struc_acoustic/3D_struc_acoustic.i)
# Test for `StructureAcousticInterface` interface kernel. The domain is 3D with lengths
# 10 X 0.1 X 0.1 meters. The fluid domain is on the right and the structural domain
# is on the left. Fluid end is subjected to a 250Hz sine wave with a single peak.
# Structural domain has the same material properties as the fluid. Interface between
# structure and fluid is located at 5.0m in the x-direction. Fluid pressure is recorded
# at (5, 0.05, 0.05). Structural stress is also recorded at the same location. Fluid
# pressure and structural stress should be almost equal and opposite to each other.
#
# Input parameters:
# Dimensions = 3
# Lengths = 10 X 0.1 X 0.1 meters
# Fluid speed of sound = 1500 m/s
# Fluid density = 1e-6 Giga kg/m^3
# Structural bulk modulus = 2.25 GPa
# Structural shear modulus = 0 GPa
# Structural density = 1e-6 Giga kg/m^3
# Fluid domain = true
# Fluid BC = single peak sine wave applied as a pressure on the fluid end
# Structural domain = true
# Structural BC = Neumann BC with value zero applied on the structural end.
# Fluid-structure interface location = 5.0m along the x-direction
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 100
ny = 1
nz = 1
xmax = 10
ymax = 0.1
zmax = 0.1
[]
[./subdomain1]
input = gen
type = SubdomainBoundingBoxGenerator
bottom_left = '5.0 0.0 0.0'
block_id = 1
top_right = '10.0 0.1 0.1'
[../]
[./interface1]
type = SideSetsBetweenSubdomainsGenerator
input = subdomain1
primary_block = 1
paired_block = 0
new_boundary = 'interface1'
[../]
[]
[GlobalParams]
[]
[Variables]
[./p]
block = 1
[../]
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
[./disp_z]
block = 0
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
block = 0
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
block = 0
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
block = 0
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
block = 0
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
block = 0
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
block = 0
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Kernels]
[./diffusion]
type = Diffusion
variable = 'p'
block = 1
[../]
[./inertia]
type = AcousticInertia
variable = p
block = 1
[../]
[./DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
block = 0
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
block = 0
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
block = 0
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
block = 0
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
displacement = disp_x
variable = accel_x
first = false
block = 0
[../]
[./vel_x]
type = TestNewmarkTI
displacement = disp_x
variable = vel_x
block = 0
[../]
[./accel_y]
type = TestNewmarkTI
displacement = disp_y
variable = accel_y
first = false
block = 0
[../]
[./vel_y]
type = TestNewmarkTI
displacement = disp_y
variable = vel_y
block = 0
[../]
[./accel_z]
type = TestNewmarkTI
displacement = disp_z
variable = accel_z
first = false
block = 0
[../]
[./vel_z]
type = TestNewmarkTI
displacement = disp_z
variable = vel_z
block = 0
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
block = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
block = 0
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
block = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
block = 0
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
block = 0
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
block = 0
[../]
[]
[InterfaceKernels]
[./interface1]
type = StructureAcousticInterface
variable = p
neighbor_var = disp_x
boundary = 'interface1'
D = 1e-6
component = 0
[../]
[./interface2]
type = StructureAcousticInterface
variable = p
neighbor_var = disp_y
boundary = 'interface1'
D = 1e-6
component = 1
[../]
[./interface3]
type = StructureAcousticInterface
variable = p
neighbor_var = disp_z
boundary = 'interface1'
D = 1e-6
component = 2
[../]
[]
[BCs]
[./bottom_accel]
type = FunctionDirichletBC
variable = p
boundary = 'right'
function = accel_bottom
[../]
[./disp_x1]
type = NeumannBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[./disp_y1]
type = NeumannBC
boundary = 'left'
variable = disp_y
value = 0.0
[../]
[./disp_z1]
type = NeumannBC
boundary = 'left'
variable = disp_z
value = 0.0
[../]
[]
[Functions]
[./accel_bottom]
type = PiecewiseLinear
data_file = ../1D_struc_acoustic/Input_1Peak_highF.csv
scale_factor = 1e-2
format = 'columns'
[../]
[]
[Materials]
[./co_sq]
type = GenericConstantMaterial
prop_names = inv_co_sq
prop_values = 4.44e-7
block = '1'
[../]
[./density0]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 1e-6
[../]
[./elasticity_base]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 2.25
shear_modulus = 0.0
block = 0
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
start_time = 0.0
end_time = 0.005
dt = 0.0001
dtmin = 0.00001
nl_abs_tol = 1e-8
nl_rel_tol = 1e-8
l_tol = 1e-8
l_max_its = 25
timestep_tolerance = 1e-8
automatic_scaling = true
[TimeIntegrator]
type = NewmarkBeta
[]
[]
[Postprocessors]
[./p1]
type = PointValue
point = '5.0 0.05 0.05'
variable = p
[../]
[./stress_xx]
type = PointValue
point = '5.0 0.05 0.05'
variable = stress_xx
[../]
[]
[Outputs]
csv = true
perf_graph = true
print_linear_residuals = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/convergence/sd-strain.i)
# 2D test with just strain control
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = false
constraint_types = 'strain none none strain strain none strain strain strain'
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '3d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0
'
' 0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'left right bottom top back front'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[hvar]
family = SCALAR
order = SIXTH
[]
[]
[ICs]
[disp_x]
type = RandomIC
variable = disp_x
min = -0.1
max = 0.1
[]
[disp_y]
type = RandomIC
variable = disp_y
min = -0.1
max = 0.1
[]
[disp_z]
type = RandomIC
variable = disp_z
min = -0.1
max = 0.1
[]
[hvar]
type = ScalarConstantIC
variable = hvar
value = 0.1
[]
[]
[AuxVariables]
[sxx]
family = MONOMIAL
order = CONSTANT
[]
[syy]
family = MONOMIAL
order = CONSTANT
[]
[sxy]
family = MONOMIAL
order = CONSTANT
[]
[szz]
family = MONOMIAL
order = CONSTANT
[]
[syz]
family = MONOMIAL
order = CONSTANT
[]
[sxz]
family = MONOMIAL
order = CONSTANT
[]
[exx]
family = MONOMIAL
order = CONSTANT
[]
[eyy]
family = MONOMIAL
order = CONSTANT
[]
[exy]
family = MONOMIAL
order = CONSTANT
[]
[ezz]
family = MONOMIAL
order = CONSTANT
[]
[eyz]
family = MONOMIAL
order = CONSTANT
[]
[exz]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[sxx]
type = RankTwoAux
variable = sxx
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[syy]
type = RankTwoAux
variable = syy
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[sxy]
type = RankTwoAux
variable = sxy
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[zz]
type = RankTwoAux
variable = szz
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[syz]
type = RankTwoAux
variable = syz
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[sxz]
type = RankTwoAux
variable = sxz
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[exx]
type = RankTwoAux
variable = exx
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
[]
[eyy]
type = RankTwoAux
variable = eyy
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 1
[]
[exy]
type = RankTwoAux
variable = exy
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 1
[]
[ezz]
type = RankTwoAux
variable = ezz
rank_two_tensor = mechanical_strain
index_i = 2
index_j = 2
[]
[eyz]
type = RankTwoAux
variable = eyz
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 2
[]
[exz]
type = RankTwoAux
variable = exz
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 2
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
targets = 'strain11 strain12 strain22 strain13 strain23 strain33'
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[strain11]
type = ParsedFunction
expression = '4.0e-2*t'
[]
[strain22]
type = ParsedFunction
expression = '-2.0e-2*t'
[]
[strain33]
type = ParsedFunction
expression = '8.0e-2*t'
[]
[strain23]
type = ParsedFunction
expression = '2.0e-2*t'
[]
[strain13]
type = ParsedFunction
expression = '-7.0e-2*t'
[]
[strain12]
type = ParsedFunction
expression = '1.0e-2*t'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y z'
[]
[y]
variable = disp_y
auto_direction = 'x y z'
[]
[z]
variable = disp_z
auto_direction = 'x y z'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix_all"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix_all"
variable = disp_y
value = 0
[]
[fix1_z]
type = DirichletBC
boundary = "fix_all"
variable = disp_z
value = 0
[]
[fix2_x]
type = DirichletBC
boundary = "fix_xy"
variable = disp_x
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix_xy"
variable = disp_y
value = 0
[]
[fix3_z]
type = DirichletBC
boundary = "fix_z"
variable = disp_z
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[elastic_tensor_4]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 76000.0
poissons_ratio = 0.11
block = '4'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = sxx
execute_on = 'initial timestep_end'
[]
[syy]
type = ElementAverageValue
variable = syy
execute_on = 'initial timestep_end'
[]
[sxy]
type = ElementAverageValue
variable = sxy
execute_on = 'initial timestep_end'
[]
[szz]
type = ElementAverageValue
variable = szz
execute_on = 'initial timestep_end'
[]
[syz]
type = ElementAverageValue
variable = syz
execute_on = 'initial timestep_end'
[]
[sxz]
type = ElementAverageValue
variable = sxz
execute_on = 'initial timestep_end'
[]
[exx]
type = ElementAverageValue
variable = exx
execute_on = 'initial timestep_end'
[]
[eyy]
type = ElementAverageValue
variable = eyy
execute_on = 'initial timestep_end'
[]
[exy]
type = ElementAverageValue
variable = exy
execute_on = 'initial timestep_end'
[]
[ezz]
type = ElementAverageValue
variable = ezz
execute_on = 'initial timestep_end'
[]
[eyz]
type = ElementAverageValue
variable = eyz
execute_on = 'initial timestep_end'
[]
[exz]
type = ElementAverageValue
variable = exz
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
#automatic_scaling = true
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 10
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 0.2
[]
[Outputs]
exodus = false
csv = false
[]
(modules/solid_mechanics/test/tests/multi/four_surface24.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 2 and strength = 3.1
# SimpleTester3 with a = 2 and b = 1 and strength = 3.1
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 2.1E-6m in y direction and 3E-6 in z direction.
# trial stress_yy = 2.1 and stress_zz = 3.0
#
# This is similar to four_surface14.i, and a description is found there.
# The result should be stress_zz=1=stress_yy, with internal0=2
# and internal1=1.1
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2.1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '3.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./f3]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int3]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./f3]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 3
variable = f3
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[./int3]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 3
variable = int3
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./f3]
type = PointValue
point = '0 0 0'
variable = f3
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[./int3]
type = PointValue
point = '0 0 0'
variable = int3
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 2
strength = 3.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple3]
type = SolidMechanicsPlasticSimpleTester
a = 2
b = 1
strength = 3.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2 simple3'
deactivation_scheme = 'optimized_to_safe'
max_NR_iterations = 4
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1'
debug_jac_at_intnl = '1 1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = four_surface24
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/lagrangian/materials/correctness/hyperelastic_J2_plastic.i)
E = 6.88e4
nu = 0.25
[GlobalParams]
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
displacements = 'disp_x disp_y disp_z'
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
displacements = 'disp_x disp_y disp_z'
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
displacements = 'disp_x disp_y disp_z'
[]
[]
[BCs]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0.0
[]
[pull_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = 't'
preset = false
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = ${E}
poissons_ratio = ${nu}
[]
[compute_strain]
type = ComputeLagrangianStrain
displacements = 'disp_x disp_y disp_z'
[]
[flow_stress]
type = DerivativeParsedMaterial
property_name = flow_stress
expression = '320+688*effective_plastic_strain'
material_property_names = 'effective_plastic_strain'
additional_derivative_symbols = 'effective_plastic_strain'
derivative_order = 2
compute = false
[]
[compute_stress]
type = ComputeSimoHughesJ2PlasticityStress
flow_stress_material = flow_stress
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = sxx
execute_on = 'INITIAL TIMESTEP_END'
[]
[exx]
type = ElementAverageValue
variable = exx
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[AuxVariables]
[sxx]
family = MONOMIAL
order = CONSTANT
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 0
index_j = 0
[]
[]
[exx]
family = MONOMIAL
order = CONSTANT
[AuxKernel]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 5e-4
end_time = 1e-1
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/small_deform_hard2.i)
# apply uniform stretches in x, y and z directions.
# let friction_angle = 60deg, friction_angle_residual=10deg, friction_angle_rate = 0.5E4
# With cohesion = C, friction_angle = phi, tip_smoother = T, the
# algorithm should return to
# sigma_m = (C*Cos(phi) - T)/Sin(phi)
# Or, when T=C,
# phi = 2*pi*n - 2*arctan(sigma_m/C)
# This allows checking of the relationship for phi
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningExponential
value_0 = 1.04719755 # 60deg
value_residual = 0.17453293 # 10deg
rate = 0.5E4
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 10
mc_edge_smoother = 25
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
debug_jac_at_stress = '10 1 2 1 10 3 2 3 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1E-3
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform_hard2
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/multi/three_surface09.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 2.0E-6m in y direction and 0.0E-6 in z direction.
# trial stress_yy = 2.0 and stress_zz = 0.0
#
# Then SimpleTester1 and SimpleTester2 should activate and the algorithm will return to
# the corner stress_yy=1.0, stress_zz=0.5
# However, this will mean that internal2<0, so SimpleTester2 will be deactivated
# and the algorithm will return to stress_yy=1
# internal1 should be 1.0, and internal2 should be 0
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2.0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface09
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_linesearch.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
block = 0
[../]
[./uy]
block = 0
[../]
[./uz]
block = 0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCrystalPlasticity
block = 0
rtol = 1e-6
abs_tol = 1e-8
gtol = 1e-2
slip_sys_file_name = input_slip_sys.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
hprops = '1.0 541.5 60.8 109.8 2.5'
gprops = '1 4 60.8 5 8 60.8 9 12 60.8'
tan_mod_type = exact
use_line_search = true
min_line_search_step_size = 0.01
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.025
dtmax = 10.0
dtmin = 0.02
num_steps = 10
[]
[Outputs]
file_base = crysp_lsearch_out
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/cyl_3/cyl3_template2.i)
#
# This input file is a template for both the frictionless and glued test
# variations for the current problem geometry. In order to create an input
# file to run outside the runtest framework, look at the tests file and add the
# appropriate input file lines from the cli_args line.
#
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl3_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 1000
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 = 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
tangential_tolerance = 1e-3
penalty = 1e+11
al_penetration_tolerance = 1e-8
[../]
[]
(modules/contact/test/tests/pdass_problems/ironing.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[input_file]
type = FileMeshGenerator
file = iron.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10001
new_block_name = 'secondary_lower'
sidesets = '10'
input = input_file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
new_block_id = 10000
sidesets = '20'
new_block_name = 'primary_lower'
input = secondary
[]
patch_update_strategy = auto
patch_size = 20
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[frictionless_normal_lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
use_dual = true
[]
[tangential_lm]
order = FIRST
family = LAGRANGE
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]
[]
[von_mises]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[disp_ramp_vert]
type = PiecewiseLinear
x = '0. 2. 8.'
y = '0. -1.0 -1.0'
[]
[disp_ramp_horz]
type = PiecewiseLinear
x = '0. 8.' # x = '0. 2. 8.'
y = '0. 8.' # y = '0. 0. 8'
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
block = '1 2'
strain = FINITE
[]
[]
[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'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
block = '1 2'
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
block = '1 2'
[]
[von_mises_kernel]
#Calculates the von mises stress and assigns it to von_mises
type = RankTwoScalarAux
variable = von_mises
rank_two_tensor = stress
execute_on = timestep_end
scalar_type = VonMisesStress
block = '1 2'
[]
[]
[Postprocessors]
[bot_react_x]
type = NodalSum
variable = saved_x
boundary = 20
[]
[bot_react_y]
type = NodalSum
variable = saved_y
boundary = 20
[]
[top_react_x]
type = NodalSum
variable = saved_x
boundary = 10
[]
[top_react_y]
type = NodalSum
variable = saved_y
boundary = 10
[]
[_dt]
type = TimestepSize
[]
[contact_pressure]
type = NodalVariableValue
variable = frictionless_normal_lm
nodeid = 805
[]
[]
[BCs]
[bot_x_disp]
type = DirichletBC
variable = disp_x
boundary = '40'
value = 0.0
preset = false
[]
[bot_y_disp]
type = DirichletBC
variable = disp_y
boundary = '40'
value = 0.0
preset = false
[]
[top_y_disp]
type = FunctionDirichletBC
variable = disp_y
boundary = '30'
function = disp_ramp_vert
preset = false
[]
[top_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = '30'
function = disp_ramp_horz
preset = false
[]
[]
[Materials]
[stuff1_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 6896
poissons_ratio = 0.32
[]
[stuff1_strain]
type = ComputeFiniteStrain
block = '2'
[]
[stuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[]
[stuff2_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 689.6
poissons_ratio = 0.32
[]
[stuff2_strain]
type = ComputeFiniteStrain
block = '1'
[]
[stuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
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-7
l_tol = 1e-6
l_max_its = 50
nl_max_its = 30
start_time = 0.0
end_time = 0.1 # 6.5
dt = 0.0125
dtmin = 1e-5
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[cont_press]
type = NodalValueSampler
variable = frictionless_normal_lm
boundary = '10'
sort_by = id
execute_on = FINAL
[]
[friction]
type = NodalValueSampler
variable = tangential_lm
boundary = '10'
sort_by = id
execute_on = FINAL
[]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
exodus = false
csv = true
[chkfile]
type = CSV
show = 'cont_press friction'
start_time = 0.0
execute_vector_postprocessors_on = FINAL
[]
[console]
type = Console
max_rows = 5
[]
[]
[Debug]
show_var_residual_norms = true
[]
[UserObjects]
[weighted_vel_uo]
type = LMWeightedVelocitiesUserObject
primary_boundary = 20
secondary_boundary = 10
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]
# All constraints below for mechanical contact (Mortar)
[weighted_gap_lm]
type = ComputeFrictionalForceLMMechanicalContact
primary_boundary = 20
secondary_boundary = 10
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.5
c_t = 1.0e1
c = 1.0e3
weighted_gap_uo = weighted_vel_uo
weighted_velocities_uo = weighted_vel_uo
[]
[x]
type = NormalMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
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 = 20
secondary_boundary = 10
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 = 20
secondary_boundary = 10
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 = 20
secondary_boundary = 10
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
[]
[]
(modules/solid_mechanics/test/tests/isotropicSD_plasticity/isotropicSD.i)
# UserObject IsotropicSD test, with constant hardening.
# Linear strain is applied in the x and y direction.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -.5
xmax = .5
ymin = -.5
ymax = .5
zmin = -.5
zmax = .5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./xdisp]
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = '0.005*t'
[../]
[./ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '0.005*t'
[../]
[./yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl]
order = CONSTANT
family = MONOMIAL
[../]
[./sdev]
order = CONSTANT
family = MONOMIAL
[../]
[./sdet]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./plastic_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xx
index_i = 0
index_j = 0
[../]
[./plastic_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xy
index_i = 0
index_j = 1
[../]
[./plastic_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xz
index_i = 0
index_j = 2
[../]
[./plastic_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_yy
index_i = 1
index_j = 1
[../]
[./plastic_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_yz
index_i = 1
index_j = 2
[../]
[./plastic_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[../]
[./sdev]
type = RankTwoScalarAux
variable = sdev
rank_two_tensor = stress
scalar_type = VonMisesStress
[../]
[]
[Postprocessors]
[./sdev]
type = PointValue
point = '0 0 0'
variable = sdev
[../]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./p_xx]
type = PointValue
point = '0 0 0'
variable = plastic_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./p_xy]
type = PointValue
point = '0 0 0'
variable = plastic_xy
[../]
[./p_xz]
type = PointValue
point = '0 0 0'
variable = plastic_xz
[../]
[./p_yz]
type = PointValue
point = '0 0 0'
variable = plastic_yz
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./p_yy]
type = PointValue
point = '0 0 0'
variable = plastic_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./p_zz]
type = PointValue
point = '0 0 0'
variable = plastic_zz
[../]
[./intnl]
type = PointValue
point = '0 0 0'
variable = intnl
[../]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningConstant
value = 300
[../]
[./IsotropicSD]
type = SolidMechanicsPlasticIsotropicSD
b = -0.2
c = -0.779422863
associative = true
yield_strength = str
yield_function_tolerance = 1e-5
internal_constraint_tolerance = 1e-9
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '121e3 80e3'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1e-9
plastic_models = IsotropicSD
debug_fspb = crash
tangent_operator = elastic
[../]
[]
[Executioner]
num_steps = 3
dt = .5
type = Transient
nl_rel_tol = 1e-6
nl_max_its = 10
l_tol = 1e-4
l_max_its = 50
solve_type = PJFNK
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
perf_graph = false
csv = true
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/planar1.i)
# apply uniform stretch in x, y and z directions.
# With cohesion = 10, friction_angle = 60deg, the
# algorithm should return to
# sigma_m = 10*Cos(60)/Sin(60) = 5.773503
# using planar surfaces (not smoothed)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1.1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1.2E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[]
[UserObjects]
[./coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./phi]
type = SolidMechanicsHardeningConstant
value = 1.04719756
[../]
[./psi]
type = SolidMechanicsHardeningConstant
value = 0.1
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = coh
friction_angle = phi
dilation_angle = psi
yield_function_tolerance = 1E-3
shift = 1E-12
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-10
deactivation_scheme = safe
plastic_models = mc
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = planar1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/contact/test/tests/verification/patch_tests/ring_1/ring1_template2.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring1_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
maximum_lagrangian_update_iterations = 200
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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-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-5
[]
[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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/finite_strain_tensor_mechanics_tests/elastic_rotation.i)
#
# Rotation Test
#
# This test is designed to compute a uniaxial stress and then follow that
# stress as the mesh is rotated 90 degrees.
#
# The mesh is composed of one block with a single element. The nodal
# displacements in the x and y directions are prescribed. Poisson's
# ratio is zero.
#
[Mesh]
file = rotation_test.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Functions]
# Functions
[./x_200]
type = ParsedFunction
symbol_names = 'delta t0'
symbol_values = '-1e-6 1.0'
expression = 'if(t<=1.0, delta*t, (1.0+delta)*cos(pi/2*(t-t0)) - 1.0)'
[../]
[./y_200]
type = ParsedFunction
symbol_names = 'delta t0'
symbol_values = '-1e-6 1.0'
expression = 'if(t<=1.0, 0.0, (1.0+delta)*sin(pi/2*(t-t0)))'
[../]
[./x_300]
type = ParsedFunction
symbol_names = 'delta t0'
symbol_values = '-1e-6 1.0'
expression = 'if(t<=1.0, delta*t, (1.0+delta)*cos(pi/2.0*(t-t0)) - sin(pi/2.0*(t-t0)) - 1.0)'
[../]
[./y_300]
type = ParsedFunction
symbol_names = 'delta t0'
symbol_values = '-1e-6 1.0'
expression = 'if(t<=1.0, 0.0, cos(pi/2.0*(t-t0)) + (1+delta)*sin(pi/2.0*(t-t0)) - 1.0)'
[../]
[./x_400]
type = ParsedFunction
symbol_names = 'delta t0'
symbol_values = '-1e-6 1.0'
expression = 'if(t<=1.0, 0.0, -sin(pi/2.0*(t-t0)))'
[../]
[./y_400]
type = ParsedFunction
symbol_names = 'delta t0'
symbol_values = '-1e-6 1.0'
expression = 'if(t<=1.0, 0.0, cos(pi/2.0*(t-t0)) - 1.0)'
[../]
[]
[Variables]
# Variables
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
# AuxVariables
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
# AuxKernels
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[]
[BCs]
# BCs
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 100
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[../]
[./x_200]
type = FunctionDirichletBC
variable = disp_x
boundary = 200
function = x_200
[../]
[./y_200]
type = FunctionDirichletBC
variable = disp_y
boundary = 200
function = y_200
[../]
[./x_300]
type = FunctionDirichletBC
variable = disp_x
boundary = 300
function = x_300
[../]
[./y_300]
type = FunctionDirichletBC
variable = disp_y
boundary = 300
function = y_300
[../]
[./x_400]
type = FunctionDirichletBC
variable = disp_x
boundary = 400
function = x_400
[../]
[./y_400]
type = FunctionDirichletBC
variable = disp_y
boundary = 400
function = y_400
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = '100 200 300 400'
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 1
C_ijkl = '1.0e6 0.0 0.0 1.0e6 0.0 1.0e6 0.5e6 0.5e6 0.5e6'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 1
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 1
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_xy]
type = ElementAverageValue
variable = stress_xy
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
# Executioner
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type '
petsc_options_value = 'lu'
nl_rel_tol = 1e-30
nl_abs_tol = 1e-20
l_max_its = 20
start_time = 0.0
dt = 0.01
end_time = 2.0
[]
[Outputs]
exodus = true
[] # Outputs
(modules/solid_mechanics/test/tests/multi/three_surface10.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 1.5E-6m in y direction and 0.0E-6 in z direction.
# trial stress_yy = 1.5 and stress_zz = 0.0
#
# Then SimpleTester1 should activate and the algorithm will return to
# stress_yy=1
# internal1 should be 0.5
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1.5E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface10
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/contact/test/tests/mortar_dynamics/block-dynamics-friction-creep.i)
starting_point = 1e-1
offset = -0.095
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
file = long-bottom-block-1elem-blocks.e
[]
[Variables]
[normal_lm]
block = 3
use_dual = true
[]
[frictional_lm]
block = 3
use_dual = true
[]
[]
[AuxVariables]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = '2'
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = '2'
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
block = '2'
[]
[]
[AuxKernels]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = '2'
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = '2'
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = '2'
[]
[]
[ICs]
[disp_y]
block = 2
variable = disp_y
value = '${fparse starting_point + offset}'
type = ConstantIC
[]
[]
[Physics/SolidMechanics/Dynamic]
[all]
add_variables = true
alpha = 0.0
newmark_beta = 0.25
newmark_gamma = 0.5
mass_damping_coefficient = 0.0
stiffness_damping_coefficient = 0.01
displacements = 'disp_x disp_y'
generate_output = 'stress_xx stress_yy'
block = '1 2'
strain = FINITE
[]
[]
[Materials]
[elasticity_2]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[elasticity_1]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e8
poissons_ratio = 0.3
[]
[multiple_inelastic]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
block = '2'
[]
[creep]
type = PowerLawCreepStressUpdate
coefficient = 1.0e-23 # 10e-24
n_exponent = 4
activation_energy = 0
block = '2'
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[]
[density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '775'
[]
[]
# User object provides the contact force (e.g. LM)
# for the application of the generalized force
[UserObjects]
[weighted_vel_uo]
type = LMWeightedVelocitiesUserObject
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
lm_variable_normal = normal_lm
lm_variable_tangential_one = frictional_lm
secondary_variable = disp_x
disp_x = disp_x
disp_y = disp_y
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeDynamicFrictionalForceLMMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = normal_lm
friction_lm = frictional_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
c = 1e4
c_t = 1e4
mu = 0.5
interpolate_normals = false
newmark_beta = 0.25
newmark_gamma = 0.5
capture_tolerance = 1e-04
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_vel_uo
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = 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 = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = frictional_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 = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = frictional_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_velocities_uo = weighted_vel_uo
[]
[]
[BCs]
[botx]
type = DirichletBC
variable = disp_x
boundary = 40
value = 0.0
[]
[boty]
type = DirichletBC
variable = disp_y
boundary = 40
value = 0.0
[]
[topy]
type = FunctionDirichletBC
variable = disp_y
boundary = 30
function = '${starting_point} * cos(2 * pi / 4 * t) + ${offset}'
[]
[leftx]
type = FunctionDirichletBC
variable = disp_x
boundary = 30 # 50
function = '1e-2*t' #'0.1 *sin(2 * pi / 12 * t)'
[]
[]
[Executioner]
type = Transient
end_time = 0.25
dt = 0.05
dtmin = 0.05
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason -pc_svd_monitor '
'-snes_linesearch_monitor -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -mat_mffd_err '
petsc_options_value = 'lu NONZERO 1e-15 1e-5'
nl_max_its = 50
line_search = 'none'
snesmf_reuse_base = false
[TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Outputs]
exodus = true
checkpoint = true
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
active = 'num_nl cumulative contact'
[num_nl]
type = NumNonlinearIterations
[]
[cumulative]
type = CumulativeValuePostprocessor
postprocessor = num_nl
[]
[contact]
type = ContactDOFSetSize
variable = normal_lm
subdomain = '3'
execute_on = 'nonlinear timestep_end'
[]
[]
(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/solid_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement_with_gravity.i)
# One 3D element under ramped displacement loading.
#
# loading in z direction:
# time : 0.0 0.1 0.2 0.3
# disp : 0.0 0.0 -0.01 -0.01
# Gravity is applied in y direction. To equilibrate the system
# under gravity, a static analysis is run in the first time step
# by turning off the inertial terms. (see controls block and
# DynamicSolidMechanics block).
# Result: The displacement at the top node in the z direction should match
# the prescribed displacement. Also, the z acceleration should
# be two triangular pulses, one peaking at 0.1 and another peaking at
# 0.2.
# The y displacement would be offset by the gravity displacement.
# Also the y acceleration and velocity should be zero until the loading in
# the z direction starts (i.e, until 0.1s)
# Note: The time step used in the displacement data file should match
# the simulation time step (dt and dtmin in the Executioner block).
[Mesh]
type = GeneratedMesh
dim = 3 # Dimension of the mesh
nx = 1 # Number of elements in the x direction
ny = 1 # Number of elements in the y direction
nz = 1 # Number of elements in the z direction
xmin = 0.0
xmax = 1
ymin = 0.0
ymax = 1
zmin = 0.0
zmax = 1
allow_renumbering = false # So NodalVariableValue can index by id
[]
[Variables] # variables that are solved
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables] # variables that are calculated for output
[./accel_x]
[../]
[./vel_x]
[../]
[./accel_y]
[../]
[./vel_y]
[../]
[./accel_z]
[../]
[./vel_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./DynamicSolidMechanics] # zeta*K*vel + K * disp
displacements = 'disp_x disp_y disp_z'
stiffness_damping_coefficient = 0.000025
static_initialization = true #turns off rayliegh damping for the first time step to stabilize system under gravity
[../]
[./inertia_x] # M*accel + eta*M*vel
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25 # Newmark time integration
gamma = 0.5 # Newmark time integration
eta = 19.63
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
eta = 19.63
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
eta = 19.63
[../]
[./gravity]
type = Gravity
variable = disp_y
value = -9.81
[../]
[]
[AuxKernels]
[./accel_x] # Calculates and stores acceleration at the end of time step
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x] # Calculates and stores velocity at the end of the time step
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_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_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./displacement_front]
type = PiecewiseLinear
data_file = 'displacement.csv'
format = columns
[../]
[]
[BCs]
[./prescribed_displacement]
type = PresetDisplacement
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
boundary = front
function = displacement_front
[../]
[./anchor_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./anchor_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./anchor_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
youngs_modulus = 325e6 #Pa
poissons_ratio = 0.3
type = ComputeIsotropicElasticityTensor
block = 0
[../]
[./strain]
#Computes the strain, assuming small strains
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
#Computes the stress, using linear elasticity
type = ComputeLinearElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 2000 #kg/m3
[../]
[]
[Controls] # turns off inertial terms for the first time step
[./period0]
type = TimePeriod
disable_objects = '*/vel_x */vel_y */vel_z */accel_x */accel_y */accel_z */inertia_x */inertia_y */inertia_z'
start_time = 0.0
end_time = 0.1 # dt used in the simulation
[../]
[../]
[Executioner]
type = Transient
start_time = 0
end_time = 3.0
l_tol = 1e-6
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
dt = 0.1
timestep_tolerance = 1e-6
[]
[Postprocessors] # These quantites are printed to a csv file at every time step
[./_dt]
type = TimestepSize
[../]
[./accel_6x]
type = NodalVariableValue
nodeid = 6
variable = accel_x
[../]
[./accel_6y]
type = NodalVariableValue
nodeid = 6
variable = accel_y
[../]
[./accel_6z]
type = NodalVariableValue
nodeid = 6
variable = accel_z
[../]
[./vel_6x]
type = NodalVariableValue
nodeid = 6
variable = vel_x
[../]
[./vel_6y]
type = NodalVariableValue
nodeid = 6
variable = vel_y
[../]
[./vel_6z]
type = NodalVariableValue
nodeid = 6
variable = vel_z
[../]
[./disp_6x]
type = NodalVariableValue
nodeid = 6
variable = disp_x
[../]
[./disp_6y]
type = NodalVariableValue
nodeid = 6
variable = disp_y
[../]
[./disp_6z]
type = NodalVariableValue
nodeid = 6
variable = disp_z
[../]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/user_object_based/user_object_Voce_BCC.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD4
displacements = 'disp_x disp_y'
nx = 2
ny = 2
[]
[GlobalParams]
volumetric_locking_correction = true
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y'
use_displaced_mesh = true
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./e_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[UserObjects]
[./prop_read]
type = PropertyReadFile
prop_file_name = 'euler_ang_file.txt'
# Enter file data as prop#1, prop#2, .., prop#nprop
nprop = 3
read_type = element
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = lage
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = fp
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = state_var_gss
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[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 12 0.001 0.1 13 24 0.001 0.1 25 48 0.001 0.1'
uo_state_var_name = state_var_gss
[../]
[./slip_resistance_gss]
type = CrystalPlasticitySlipResistanceGSS
variable_size = 48
uo_state_var_name = state_var_gss
[../]
[./state_var_gss]
type = CrystalPlasticityStateVariable
variable_size = 48
groups = '0 12 24 48'
group_values = '50 51 52'
uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_voce
scale_factor = 1.0
[../]
[./state_var_evol_rate_comp_voce]
type = CrystalPlasticityStateVarRateComponentVoce
variable_size = 48
crystal_lattice_type = 'BCC'
groups = '0 12 24 48'
h0_group_values = '1 2 3'
tau0_group_values = '50 51 52'
tauSat_group_values = '70 81 92'
hardeningExponent_group_values = '1 2 3'
selfHardening_group_values ='4 5 6'
coplanarHardening_group_values='7 8 9'
GroupGroup_Hardening_group_values = '10 20 30
40 50 60
70 80 90'
uo_slip_rate_name = slip_rate_gss
uo_state_var_name = state_var_gss
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainUObasedCP
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_voce'
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
read_prop_user_object = prop_read
[../]
[]
[Postprocessors]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./e_yy]
type = ElementAverageValue
variable = e_yy
[../]
[./fp_yy]
type = ElementAverageValue
variable = fp_yy
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.01
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.01
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/examples/cframe_iga/cframe_iga.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[igafile]
type = FileMeshGenerator
file = cframe_iga_coarse.e
clear_spline_nodes = true
[]
[]
[Variables]
[disp_x]
order = SECOND
family = RATIONAL_BERNSTEIN
[]
[disp_y]
order = SECOND
family = RATIONAL_BERNSTEIN
[]
[disp_z]
order = SECOND
family = RATIONAL_BERNSTEIN
[]
[]
[Kernels]
[SolidMechanics]
#Stress divergence kernels
displacements = 'disp_x disp_y disp_z'
[]
[]
[AuxVariables]
[von_mises]
#Dependent variable used to visualize the von Mises stress
order = SECOND
family = MONOMIAL
[]
[Max_Princ]
#Dependent variable used to visualize the Hoop stress
order = SECOND
family = MONOMIAL
[]
[stress_xx]
order = SECOND
family = MONOMIAL
[]
[stress_yy]
order = SECOND
family = MONOMIAL
[]
[stress_zz]
order = SECOND
family = MONOMIAL
[]
[]
[AuxKernels]
[von_mises_kernel]
#Calculates the von mises stress and assigns it to von_mises
type = RankTwoScalarAux
variable = von_mises
rank_two_tensor = stress
scalar_type = VonMisesStress
[]
[MaxPrin]
type = RankTwoScalarAux
variable = Max_Princ
rank_two_tensor = stress
scalar_type = MaxPrincipal
[]
[stress_xx]
type = RankTwoAux
index_i = 0
index_j = 0
rank_two_tensor = stress
variable = stress_xx
[]
[stress_yy]
type = RankTwoAux
index_i = 1
index_j = 1
rank_two_tensor = stress
variable = stress_yy
[]
[stress_zz]
type = RankTwoAux
index_i = 2
index_j = 2
rank_two_tensor = stress
variable = stress_zz
[]
[]
[BCs]
[Pressure]
[load]
#Applies the pressure
boundary = '3'
factor = 2000 # psi
[]
[]
[anchor_x]
#Anchors the bottom and sides against deformation in the x-direction
type = DirichletBC
variable = disp_x
boundary = '2'
value = 0.0
[]
[anchor_y]
#Anchors the bottom and sides against deformation in the y-direction
type = DirichletBC
variable = disp_y
boundary = '2'
value = 0.0
[]
[anchor_z]
#Anchors the bottom and sides against deformation in the z-direction
type = DirichletBC
variable = disp_z
boundary = '2'
value = 0.0
[]
[]
[Materials]
[elasticity_tensor_AL]
#Creates the elasticity tensor using concrete parameters
youngs_modulus = 24e6 #psi
poissons_ratio = 0.33
type = ComputeIsotropicElasticityTensor
[]
[strain]
#Computes the strain, assuming small strains
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[]
[stress]
#Computes the stress, using linear elasticity
type = ComputeLinearElasticStress
[]
[density_AL]
#Defines the density of steel
type = GenericConstantMaterial
prop_names = density
prop_values = 6.99e-4 # lbm/in^3
[]
[]
[Preconditioning]
[SMP]
#Creates the entire Jacobian, for the Newton solve
type = SMP
full = true
[]
[]
[Postprocessors]
[max_principal_stress]
type = PointValue
point = '0.000000 -1.500000 -4.3'
variable = Max_Princ
use_displaced_mesh = false
[]
[maxPrincStress]
type = ElementExtremeValue
variable = Max_Princ
[]
[]
[Executioner]
# We solve a steady state problem using Newton's iteration
type = Steady
solve_type = NEWTON
nl_rel_tol = 1e-9
l_max_its = 300
l_tol = 1e-4
nl_max_its = 30
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 31'
[]
[Outputs]
vtk = true
[]
(modules/solid_mechanics/test/tests/plane_stress/weak_plane_stress_incremental.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./nl_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./min_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = min
[../]
[./max_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = max
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[plane_stress]
planar_formulation = WEAK_PLANE_STRESS
strain = SMALL
incremental = true
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy'
eigenstrain_names = eigenstrain
[]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = nl_strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 1 100'
y='0 0.00 0.00'
[../]
[./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]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-06
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/jacobian/cto15.i)
# Jacobian check for nonlinear, multi-surface plasticity
# This returns to the edge of Mohr Coulomb.
# This is a very nonlinear test and a delicate test because it perturbs around
# an edge of the yield function where some derivatives are not well defined
#
# Plasticity models:
# Mohr-Coulomb with cohesion = 40MPa, friction angle = 35deg, dilation angle = 5deg
# Tensile with strength = 1MPa
#
# Lame lambda = 1GPa. Lame mu = 1.3GPa
#
# NOTE: The yield function tolerances here are set at 100-times what i would usually use
# This is because otherwise the test fails on the 'pearcey' architecture.
# This is because identical stress tensors yield slightly different eigenvalues
# (and hence return-map residuals) on 'pearcey' than elsewhere, which results in
# a different number of NR iterations are needed to return to the yield surface.
# This is presumably because of compiler internals, or the BLAS routines being
# optimised differently or something similar.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int3]
order = CONSTANT
family = MONOMIAL
[../]
[./int4]
order = CONSTANT
family = MONOMIAL
[../]
[./int5]
order = CONSTANT
family = MONOMIAL
[../]
[./int6]
order = CONSTANT
family = MONOMIAL
[../]
[./int7]
order = CONSTANT
family = MONOMIAL
[../]
[./int8]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int0
index = 0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int1
index = 1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int2
index = 2
[../]
[./int3]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int3
index = 3
[../]
[./int4]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int4
index = 4
[../]
[./int5]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int5
index = 5
[../]
[./int6]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int6
index = 6
[../]
[./int7]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int7
index = 7
[../]
[./int8]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int8
index = 8
[../]
[]
[Postprocessors]
[./max_int0]
type = ElementExtremeValue
variable = int0
outputs = console
[../]
[./max_int1]
type = ElementExtremeValue
variable = int1
outputs = console
[../]
[./max_int2]
type = ElementExtremeValue
variable = int2
outputs = console
[../]
[./max_int3]
type = ElementExtremeValue
variable = int3
outputs = console
[../]
[./max_int4]
type = ElementExtremeValue
variable = int4
outputs = console
[../]
[./max_int5]
type = ElementExtremeValue
variable = int5
outputs = console
[../]
[./max_int6]
type = ElementExtremeValue
variable = int6
outputs = console
[../]
[./max_int7]
type = ElementExtremeValue
variable = int7
outputs = console
[../]
[./max_int8]
type = ElementExtremeValue
variable = int8
outputs = console
[../]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console' [../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console' [../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console' [../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console' [../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 4E1
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
yield_function_tolerance = 1.0E-4 # Note larger value
shift = 1.0E-4 # Note larger value
internal_constraint_tolerance = 1.0E-7
[../]
[./ts]
type = SolidMechanicsHardeningConstant
value = 1E2
[../]
[./tensile]
type = SolidMechanicsPlasticTensileMulti
tensile_strength = ts
yield_function_tolerance = 1.0E-4 # Note larger value
shift = 1.0E-4 # Note larger value
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1.0E3 1.3E3'
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '100.1 0.1 -0.2 0.1 0.9 0 -0.2 0 1.1'
eigenstrain_name = ini_stress
[../]
[./multi]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1E-7
plastic_models = 'tensile mc'
max_NR_iterations = 5
specialIC = 'rock'
deactivation_scheme = 'safe'
min_stepsize = 1
max_stepsize_for_dumb = 1
tangent_operator = nonlinear
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_type'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000 test'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1
[]
[Outputs]
file_base = cto15
exodus = false
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/small_deform6.i)
# apply repeated stretches in z direction, and smaller stretches in the x and y directions
# so that sigma_II = sigma_III,
# which means that lode angle = -30deg.
# The allows yield surface in meridional plane to be mapped out
# Using cap smoothing
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0.9E-6*x*sin(t)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0.9E-6*y*sin(t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[./iter_auxk]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 50
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningExponential
value_0 = 0
value_residual = 0.8726646 # 50deg
rate = 3000.0
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
tip_scheme = cap
mc_tip_smoother = 0
cap_start = 3
cap_rate = 0.8
mc_edge_smoother = 20
yield_function_tolerance = 1E-8
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 30
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform6
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/ad_isotropic_elasticity_tensor/lambda_shear_modulus_test.i)
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./stress_11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
add_variables = true
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./stress_11]
type = ADRankTwoAux
variable = stress_11
rank_two_tensor = stress
index_j = 1
index_i = 1
[../]
[]
[BCs]
[./bottom]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = ADDirichletBC
variable = disp_y
boundary = top
value = 0.001
[../]
[]
[Materials]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
lambda = 113636
shear_modulus = 454545
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
l_max_its = 20
nl_max_its = 10
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
(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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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/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'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[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/solid_mechanics/test/tests/mohr_coulomb/planar_hard1.i)
# apply uniform stretches in x, y and z directions.
# let mc_cohesion = 10, mc_cohesion_residual = 2, mc_cohesion_rate =
# With cohesion = C, friction_angle = 60deg, tip_smoother = 4, the
# algorithm should return to
# sigma_m = C*Cos(60)/Sin(60)
# This allows checking of the relationship for C
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningExponential
value_0 = 10
value_residual = 2
rate = 1E4
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 60
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
yield_function_tolerance = 1E-5
use_custom_returnMap = true
shift = 1E-12
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-12
plastic_models = mc
[../]
[]
[Executioner]
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = planar_hard1
exodus = false
[./csv]
type = CSV
execute_on = timestep_end
[../]
[]
(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
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_cutback.i)
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'ux uy uz'
[]
[Variables]
[./ux]
block = 0
[../]
[./uy]
block = 0
[../]
[./uz]
block = 0
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'ux uy uz'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = fp
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = lage
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCrystalPlasticity
block = 0
gtol = 1e-2
slip_sys_file_name = input_slip_sys.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
hprops = '1.0 541.5 60.8 109.8 2.5'
gprops = '1 4 60.8 5 8 60.8 9 12 60.8'
tan_mod_type = exact
gen_random_stress_flag = true
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'ux uy uz'
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
block = 'ANY_BLOCK_ID 0'
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_factor_shift_type'
petsc_options_value = 'nonzero'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 1.0
dtmax = 10.0
dtmin = 1e-5
num_steps = 3
snesmf_reuse_base = false
[]
[Outputs]
file_base = crysp_cutback_out
exodus = true
csv = true
gnuplot = true
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_temperature_coefficients.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[creep_strain_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
[]
[creep_strain_zz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
[]
[creep_strain_xz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xz
index_i = 0
index_j = 2
[]
[creep_strain_yz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yz
index_i = 1
index_j = 2
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0e-9 1.0'
y = '0 -4e1 -4e1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = 'trial_creep_aniso_iso'
max_iterations = 50
[]
[hill_constants]
type = ADHillConstants
# F G H L M N
hill_constants = "0.5 0.5 0.5 1.5 1.5 1.5"
[]
[trial_creep_aniso_iso]
type = ADHillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
relative_tolerance = 1e-20
absolute_tolerance = 1e-20
internal_solve_output_on = never
# Force it to not use integration error
max_integration_error = 1.0
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-13
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 50
dt = 5.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_yy]
type = ElementalVariableValue
variable = creep_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_zz]
type = ElementalVariableValue
variable = creep_strain_zz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_xy]
type = ElementalVariableValue
variable = creep_strain_xy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_yz]
type = ElementalVariableValue
variable = creep_strain_yz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_xz]
type = ElementalVariableValue
variable = creep_strain_xz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/rates/rotation.i)
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
[]
[bottom_left]
type = ExtraNodesetGenerator
input = msh
new_boundary = 'bottom_left'
coord = '0 0 0'
[]
[top_left]
type = ExtraNodesetGenerator
input = bottom_left
new_boundary = 'top_left'
coord = '0 1 0'
[]
[top_right]
type = ExtraNodesetGenerator
input = top_left
new_boundary = 'top_right'
coord = '1 1 0'
[]
[bottom_right]
type = ExtraNodesetGenerator
input = top_right
new_boundary = 'bottom_right'
coord = '1 0 0'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 0
index_j = 0
execute_on = TIMESTEP_END
[]
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[AuxKernel]
type = RankTwoAux
rank_two_tensor = cauchy_stress
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[]
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom_left'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'bottom_left'
value = 0
[]
[top_left_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'top_left'
function = 'theta:=if(t<1,0,t-1); -sin(theta)'
[]
[top_left_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top_left'
function = 'theta:=if(t<1,0,t-1); cos(theta)-1'
[]
[bottom_right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'bottom_right'
function = 'theta:=if(t<1,0,t-1); if(t<1,t,2*cos(theta)-1)'
[]
[bottom_right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'bottom_right'
function = 'theta:=if(t<1,0,t-1); if(t<1,0,2*sin(theta))'
[]
[top_right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'top_right'
function = 'theta:=if(t<1,0,t-1); phi:=theta+atan(0.5); if(t<1,t,sqrt(5)*cos(phi)-1)'
[]
[top_right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top_right'
function = 'theta:=if(t<1,0,t-1); phi:=theta+atan(0.5); if(t<1,0,sqrt(5)*sin(phi)-1)'
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e5
poissons_ratio = 0
[]
[stress]
type = ComputeLagrangianLinearElasticStress
[]
[strain]
type = ComputeLagrangianStrain
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = stress_xx
execute_on = 'INITIAL TIMESTEP_END'
[]
[syy]
type = ElementAverageValue
variable = stress_yy
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
dt = 0.01
end_time = '${fparse pi/2+1}'
solve_type = NEWTON
line_search = none
petsc_options_iname = -pc_type
petsc_options_value = lu
automatic_scaling = true
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
[]
[Outputs]
csv = true
[]
(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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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/combined/test/tests/inelastic_strain/creep/creep_nl1.i)
#
# Test for effective strain calculation.
# Boundary conditions from NAFEMS test NL1
#
# This is not a verification test. This is the creep analog of the same test
# in the elas_plas directory. Instead of using the IsotropicPlasticity
# material model this test uses the PowerLawCreep material model.
#
[GlobalParams]
temperature = temp
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = one_elem2.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
initial_condition = 600.0
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
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
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./eff_creep_strain]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
decomposition_method = EigenSolution
[../]
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[../]
[]
[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_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
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
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[./pressure]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = pressure
scalar_type = Hydrostatic
execute_on = timestep_end
[../]
[./elastic_strain_xx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./elastic_strain_zz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./tot_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_xx
index_i = 0
index_j = 0
[../]
[./tot_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_yy
index_i = 1
index_j = 1
[../]
[./tot_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_zz
index_i = 2
index_j = 2
[../]
[./eff_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = eff_creep_strain
[../]
[]
[Functions]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0'
y = '0.0 0.25e-4 0.50e-4'
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[./temp_fix]
type = DirichletBC
variable = temp
boundary = '1 2'
value = 600.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
[../]
[./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
[../]
[./thermal]
type = HeatConductionMaterial
block = 1
specific_heat = 1.0
thermal_conductivity = 100.
[../]
[./density]
type = Density
block = 1
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-6
l_max_its = 100
nl_max_its = 20
dt = 1.0
start_time = 0.0
num_steps = 100
end_time = 2.0
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./stress_xy]
type = ElementAverageValue
variable = stress_xy
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./pressure]
type = ElementAverageValue
variable = pressure
[../]
[./el_strain_xx]
type = ElementAverageValue
variable = elastic_strain_xx
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./el_strain_zz]
type = ElementAverageValue
variable = elastic_strain_zz
[../]
[./crp_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
[../]
[./crp_strain_yy]
type = ElementAverageValue
variable = creep_strain_yy
[../]
[./crp_strain_zz]
type = ElementAverageValue
variable = creep_strain_zz
[../]
[./eff_creep_strain]
type = ElementAverageValue
variable = eff_creep_strain
[../]
[./tot_strain_xx]
type = ElementAverageValue
variable = tot_strain_xx
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./tot_strain_zz]
type = ElementAverageValue
variable = tot_strain_zz
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/solid_mechanics/test/tests/drucker_prager/small_deform2_lode_zero.i)
# apply repeated stretches in x, y and z directions, so that mean_stress = 0
# This maps out the yield surface in the octahedral plane for zero mean stress
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1.5E-6*x+2E-6*x*sin(t)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2E-6*y*sin(2*t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-2E-6*z*(sin(t)+sin(2*t))'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 20
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 0
[../]
[./mc]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
smoother = 4
mc_interpolation_scheme = lode_zero
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-12
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 100
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2_lode_zero
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/thermal_expansion/multiple_thermal_eigenstrains.i)
# The primary purpose of this test is to verify that the ability to combine
# multiple eigenstrains works correctly. It should behave identically to the
# constant_expansion_coeff.i model in this directory. Instead of applying the
# thermal expansion in one eigenstrain, it splits that into two eigenstrains
# that get added together.
# This test involves only thermal expansion strains on a 2x2x2 cube of approximate
# steel material. An initial temperature of 25 degrees C is given for the material,
# and an auxkernel is used to calculate the temperature in the entire cube to
# raise the temperature each time step. After the first timestep,in which the
# temperature jumps, the temperature increases by 6.25C each timestep.
# The thermal strain increment should therefore be
# 6.25 C * 1.3e-5 1/C = 8.125e-5 m/m.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(500.0)+300.0
[../]
[]
[Kernels]
[SolidMechanics]
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
use_displaced_mesh = false
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./z_bot]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_strain]
type = ComputeIncrementalStrain
eigenstrain_names = 'eigenstrain1 eigenstrain2'
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain1]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.0e-5
temperature = temp
eigenstrain_name = eigenstrain1
mean_thermal_expansion_coefficient_name = mean1
[../]
[./thermal_expansion_strain2]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 0.3e-5
temperature = temp
eigenstrain_name = eigenstrain2
mean_thermal_expansion_coefficient_name = mean2
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
checkpoint = true
[]
[Postprocessors]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 0
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
block = 0
[../]
[./strain_zz]
type = ElementAverageValue
variable = strain_zz
block = 0
[../]
[./temperature]
type = AverageNodalVariableValue
variable = temp
block = 0
[../]
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/pull_push_h.i)
# A column of elements has its bottom pulled down, and then pushed up again.
# Hardening of the tensile strength means that the top element also
# experiences plastic deformation
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 2
xmin = -10
xmax = 10
ymin = -10
ymax = 10
zmin = -100
zmax = 0
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[]
[BCs]
[./no_x2]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.0
[../]
[./no_x1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_y1]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./no_y2]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0
[../]
[./topz]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[../]
[./bottomz]
type = FunctionDirichletBC
variable = disp_z
boundary = back
function = 'if(t>1,-2.0+t,-t)'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[UserObjects]
[./coh_irrelevant]
type = SolidMechanicsHardeningCubic
value_0 = 2E6
value_residual = 1E6
internal_limit = 0.01
[../]
[./tanphi]
type = SolidMechanicsHardeningCubic
value_0 = 0.5
value_residual = 0.2
internal_limit = 0.01
[../]
[./tanpsi]
type = SolidMechanicsHardeningConstant
value = 0.166666666667
[../]
[./t_strength]
type = SolidMechanicsHardeningCubic
value_0 = 0
value_residual = 1E8
internal_limit = 0.1
[../]
[./c_strength]
type = SolidMechanicsHardeningCubic
value_0 = 1E8
value_residual = 0.0
internal_limit = 0.01
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '6.4E9 6.4E9' # young 16MPa, Poisson 0.25
[../]
[./strain]
type = ComputeIncrementalStrain
[../]
[./admissible]
type = ComputeMultipleInelasticStress
inelastic_models = stress
tangent_operator = nonlinear
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakPlaneStressUpdate
cohesion = coh_irrelevant
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
max_NR_iterations = 1000
tip_smoother = 0
smoothing_tol = 0
yield_function_tol = 1E-5
perfect_guess = false
min_step_size = 0.1
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
#petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[../]
[]
[Executioner]
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
line_search = bt
nl_abs_tol = 1E-2
nl_rel_tol = 1e-15
l_tol = 1E-10
l_max_its = 100
nl_max_its = 100
end_time = 3.0
dt = 0.1
type = Transient
[]
[Outputs]
file_base = pull_push_h
exodus = true
csv = true
[]
(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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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/lagrangian/cartesian/total/stabilization/cook_small.i)
[GlobalParams]
displacements = 'disp_x disp_y'
large_kinematics = false
stabilize_strain = true
[]
[Mesh]
type = FileMesh
file = cook_mesh.exo
dim = 2
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = pk1_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[BCs]
[fixed_x]
type = DirichletBC
preset = true
variable = disp_x
boundary = canti
value = 0.0
[]
[fixed_y]
type = DirichletBC
preset = true
variable = disp_y
boundary = canti
value = 0.0
[]
[pull]
type = NeumannBC
variable = disp_y
boundary = loading
value = 10.0
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 250.0
poissons_ratio = 0.4999999
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = 'newton'
line_search = 'none'
petsc_options_iname = -pc_type
petsc_options_value = lu
nl_abs_tol = 1e-10
nl_rel_tol = 1e-6
l_tol = 1e-10
[]
[Postprocessors]
[value]
type = PointValue
variable = disp_y
point = '48 60 0'
use_displaced_mesh = false
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/convergence/ld-stress.i)
# 2D test with just strain control
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
constraint_types = 'stress strain strain stress stress strain stress stress stress'
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '3d.exo'
[]
[sidesets]
type = SideSetsFromNormalsGenerator
input = base
normals = '-1 0 0
1 0 0
0 -1 0
0 1 0
'
' 0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'left right bottom top back front'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[hvar]
family = SCALAR
order = NINTH
[]
[]
[ICs]
[disp_x]
type = RandomIC
variable = disp_x
min = -0.1
max = 0.1
[]
[disp_y]
type = RandomIC
variable = disp_y
min = -0.1
max = 0.1
[]
[disp_z]
type = RandomIC
variable = disp_z
min = -0.1
max = 0.1
[]
[hvar]
type = ScalarConstantIC
variable = hvar
value = 0.1
[]
[]
[AuxVariables]
[s11]
family = MONOMIAL
order = CONSTANT
[]
[s21]
family = MONOMIAL
order = CONSTANT
[]
[s31]
family = MONOMIAL
order = CONSTANT
[]
[s12]
family = MONOMIAL
order = CONSTANT
[]
[s22]
family = MONOMIAL
order = CONSTANT
[]
[s32]
family = MONOMIAL
order = CONSTANT
[]
[s13]
family = MONOMIAL
order = CONSTANT
[]
[s23]
family = MONOMIAL
order = CONSTANT
[]
[s33]
family = MONOMIAL
order = CONSTANT
[]
[F11]
family = MONOMIAL
order = CONSTANT
[]
[F21]
family = MONOMIAL
order = CONSTANT
[]
[F31]
family = MONOMIAL
order = CONSTANT
[]
[F12]
family = MONOMIAL
order = CONSTANT
[]
[F22]
family = MONOMIAL
order = CONSTANT
[]
[F32]
family = MONOMIAL
order = CONSTANT
[]
[F13]
family = MONOMIAL
order = CONSTANT
[]
[F23]
family = MONOMIAL
order = CONSTANT
[]
[F33]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[s11]
type = RankTwoAux
variable = s11
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[s21]
type = RankTwoAux
variable = s21
rank_two_tensor = pk1_stress
index_i = 1
index_j = 0
[]
[s31]
type = RankTwoAux
variable = s31
rank_two_tensor = pk1_stress
index_i = 2
index_j = 0
[]
[s12]
type = RankTwoAux
variable = s12
rank_two_tensor = pk1_stress
index_i = 0
index_j = 1
[]
[s22]
type = RankTwoAux
variable = s22
rank_two_tensor = pk1_stress
index_i = 1
index_j = 1
[]
[s32]
type = RankTwoAux
variable = s32
rank_two_tensor = pk1_stress
index_i = 2
index_j = 1
[]
[s13]
type = RankTwoAux
variable = s13
rank_two_tensor = pk1_stress
index_i = 0
index_j = 2
[]
[s23]
type = RankTwoAux
variable = s23
rank_two_tensor = pk1_stress
index_i = 1
index_j = 2
[]
[s33]
type = RankTwoAux
variable = s33
rank_two_tensor = pk1_stress
index_i = 2
index_j = 2
[]
[F11]
type = RankTwoAux
variable = F11
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 0
[]
[F21]
type = RankTwoAux
variable = F21
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 0
[]
[F31]
type = RankTwoAux
variable = F31
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 0
[]
[F12]
type = RankTwoAux
variable = F12
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 1
[]
[F22]
type = RankTwoAux
variable = F22
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[F32]
type = RankTwoAux
variable = F32
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 1
[]
[F13]
type = RankTwoAux
variable = F13
rank_two_tensor = deformation_gradient
index_i = 0
index_j = 2
[]
[F23]
type = RankTwoAux
variable = F23
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 2
[]
[F33]
type = RankTwoAux
variable = F33
rank_two_tensor = deformation_gradient
index_i = 2
index_j = 2
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
targets = 'stress11 zero zero stress12 stress22 zero stress13 stress23 stress33'
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[stress11]
type = ParsedFunction
expression = '4.0e2*t'
[]
[stress22]
type = ParsedFunction
expression = '-2.0e2*t'
[]
[stress33]
type = ParsedFunction
expression = '8.0e2*t'
[]
[stress23]
type = ParsedFunction
expression = '2.0e2*t'
[]
[stress13]
type = ParsedFunction
expression = '-7.0e2*t'
[]
[stress12]
type = ParsedFunction
expression = '1.0e2*t'
[]
[stress32]
type = ParsedFunction
expression = '1.0e2*t'
[]
[stress31]
type = ParsedFunction
expression = '2.0e2*t'
[]
[stress21]
type = ParsedFunction
expression = '-1.5e2*t'
[]
[zero]
type = ConstantFunction
value = 0
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y z'
[]
[y]
variable = disp_y
auto_direction = 'x y z'
[]
[z]
variable = disp_z
auto_direction = 'x y z'
[]
[]
[fix1_x]
type = DirichletBC
boundary = "fix_all"
variable = disp_x
value = 0
[]
[fix1_y]
type = DirichletBC
boundary = "fix_all"
variable = disp_y
value = 0
[]
[fix1_z]
type = DirichletBC
boundary = "fix_all"
variable = disp_z
value = 0
[]
[fix2_x]
type = DirichletBC
boundary = "fix_xy"
variable = disp_x
value = 0
[]
[fix2_y]
type = DirichletBC
boundary = "fix_xy"
variable = disp_y
value = 0
[]
[fix3_z]
type = DirichletBC
boundary = "fix_z"
variable = disp_z
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[elastic_tensor_4]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 76000.0
poissons_ratio = 0.11
block = '4'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[s11]
type = ElementAverageValue
variable = s11
execute_on = 'initial timestep_end'
[]
[s21]
type = ElementAverageValue
variable = s21
execute_on = 'initial timestep_end'
[]
[s31]
type = ElementAverageValue
variable = s31
execute_on = 'initial timestep_end'
[]
[s12]
type = ElementAverageValue
variable = s12
execute_on = 'initial timestep_end'
[]
[s22]
type = ElementAverageValue
variable = s22
execute_on = 'initial timestep_end'
[]
[s32]
type = ElementAverageValue
variable = s32
execute_on = 'initial timestep_end'
[]
[s13]
type = ElementAverageValue
variable = s13
execute_on = 'initial timestep_end'
[]
[s23]
type = ElementAverageValue
variable = s23
execute_on = 'initial timestep_end'
[]
[s33]
type = ElementAverageValue
variable = s33
execute_on = 'initial timestep_end'
[]
[F11]
type = ElementAverageValue
variable = F11
execute_on = 'initial timestep_end'
[]
[F21]
type = ElementAverageValue
variable = F21
execute_on = 'initial timestep_end'
[]
[F31]
type = ElementAverageValue
variable = F31
execute_on = 'initial timestep_end'
[]
[F12]
type = ElementAverageValue
variable = F12
execute_on = 'initial timestep_end'
[]
[F22]
type = ElementAverageValue
variable = F22
execute_on = 'initial timestep_end'
[]
[F32]
type = ElementAverageValue
variable = F32
execute_on = 'initial timestep_end'
[]
[F13]
type = ElementAverageValue
variable = F13
execute_on = 'initial timestep_end'
[]
[F23]
type = ElementAverageValue
variable = F23
execute_on = 'initial timestep_end'
[]
[F33]
type = ElementAverageValue
variable = F33
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 10
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 0.2
[]
[Outputs]
exodus = false
csv = false
[]
(modules/porous_flow/test/tests/energy_conservation/heat04.i)
# The sample is a single unit element, with fixed displacements on
# all sides. A heat source of strength S (J/m^3/s) is applied into
# the element. There is no fluid flow or heat flow. The rise
# in temperature, porepressure and stress, and the change in porosity is
# matched with theory.
#
# In this case, fluid mass must be conserved, and there is no
# volumetric strain, so
# porosity * fluid_density = constant
# Also, the energy-density in the rock-fluid system increases with S:
# d/dt [(1 - porosity) * rock_density * rock_heat_cap * T + porosity * fluid_density * fluid_heat_cap * T] = S
# Also, the porosity evolves according to THM as
# porosity = biot + (porosity0 - biot) * exp( (biot - 1) * P / fluid_bulk + rock_thermal_exp * T)
# Finally, the effective stress must be exactly zero (as there is
# no strain).
#
# Let us assume that
# fluid_density = dens0 * exp(P / fluid_bulk - fluid_thermal_exp * T)
# Then the conservation of fluid mass means
# porosity = por0 * exp(- P / fluid_bulk + fluid_thermal_exp * T)
# where dens0 * por0 = the initial fluid mass.
# The last expression for porosity, combined with the THM one,
# and assuming that biot = 1 for simplicity, gives
# porosity = 1 + (porosity0 - 1) * exp(rock_thermal_exp * T) = por0 * exp(- P / fluid_bulk + fluid_thermal_exp * T) .... (A)
#
# This stuff may be substituted into the heat energy-density equation:
# S = d/dt [(1 - porosity0) * exp(rock_thermal_exp * T) * rock_density * rock_heat_cap * T + porosity * fluid_density * fluid_heat_cap * T]
#
# If S is constant then
# S * t = (1 - porosity0) * exp(rock_thermal_exp * T) * rock_density * rock_heat_cap * T + porosity * fluid_density * fluid_heat_cap * T
# with T(t=0) = 0 then Eqn(A) implies that por0 = porosity0 and
# P / fluid_bulk = fluid_thermal_exp * T - log(1 + (por0 - 1) * exp(rock_thermal_exp * T)) + log(por0)
#
# Parameters:
# A = 2
# fluid_bulk = 2.0
# dens0 = 3.0
# fluid_thermal_exp = 0.5
# fluid_heat_cap = 2
# por0 = 0.5
# rock_thermal_exp = 0.25
# rock_density = 5
# rock_heat_capacity = 0.2
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.5
cv = 2
cp = 2
bulk_modulus = 2.0
density0 = 3.0
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pp]
[]
[temp]
[]
[]
[BCs]
[confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[]
[confinez]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back front'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 1.0
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 1.0
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 1.0
component = 2
variable = disp_z
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = pp
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[]
[temp]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[poro_vol_exp_temp]
type = PorousFlowHeatVolumetricExpansion
variable = temp
[]
[heat_source]
type = BodyForce
function = 1
variable = temp
[]
[]
[Functions]
[err_T_fcn]
type = ParsedFunction
symbol_names = 'por0 rte temp rd rhc m0 fhc source'
symbol_values = '0.5 0.25 t0 5 0.2 1.5 2 1'
expression = '((1-por0)*exp(rte*temp)*rd*rhc*temp+m0*fhc*temp-source*t)/(source*t)'
[]
[err_pp_fcn]
type = ParsedFunction
symbol_names = 'por0 rte temp rd rhc m0 fhc source bulk pp fte'
symbol_values = '0.5 0.25 t0 5 0.2 1.5 2 1 2 p0 0.5'
expression = '(bulk*(fte*temp-log(1+(por0-1)*exp(rte*temp))+log(por0))-pp)/pp'
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[porosity]
type = PorousFlowPropertyAux
property = porosity
variable = porosity
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temp pp disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[porosity]
type = PorousFlowPorosity
thermal = true
fluid = true
mechanical = true
ensure_positive = false
biot_coefficient = 1.0
porosity_zero = 0.5
thermal_expansion_coeff = 0.25
solid_bulk = 2
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 0.2
density = 5.0
[]
[ppss]
type = PorousFlow1PhaseFullySaturated
porepressure = pp
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
temperature_unit = Kelvin
fp = the_simple_fluid
phase = 0
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = 'console csv'
execute_on = 'timestep_end'
point = '0 0 0'
variable = pp
[]
[t0]
type = PointValue
outputs = 'console csv'
execute_on = 'timestep_end'
point = '0 0 0'
variable = temp
[]
[porosity]
type = PointValue
outputs = 'console csv'
execute_on = 'timestep_end'
point = '0 0 0'
variable = porosity
[]
[stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[]
[stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[]
[stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[]
[fluid_mass]
type = PorousFlowFluidMass
fluid_component = 0
execute_on = 'timestep_end'
outputs = 'console csv'
[]
[total_heat]
type = PorousFlowHeatEnergy
phase = 0
execute_on = 'timestep_end'
outputs = 'console csv'
[]
[err_T]
type = FunctionValuePostprocessor
function = err_T_fcn
[]
[err_P]
type = FunctionValuePostprocessor
function = err_pp_fcn
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-12 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1
end_time = 5
[]
[Outputs]
execute_on = 'initial timestep_end'
file_base = heat04
[csv]
type = CSV
[]
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/homogenization/small-tests/1d.i)
# 1D strain controlled test
[GlobalParams]
displacements = 'disp_x'
large_kinematics = false
macro_gradient = hvar
homogenization_constraint = homogenization
[]
[Mesh]
[base]
type = FileMeshGenerator
file = '1d.exo'
[]
[ss]
type = SideSetsFromPointsGenerator
input = base
points = '-1 0 0
7 0 0'
new_boundary = 'left right'
[]
[]
[Variables]
[disp_x]
[]
[hvar]
family = SCALAR
order = FIRST
[]
[]
[AuxVariables]
[sxx]
family = MONOMIAL
order = CONSTANT
[]
[exx]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[sxx]
type = RankTwoAux
variable = sxx
rank_two_tensor = pk1_stress
index_i = 0
index_j = 0
[]
[exx]
type = RankTwoAux
variable = exx
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
[]
[]
[UserObjects]
[homogenization]
type = HomogenizationConstraint
constraint_types = ${constraint_types}
targets = ${targets}
execute_on = 'INITIAL LINEAR NONLINEAR'
[]
[]
[Kernels]
[sdx]
type = HomogenizedTotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[]
[ScalarKernels]
[enforce]
type = HomogenizationConstraintScalarKernel
variable = hvar
[]
[]
[Functions]
[func_stress]
type = ParsedFunction
expression = '1800*t'
[]
[func_strain]
type = ParsedFunction
expression = '1.0e-2*t'
[]
[]
[BCs]
[Periodic]
[all]
variable = disp_x
auto_direction = 'x'
[]
[]
[centerfix_x]
type = DirichletBC
boundary = "fixme"
variable = disp_x
value = 0
[]
[]
[Materials]
[elastic_tensor_1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
block = '1'
[]
[elastic_tensor_2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 120000.0
poissons_ratio = 0.21
block = '2'
[]
[elastic_tensor_3]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 80000.0
poissons_ratio = 0.4
block = '3'
[]
[elastic_tensor_4]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 76000.0
poissons_ratio = 0.11
block = '4'
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
homogenization_gradient_names = 'homogenization_gradient'
[]
[compute_homogenization_gradient]
type = ComputeHomogenizedLagrangianStrain
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = sxx
execute_on = 'initial timestep_end'
[]
[exx]
type = ElementAverageValue
variable = exx
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = default
automatic_scaling = true
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-8
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 1.0
[]
[Outputs]
exodus = false
csv = true
[]
(modules/porous_flow/test/tests/poro_elasticity/mandel_fully_saturated.i)
# Mandel's problem of consolodation of a drained medium
# Using the FullySaturatedDarcyBase and FullySaturatedMassTimeDerivative kernels
#
# A sample is in plane strain.
# -a <= x <= a
# -b <= y <= b
# It is squashed with constant force by impermeable, frictionless plattens on its top and bottom surfaces (at y=+/-b)
# Fluid is allowed to leak out from its sides (at x=+/-a)
# The porepressure within the sample is monitored.
#
# As is common in the literature, this is simulated by
# considering the quarter-sample, 0<=x<=a and 0<=y<=b, with
# impermeable, roller BCs at x=0 and y=0 and y=b.
# Porepressure is fixed at zero on x=a.
# Porepressure and displacement are initialised to zero.
# Then the top (y=b) is moved downwards with prescribed velocity,
# so that the total force that is inducing this downwards velocity
# is fixed. The velocity is worked out by solving Mandel's problem
# analytically, and the total force is monitored in the simulation
# to check that it indeed remains constant.
#
# Here are the problem's parameters, and their values:
# Soil width. a = 1
# Soil height. b = 0.1
# Soil's Lame lambda. la = 0.5
# Soil's Lame mu, which is also the Soil's shear modulus. mu = G = 0.75
# Soil bulk modulus. K = la + 2*mu/3 = 1
# Drained Poisson ratio. nu = (3K - 2G)/(6K + 2G) = 0.2
# Soil bulk compliance. 1/K = 1
# Fluid bulk modulus. Kf = 8
# Fluid bulk compliance. 1/Kf = 0.125
# Soil initial porosity. phi0 = 0.1
# Biot coefficient. alpha = 0.6
# Biot modulus. M = 1/(phi0/Kf + (alpha - phi0)(1 - alpha)/K) = 4.705882
# Undrained bulk modulus. Ku = K + alpha^2*M = 2.694118
# Undrained Poisson ratio. nuu = (3Ku - 2G)/(6Ku + 2G) = 0.372627
# Skempton coefficient. B = alpha*M/Ku = 1.048035
# Fluid mobility (soil permeability/fluid viscosity). k = 1.5
# Consolidation coefficient. c = 2*k*B^2*G*(1-nu)*(1+nuu)^2/9/(1-nuu)/(nuu-nu) = 3.821656
# Normal stress on top. F = 1
#
# The solution for porepressure and displacements is given in
# AHD Cheng and E Detournay "A direct boundary element method for plane strain poroelasticity" International Journal of Numerical and Analytical Methods in Geomechanics 12 (1988) 551-572.
# The solution involves complicated infinite series, so I shall not write it here
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 1
nz = 1
xmin = 0
xmax = 1
ymin = 0
ymax = 0.1
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[roller_xmin]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[]
[roller_ymin]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[]
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back front'
[]
[xmax_drained]
type = DirichletBC
variable = porepressure
value = 0
boundary = right
[]
[top_velocity]
type = FunctionDirichletBC
variable = disp_y
function = top_velocity
boundary = top
[]
[]
[Functions]
[top_velocity]
type = PiecewiseLinear
x = '0 0.002 0.006 0.014 0.03 0.046 0.062 0.078 0.094 0.11 0.126 0.142 0.158 0.174 0.19 0.206 0.222 0.238 0.254 0.27 0.286 0.302 0.318 0.334 0.35 0.366 0.382 0.398 0.414 0.43 0.446 0.462 0.478 0.494 0.51 0.526 0.542 0.558 0.574 0.59 0.606 0.622 0.638 0.654 0.67 0.686 0.702'
y = '-0.041824842 -0.042730269 -0.043412712 -0.04428867 -0.045509181 -0.04645965 -0.047268246 -0.047974749 -0.048597109 -0.0491467 -0.049632388 -0.050061697 -0.050441198 -0.050776675 -0.051073238 -0.0513354 -0.051567152 -0.051772022 -0.051953128 -0.052113227 -0.052254754 -0.052379865 -0.052490464 -0.052588233 -0.052674662 -0.052751065 -0.052818606 -0.052878312 -0.052931093 -0.052977751 -0.053018997 -0.053055459 -0.053087691 -0.053116185 -0.053141373 -0.05316364 -0.053183324 -0.053200724 -0.053216106 -0.053229704 -0.053241725 -0.053252351 -0.053261745 -0.053270049 -0.053277389 -0.053283879 -0.053289615'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[tot_force]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[tot_force]
type = ParsedAux
coupled_variables = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
expression = '-stress_yy+0.6*porepressure'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.6
component = 2
variable = disp_z
[]
[mass0]
type = PorousFlowFullySaturatedMassTimeDerivative
biot_coefficient = 0.6
coupling_type = HydroMechanical
variable = porepressure
[]
[flux]
type = PorousFlowFullySaturatedDarcyBase
variable = porepressure
gravity = '0 0 0'
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 8
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '0.5 0.75'
# bulk modulus is lambda + 2*mu/3 = 0.5 + 2*0.75/3 = 1
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure_qp]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseFullySaturated
porepressure = porepressure
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid_qp]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst # only the initial value of this is ever used
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
biot_coefficient = 0.6
solid_bulk_compliance = 1
fluid_bulk_modulus = 8
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1.5 0 0 0 1.5 0 0 0 1.5'
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = csv
point = '0.0 0 0'
variable = porepressure
[]
[p1]
type = PointValue
outputs = csv
point = '0.1 0 0'
variable = porepressure
[]
[p2]
type = PointValue
outputs = csv
point = '0.2 0 0'
variable = porepressure
[]
[p3]
type = PointValue
outputs = csv
point = '0.3 0 0'
variable = porepressure
[]
[p4]
type = PointValue
outputs = csv
point = '0.4 0 0'
variable = porepressure
[]
[p5]
type = PointValue
outputs = csv
point = '0.5 0 0'
variable = porepressure
[]
[p6]
type = PointValue
outputs = csv
point = '0.6 0 0'
variable = porepressure
[]
[p7]
type = PointValue
outputs = csv
point = '0.7 0 0'
variable = porepressure
[]
[p8]
type = PointValue
outputs = csv
point = '0.8 0 0'
variable = porepressure
[]
[p9]
type = PointValue
outputs = csv
point = '0.9 0 0'
variable = porepressure
[]
[p99]
type = PointValue
outputs = csv
point = '1 0 0'
variable = porepressure
[]
[xdisp]
type = PointValue
outputs = csv
point = '1 0.1 0'
variable = disp_x
[]
[ydisp]
type = PointValue
outputs = csv
point = '1 0.1 0'
variable = disp_y
[]
[total_downwards_force]
type = ElementAverageValue
outputs = csv
variable = tot_force
[]
[dt]
type = FunctionValuePostprocessor
outputs = console
function = if(0.15*t<0.01,0.15*t,0.01)
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu 1E-14 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 0.7
[TimeStepper]
type = PostprocessorDT
postprocessor = dt
dt = 0.001
[]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = mandel_fully_saturated
[csv]
time_step_interval = 3
type = CSV
[]
[]
(modules/solid_mechanics/test/tests/eigenstrain/reducedOrderRZQuadratic.i)
#
# This test checks whether the ComputeReducedOrderEigenstrain is functioning properly.
#
# If instead of 'reduced_order_eigenstrain', 'thermal_eigenstrain' is given to
# eigenstrain_names in the Physics/SolidMechanics/QuasiStatic/all block, the output will be
# quite different.
#
# Open the reducedOrderRZQuadratic_out_hydro_0001.csv file and plot the hydro variables as
# a function of x.
#
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
coord_type = RZ
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 1
xmax = 3
xmin = 1
ymax = 1
ymin = 0
second_order = true
[]
[Functions]
[./tempLinear]
type = ParsedFunction
expression = '715-5*x'
[../]
[./tempQuadratic]
type = ParsedFunction
symbol_names = 'Tc Te'
symbol_values = '701 700'
expression = '(Te-Tc)/4.0*x*x+(Tc-Te)/2.0*x+Te+3.0*(Tc-Te)/4.0'
[../]
[./tempCubic]
type = ParsedFunction
expression = '-1.25*x*x*x+11.25*x*x-33.75*x+733.75'
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 295.0
[../]
[]
[AuxVariables]
[./hydro_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./hydro_first]
order = FIRST
family = MONOMIAL
[../]
[./hydro_second]
order = SECOND
family = MONOMIAL
[../]
[./sxx_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./sxx_first]
order = FIRST
family = MONOMIAL
[../]
[./sxx_second]
order = SECOND
family = MONOMIAL
[../]
[./szz_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./szz_first]
order = FIRST
family = MONOMIAL
[../]
[./szz_second]
order = SECOND
family = MONOMIAL
[../]
[./thermal_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./thermal_first]
order = FIRST
family = MONOMIAL
[../]
[./thermal_second]
order = SECOND
family = MONOMIAL
[../]
[./reduced_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./reduced_first]
order = FIRST
family = MONOMIAL
[../]
[./reduced_second]
order = SECOND
family = MONOMIAL
[../]
[./temp2]
order = SECOND
family = LAGRANGE
initial_condition = 700
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
add_variables = true
strain = SMALL
incremental = true
temperature = temp2
#eigenstrain_names = thermal_eigenstrain
eigenstrain_names = reduced_order_eigenstrain
[../]
[../]
[../]
[]
[Kernels]
[./heat]
type = Diffusion
variable = temp
[../]
[]
[AuxKernels]
[./hydro_constant_aux]
type = RankTwoScalarAux
variable = hydro_constant
rank_two_tensor = stress
scalar_type = Hydrostatic
execute_on = timestep_end
[../]
[./hydro_first_aux]
type = RankTwoScalarAux
variable = hydro_first
rank_two_tensor = stress
scalar_type = Hydrostatic
execute_on = timestep_end
[../]
[./hydro_second_aux]
type = RankTwoScalarAux
variable = hydro_second
rank_two_tensor = stress
scalar_type = Hydrostatic
execute_on = timestep_end
[../]
[./sxx_constant_aux]
type = RankTwoAux
variable = sxx_constant
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./sxx_first_aux]
type = RankTwoAux
variable = sxx_first
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./sxx_second_aux]
type = RankTwoAux
variable = sxx_second
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./szz_constant_aux]
type = RankTwoAux
variable = szz_constant
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./szz_first_aux]
type = RankTwoAux
variable = szz_first
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./szz_second_aux]
type = RankTwoAux
variable = szz_second
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./thermal_constant_aux]
type = RankTwoAux
variable = thermal_constant
rank_two_tensor = thermal_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./thermal_first_aux]
type = RankTwoAux
variable = thermal_first
rank_two_tensor = thermal_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./thermal_second_aux]
type = RankTwoAux
variable = thermal_second
rank_two_tensor = thermal_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./reduced_constant_aux]
type = RankTwoAux
variable = reduced_constant
rank_two_tensor = reduced_order_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./reduced_first_aux]
type = RankTwoAux
variable = reduced_first
rank_two_tensor = reduced_order_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./reduced_second_aux]
type = RankTwoAux
variable = reduced_second
rank_two_tensor = reduced_order_eigenstrain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./temp2]
type = FunctionAux
variable = temp2
function = tempQuadratic
execute_on = timestep_begin
[../]
[]
[BCs]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = bottom #'bottom top'
value = 0.0
[../]
[./temp_right]
type = DirichletBC
variable = temp
boundary = right
value = 700
[../]
[./temp_left]
type = DirichletBC
variable = temp
boundary = left
value = 710
[../]
[]
[Materials]
[./fuel_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e8
poissons_ratio = 0
[../]
[./fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
temperature = temp2
stress_free_temperature = 295.0
eigenstrain_name = 'thermal_eigenstrain'
[../]
[./reduced_order_eigenstrain]
type = ComputeReducedOrderEigenstrain
input_eigenstrain_names = 'thermal_eigenstrain'
eigenstrain_name = 'reduced_order_eigenstrain'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
num_steps = 1
nl_rel_tol = 1e-8
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[]
[VectorPostprocessors]
[./hydro]
type = LineValueSampler
warn_discontinuous_face_values = false
num_points = 50
start_point = '1 0.07e-3 0'
end_point = '3 0.07e-3 0'
sort_by = x
variable = 'temp2 disp_x disp_y hydro_constant hydro_first hydro_second sxx_constant sxx_first sxx_second szz_constant szz_first szz_second thermal_constant thermal_first thermal_second reduced_constant reduced_first reduced_second'
[../]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/fsi/test/tests/fsi_acoustics/1D_struc_acoustic/1D_struc_acoustic.i)
# Test for `StructureAcousticInterface` interface kernel. The domain is 1D with 20m
# length. The fluid domain is on the right and the structural domain is on the left.
# Fluid end is subjected to a 250Hz sine wave with a single peak of amplitude unity.
# Structural domain is 4 times as dense as the fluid domain with all other material
# properties being the same. Fluid pressure is recorded at the midpoint in the fluid
# domain (i.e., at 15m). Structural stress is recorded at the midpoint in the structural
# domain (i.e., at 5m). The recorded pressure and stress amplitudes should match
# with theoretical values.
#
# Input parameters:
# Dimensions = 1
# Length = 20 meters
# Fluid speed of sound = 1500 m/s
# Fluid density = 1e-6 Giga kg/m^3
# Structural bulk modulus = 2.25 GPa
# Structural shear modulus = 0 GPa
# Structural density = 4e-6 Giga kg/m^3
# Fluid domain = true
# Fluid BC = single peak sine wave applied as a pressure on the fluid end
# Structural domain = true
# Structural BC = Neumann BC with value zero applied on the structural end.
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
nx = 50
xmax = 20
[]
[./subdomain1]
input = gen
type = SubdomainBoundingBoxGenerator
bottom_left = '10.0 0 0'
block_id = 1
top_right = '20.0 0.0 0'
[../]
[./interface1]
type = SideSetsBetweenSubdomainsGenerator
input = subdomain1
primary_block = '1'
paired_block = 0
new_boundary = 'interface1'
[../]
[]
[GlobalParams]
[]
[Variables]
[./p]
block = 1
[../]
[./disp_x]
block = 0
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
block = 0
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
block = 0
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Kernels]
[./diffusion]
type = Diffusion
variable = 'p'
block = 1
[../]
[./inertia]
type = AcousticInertia
variable = p
block = 1
[../]
[./DynamicTensorMechanics]
displacements = 'disp_x'
block = 0
[../]
[./inertia_x1]
type = InertialForce
variable = disp_x
block = 0
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
displacement = disp_x
variable = accel_x
first = false
block = 0
[../]
[./vel_x]
type = TestNewmarkTI
displacement = disp_x
variable = vel_x
block = 0
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
block = 0
[../]
[]
[InterfaceKernels]
[./interface1]
type = StructureAcousticInterface
variable = p
neighbor_var = disp_x
boundary = 'interface1'
D = 1e-6
component = 0
[../]
[]
[BCs]
[./bottom_accel]
type = FunctionDirichletBC
variable = p
boundary = 'right'
function = accel_bottom
[../]
[./disp_x1]
type = NeumannBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[]
[Functions]
[./accel_bottom]
type = PiecewiseLinear
data_file = Input_1Peak_highF.csv
scale_factor = 1e-2
format = 'columns'
[../]
[]
[Materials]
[./co_sq]
type = GenericConstantMaterial
prop_names = inv_co_sq
prop_values = 4.44e-7
block = '1'
[../]
[./density0]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 4e-6
[../]
[./elasticity_base]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 2.25
shear_modulus = 0.0
block = 0
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x'
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
start_time = 0.0
end_time = 0.01
dt = 0.0001
dtmin = 0.00001
nl_abs_tol = 1e-12
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 25
timestep_tolerance = 1e-8
automatic_scaling = true
[TimeIntegrator]
type = NewmarkBeta
[]
[]
[Postprocessors]
[./p1]
type = PointValue
point = '10.0 0.0 0.0'
variable = p
[../]
[./stress1]
type = PointValue
point = '10.0 0.0 0.0'
variable = stress_xx
[../]
[]
[Outputs]
csv = true
perf_graph = true
print_linear_residuals = true
[]
(modules/contact/test/tests/verification/patch_tests/cyl_2/cyl2_mu_0_2_pen.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl2_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = cyl2_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 = cyl2_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
tangential_tolerance = 1e-3
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/drucker_prager/small_deform2_native.i)
# apply repeated stretches in x, y and z directions, so that mean_stress = 0
# This maps out the yield surface in the octahedral plane for zero mean stress
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1.5E-6*x+2E-6*x*sin(t)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2E-6*y*sin(2*t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-2E-6*z*(sin(t)+sin(2*t))'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 20
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 0
[../]
[./mc]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
smoother = 4
mc_interpolation_scheme = native
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-12
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 100
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2_native
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/monolithic_material_based/crysp_save_euler.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD4
displacements = 'disp_x disp_y'
nx = 2
ny = 2
[]
[Variables]
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
[]
[GlobalParams]
volumetric_locking_correction = true
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./e_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./fp_yy]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./gss1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./euler1]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./euler2]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[./euler3]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[UserObjects]
[./prop_read]
type = PropertyReadFile
prop_file_name = 'euler_ang_file.txt'
# Enter file data as prop#1, prop#2, .., prop#nprop
nprop = 3
read_type = element
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[./e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = lage
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[./fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = fp
index_j = 1
index_i = 1
execute_on = timestep_end
block = 0
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss1
property = gss
index = 0
execute_on = timestep_end
block = 0
[../]
[./euler1]
type = MaterialRealVectorValueAux
variable = euler1
property = Euler_angles
component = 0
execute_on = timestep_end
block = 0
[../]
[./euler2]
type = MaterialRealVectorValueAux
variable = euler2
property = Euler_angles
component = 1
execute_on = timestep_end
block = 0
[../]
[./euler3]
type = MaterialRealVectorValueAux
variable = euler3
property = Euler_angles
component = 2
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[Materials]
[./crysp]
type = FiniteStrainCrystalPlasticity
block = 0
gtol = 1e-2
slip_sys_file_name = input_slip_sys.txt
nss = 12
num_slip_sys_flowrate_props = 2 #Number of properties in a slip system
flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
hprops = '1.0 541.5 60.8 109.8 2.5'
gprops = '1 4 60.8 5 8 60.8 9 12 60.8'
tan_mod_type = exact
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
block = 0
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
read_prop_user_object = prop_read
[../]
[]
[Postprocessors]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
block = 'ANY_BLOCK_ID 0'
[../]
[./e_yy]
type = ElementAverageValue
variable = e_yy
block = 'ANY_BLOCK_ID 0'
[../]
[./fp_yy]
type = ElementAverageValue
variable = fp_yy
block = 'ANY_BLOCK_ID 0'
[../]
[./gss1]
type = ElementAverageValue
variable = gss1
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.01
dtmax = 10.0
dtmin = 0.01
num_steps = 10
[]
[Outputs]
file_base = crysp_save_euler_out
exodus = true
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y'
use_displaced_mesh = true
[../]
[]
(modules/combined/test/tests/DiffuseCreep/stress_based_chem_pot.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./creep_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./mu_prop]
family = MONOMIAL
order = CONSTANT
[../]
[./mech_prop]
family = MONOMIAL
order = CONSTANT
[../]
[./total_potential]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = total_potential
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_i = 0
index_j = 0
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./mu_prop]
type = MaterialRealAux
property = mu_prop
variable = mu_prop
[../]
[./mech_prop]
type = MaterialRealAux
property = mech_prop
variable = mech_prop
[../]
[./total_potential]
type = MaterialRealAux
property = total_potential
variable = total_potential
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./mechanical_potential]
type = StressBasedChemicalPotential
property_name = mech_prop
stress_name = stress
direction_tensor_name = aniso_tensor
prefactor_name = 1.0
[../]
[./total_potential]
type = DerivativeSumMaterial
block = 0
property_name = total_potential
sum_materials = 'mu_prop mech_prop'
coupled_variables = 'c'
derivative_order = 2
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
args = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./diffuse_strain_increment]
type = FluxBasedStrainIncrement
xflux = jx
yflux = jy
gb = gb
property_name = diffuse
[../]
[./diffuse_creep_strain]
type = SumTensorIncrements
tensor_name = creep_strain
coupled_tensor_increment_names = diffuse
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
inelastic_strain_names = creep_strain
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/lagrangian/cartesian/total/cross_material/correctness/plastic_j2.i)
# Simple 3D test
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 1
nz = 1
[]
[]
[AuxVariables]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[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_xz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = cauchy_stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[strain_xy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[strain_xz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[strain_yz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
variable = strain_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[Functions]
[pullx]
type = ParsedFunction
expression = 't'
[]
[]
[BCs]
[leftx]
type = DirichletBC
preset = true
boundary = left
variable = disp_x
value = 0.0
[]
[lefty]
type = DirichletBC
preset = true
boundary = bottom
variable = disp_y
value = 0.0
[]
[leftz]
type = DirichletBC
preset = true
boundary = back
variable = disp_z
value = 0.0
[]
[pull_x]
type = FunctionDirichletBC
boundary = right
variable = disp_x
function = pullx
[]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningPowerRule
value_0 = 100.0
epsilon0 = 0.1
exponent = 2.0
[../]
[./j2]
type = SolidMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
[]
[compute_stress]
type = ComputeLagrangianWrappedStress
[]
[compute_stress_base]
type = ComputeMultiPlasticityStress
plastic_models = j2
ep_plastic_tolerance = 1E-9
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[./strain]
type = ElementAverageValue
variable = strain_xx
[]
[./stress]
type = ElementAverageValue
variable = stress_xx
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.001
dtmin = 0.001
end_time = 0.05
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/global_strain/global_strain_disp.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[cnode]
type = ExtraNodesetGenerator
coord = '0 -0.5 0'
new_boundary = 100
input = generated_mesh
[]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./u_z]
[../]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./s00]
order = CONSTANT
family = MONOMIAL
[../]
[./s11]
order = CONSTANT
family = MONOMIAL
[../]
[./e00]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./disp_x]
type = GlobalDisplacementAux
variable = disp_x
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 0
[../]
[./disp_y]
type = GlobalDisplacementAux
variable = disp_y
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 1
[../]
[./disp_z]
type = GlobalDisplacementAux
variable = disp_z
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
component = 2
[../]
[./s00]
type = RankTwoAux
variable = s00
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./e00]
type = RankTwoAux
variable = e00
rank_two_tensor = total_strain
index_i = 0
index_j = 0
[../]
[./e11]
type = RankTwoAux
variable = e11
rank_two_tensor = total_strain
index_i = 1
index_j = 1
[../]
[]
[GlobalParams]
displacements = 'u_x u_y u_z'
block = 0
[]
[Kernels]
[SolidMechanics]
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[BCs]
[./Periodic]
[./all]
auto_direction = 'z'
variable = 'u_x u_y u_z'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = u_x
value = 0
[../]
[./fix_y]
type = DirichletBC
boundary = bottom
variable = u_y
value = 0
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
[./appl_y]
type = DirichletBC
boundary = top
variable = u_y
value = 0.033
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '7 0.33'
fill_method = symmetric_isotropic_E_nu
[../]
[./strain]
type = ComputeSmallStrain
global_strain = global_strain
[../]
[./global_strain]
type = ComputeGlobalStrain
scalar_global_strain = global_strain
global_strain_uo = global_strain_uo
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[UserObjects]
[./global_strain_uo]
type = GlobalStrainUserObject
execute_on = 'Initial Linear Nonlinear'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
line_search = basic
petsc_options_iname = '-pc_type -ksp_gmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
l_max_its = 30
nl_max_its = 12
l_tol = 1.0e-4
nl_rel_tol = 1.0e-6
nl_abs_tol = 1.0e-10
start_time = 0.0
num_steps = 2
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/power_law_hardening/ADPowerLawHardening.i)
# This is a test of the isotropic power law hardening constitutive model.
# In this problem, a single Hex 8 element is fixed at the bottom and pulled at the top
# at a constant rate of 0.1.
# Before yield, stress = strain (=0.1*t) as youngs modulus is 1.0.
# The yield stress for this problem is 0.25 ( as strength coefficient is 0.5 and strain rate exponent is 0.5).
# Therefore, the material should start yielding at t = 2.5 seconds and then follow stress = K *pow(strain,n) or
# stress ~ 0.5*pow(0.1*t,0.5).
#
# This tensor mechanics version of the power law hardening plasticity model matches
# the solid mechanics version for this toy problem under exodiff limits
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
type = GeneratedMesh
dim = 3
[]
[AuxVariables]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = t*(0.1)
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = SMALL
incremental = true
generate_output = 'stress_yy'
use_automatic_differentiation = true
[]
[]
[AuxKernels]
[total_strain_yy]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yy
index_i = 1
index_j = 1
[]
[]
[BCs]
[y_pull_function]
type = ADFunctionDirichletBC
variable = disp_y
boundary = top
function = top_pull
[]
[x_bot]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[y_bot]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.3
[]
[power_law_hardening]
type = ADIsotropicPowerLawHardeningStressUpdate
strength_coefficient = 0.5 #K
strain_hardening_exponent = 0.5 #n
[]
[radial_return_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'power_law_hardening'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-ksp_snes_ew'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 5.0
dt = 0.25
[]
[Postprocessors]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
[]
[strain_yy]
type = ElementAverageValue
variable = total_strain_yy
[]
[]
[Outputs]
[out]
type = Exodus
elemental_as_nodal = true
file_base = PowerLawHardening_out
[]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/small_deform_hard1.i)
# apply uniform stretches in x, y and z directions.
# let mc_cohesion = 10, mc_cohesion_residual = 2, mc_cohesion_rate =
# With cohesion = C, friction_angle = 60deg, tip_smoother = 4, the
# algorithm should return to
# sigma_m = (C*Cos(60) - 4)/Sin(60)
# This allows checking of the relationship for C
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningExponential
value_0 = 10
value_residual = 2
rate = 1E4
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 60
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4
mc_edge_smoother = 25
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
debug_jac_at_stress = '10 1 2 1 10 3 2 3 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1E-4
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-8
[../]
[]
[Executioner]
end_time = 10
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform_hard1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/visco/gen_maxwell_driving.i)
# Represents a unique Maxwell module with E = 10GPa and eta = 10 days with an imposed eigenstrain alpha = 0.001.
# The behavior is set up so that the creep strain is driven by both the elastic stress and the internal
# stress induced by the eigenstrain (E * alpha).
#
# In this test, the specimen is free of external stress (sigma = 0) so the creep deformation only derives from
# the eigenstrain. The total strain to be expected is:
# epsilon = alpha * (1 + t / eta)
# Both the stress and the elastic strain are 0.
#
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[]
[Materials]
[./eigen]
type = ComputeEigenstrain
eigenstrain_name = eigen_true
eigen_base = '1e-3 1e-3 1e-3 0 0 0'
[../]
[./maxwell]
type = GeneralizedMaxwellModel
creep_modulus = '10e9'
creep_viscosity = '10'
poisson_ratio = 0.2
young_modulus = 10e9
driving_eigenstrain = eigen_true
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigen_true'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = maxwell
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-8
nl_max_its = 20
nl_rel_tol = 1e-11
nl_abs_tol = 1e-8
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = gen_maxwell_driving_out
exodus = true
[]
(modules/combined/test/tests/j2_plasticity_vs_LSH/j2_hard1_mod_optimised.i)
# Test designed to compare results and active time between SH/LinearStrainHardening
# material vs TM j2 plastic user object. As number of elements increases, TM
# active time increases at a much higher rate than SM. Testing at 4x4x4
# (64 elements).
#
# plot vm_stress vs intnl to see constant hardening
#
# Original test located at:
# solid_mechanics/tests/j2_plasticity/hard1.i
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[]
[]
[AuxVariables]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[intnl]
order = CONSTANT
family = MONOMIAL
[]
[vm_stress]
order = CONSTANT
family = MONOMIAL
[]
[eq_pl_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[]
[eq_pl_strain]
type = RankTwoScalarAux
rank_two_tensor = plastic_strain
scalar_type = EffectiveStrain
variable = eq_pl_strain
[]
[vm_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
scalar_type = VonMisesStress
variable = vm_stress
[]
[]
[BCs]
[left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[z]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = 't/60'
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningConstant
value = 2.4e2
[]
[j2]
type = TensorMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
#with E = 2.1e5 and nu = 0.3
#Hooke's law: E-nu to Lambda-G
C_ijkl = '121154 80769.2'
[]
[strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[]
[mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = j2
perform_finite_strain_rotations = false
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = NEWTON
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
#line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
l_tol = 1e-4
start_time = 0.0
end_time = 0.5
dt = 0.5
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[intnl]
type = ElementAverageValue
variable = intnl
[]
[eq_pl_strain]
type = PointValue
point = '0 0 0'
variable = eq_pl_strain
[]
[vm_stress]
type = PointValue
point = '0 0 0'
variable = vm_stress
[]
[]
[Outputs]
csv = true
print_linear_residuals = false
perf_graph = true
[]
(modules/contact/test/tests/explicit_dynamics/test_balance.i)
# One element test to test the central difference time integrator in 3D.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
[block_one]
type = GeneratedMeshGenerator
dim = 3
nx = 3
ny = 3
nz = 3
xmin = 4.5
xmax = 5.5
ymin = 4.5
ymax = 5.5
zmin = 0.0001
zmax = 1.0001
boundary_name_prefix = 'ball'
[]
[block_two]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
xmin = 0.0
xmax = 10
ymin = 0.0
ymax = 10
zmin = -2
zmax = 0
boundary_name_prefix = 'base'
boundary_id_offset = 10
[]
[block_one_id]
type = SubdomainIDGenerator
input = block_one
subdomain_id = 1
[]
[block_two_id]
type = SubdomainIDGenerator
input = block_two
subdomain_id = 2
[]
[combine]
type = MeshCollectionGenerator
inputs = ' block_one_id block_two_id'
[]
allow_renumbering = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[gap_rate]
[]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[stress_zz]
family = MONOMIAL
order = CONSTANT
[]
[strain_zz]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
execute_on = 'TIMESTEP_END'
[]
[strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
index_i = 2
index_j = 2
variable = strain_zz
[]
[accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_x
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[accel_z]
type = TestNewmarkTI
variable = accel_z
displacement = disp_z
first = false
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[vel_z]
type = TestNewmarkTI
variable = vel_z
displacement = disp_z
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END'
[]
[]
[Kernels]
[DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
stiffness_damping_coefficient = 0.001
generate_output = 'stress_zz strain_zz'
[]
[inertia_x]
type = InertialForce
variable = disp_x
[]
[inertia_y]
type = InertialForce
variable = disp_y
[]
[inertia_z]
type = InertialForce
variable = disp_z
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_z
value = -981.0
[]
[]
[BCs]
[x_front]
type = DirichletBC
variable = disp_x
boundary = 'ball_front'
preset = false
value = 0.0
[]
[y_front]
type = DirichletBC
variable = disp_y
boundary = 'ball_front'
preset = false
value = 0.0
[]
[x_fixed]
type = DirichletBC
variable = disp_x
boundary = 'base_back'
preset = false
value = 0.0
[]
[y_fixed]
type = DirichletBC
variable = disp_y
boundary = 'base_back'
preset = false
value = 0.0
[]
[z_fixed]
type = DirichletBC
variable = disp_z
boundary = 'base_back'
preset = false
value = 0.0
[]
[z_fixed_front]
type = DirichletBC
variable = disp_z
boundary = 'base_front'
preset = false
value = 0.0
[]
[]
[ExplicitDynamicsContact]
[my_contact]
model = frictionless_balance
primary = base_front
secondary = ball_back
vel_x = 'vel_x'
vel_y = 'vel_y'
vel_z = 'vel_z'
[]
[]
[Materials]
[elasticity_tensor_block_one]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.0
block = 1
outputs = 'exodus'
output_properties = __all__
[]
[elasticity_tensor_block_two]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.0
block = 2
outputs = 'exodus'
output_properties = __all__
[]
[strain_block]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y disp_z'
implicit = false
[]
[stress_block]
type = ComputeFiniteStrainElasticStress
[]
[density_one]
type = GenericConstantMaterial
prop_names = density
prop_values = 1e1
outputs = 'exodus'
output_properties = 'density'
block = '1'
[]
[density_two]
type = GenericConstantMaterial
prop_names = density
prop_values = 1e6
outputs = 'exodus'
output_properties = 'density'
block = '2'
[]
[wave_speed]
type = WaveSpeed
outputs = 'exodus'
output_properties = 'wave_speed'
[]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = -0.0075 # 10
dt = 0.00001
timestep_tolerance = 1e-6
[TimeIntegrator]
type = CentralDifference
solve_type = lumped
[]
[]
[Outputs]
interval = 50
exodus = true
csv = true
checkpoint = true # for regression testing purposes
[]
[Postprocessors]
[accel_58z]
type = NodalVariableValue
nodeid = 1
variable = accel_z
[]
[vel_58z]
type = NodalVariableValue
nodeid = 1
variable = vel_z
[]
[disp_58z]
type = NodalVariableValue
nodeid = 1
variable = disp_z
[]
[critical_time_step]
type = CriticalTimeStep
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = contact_pressure
block = '1 2'
value_type = max
[]
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/small_deform2_small_strain.i)
# apply repeated stretches in x, y and z directions, so that mean_stress = 0
# This maps out the yield surface in the octahedral plane for zero mean stress
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '2E-6*x*sin(t)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2E-6*y*sin(2*t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-2E-6*z*(sin(t)+sin(2*t))'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 20
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 0
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4
mc_edge_smoother = 20
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 100
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2_small_strain
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/multi/three_surface14.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 3
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 2.1E-6m in y direction and 3E-6 in z direction.
# trial stress_yy = 2.1 and stress_zz = 3.0
#
# Then all three will be active, but there is linear-dependence.
# SimpleTester1 will turn off, since it is closest,
# and the algorithm will return to stress_zz=1, stress_yy=2, but
# then SimpleTester1 will be positive, so it will be turned back
# on, and then SimpleTester0 or SimpleTester2 will be turned off
# (a random choice will be made).
# If SimpleTester2 is turned
# off then algorithm returns to stress_zz=1=stress_yy, but then
# SimpleTester2 violates Kuhn-Tucker (f<0 and pm>0), so the algorithm
# will restart, and return to stress_zz=1=stress_yy, with internal0=2
# and internal1=1.1
# If SimpleTester0 is turned off then the algorithm will return to
# stress_zz=2, stress_yy=1, where f0>0. Once again, a random choice
# of turning off SimpleTester1 or SimpleTester2 can be made. Hence,
# oscillations can occur. If too many oscillations occur then the algorithm
# will fail
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2.1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '3.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 4
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1'
debug_jac_at_intnl = '1 1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface14
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/multi/six_surface14.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 3
# SimpleTester3 with a = 0 and b = 1 and strength = 1.1
# SimpleTester4 with a = 1 and b = 0 and strength = 1.1
# SimpleTester5 with a = 1 and b = 1 and strength = 3.1
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 2.1E-6m in y direction and 3E-6 in z direction.
# trial stress_yy = 2.1 and stress_zz = 3.0
#
# This is similar to three_surface14.i, and a description is found there.
# The result should be stress_zz=1=stress_yy, with internal0=2
# and internal1=1.1
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2.1E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '3.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./f3]
order = CONSTANT
family = MONOMIAL
[../]
[./f4]
order = CONSTANT
family = MONOMIAL
[../]
[./f5]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int3]
order = CONSTANT
family = MONOMIAL
[../]
[./int4]
order = CONSTANT
family = MONOMIAL
[../]
[./int5]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./f3]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 3
variable = f3
[../]
[./f4]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 4
variable = f4
[../]
[./f5]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 5
variable = f5
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[./int3]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 3
variable = int3
[../]
[./int4]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 4
variable = int4
[../]
[./int5]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 5
variable = int5
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./f3]
type = PointValue
point = '0 0 0'
variable = f3
[../]
[./f4]
type = PointValue
point = '0 0 0'
variable = f4
[../]
[./f5]
type = PointValue
point = '0 0 0'
variable = f5
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[./int3]
type = PointValue
point = '0 0 0'
variable = int3
[../]
[./int4]
type = PointValue
point = '0 0 0'
variable = int4
[../]
[./int5]
type = PointValue
point = '0 0 0'
variable = int5
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple3]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple4]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[./simple5]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 3.1
yield_function_tolerance = 1.0E-6
internal_constraint_tolerance = 1.0E-6
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2 simple3 simple4 simple5'
max_NR_iterations = 4
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1'
debug_jac_at_intnl = '1 1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = six_surface14
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/capped_weak_plane/small_deform_cosserat2.i)
# Plastic deformation. Layered Cosserat with parameters:
# Young = 1.0
# Poisson = 0.2
# layer_thickness = 0.1
# joint_normal_stiffness = 0.25
# joint_shear_stiffness = 0.2
# These give the following nonzero components of the elasticity tensor:
# E_0000 = E_1111 = 1.043195
# E_0011 = E_1100 = 0.260799
# E_2222 = 0.02445
# E_0022 = E_1122 = E_2200 = E_2211 = 0.006112
# G = E_0101 = E_0110 = E_1001 = E_1010 = 0.416667
# Gt = E_0202 = E_0220 = E_2002 = E_1212 = E_1221 = E_2112 = 0.019084
# E_2020 = E_2121 = 0.217875
# They give the following nonzero components of the bending rigidity tensor:
# D = 8.68056E-5
# B_0101 = B_1010 = 7.92021E-4
# B_0110 = B_1001 = -1.584E-4
#
# Applying the following deformation to the zmax surface of a unit cube:
# disp_x = 8*t
# disp_y = 6*t
# disp_z = -t
# omega_x = omega_y = omega_z = 0
# yields the following strains:
# strain_xz = 8*t
# strain_yz = 6*t
# strain_zz = -t
# and all other components, and the curvature, are zero.
# The nonzero components of stress are therefore:
# stress_xx = stress_yy = -0.006112*t
# stress_xz = stress_zx = 0.152671*t
# stress_yz = stress_zy = 0.114504*t
# stress_zz = -0.0244499*t
# The moment stress is zero.
# So q = 0.19084*t and p = -0.0244*t.
#
# With large cohesion, but compressive strength = 0.0244499, the
# system is elastic up to t=1. After that time
# stress_zz = -0.0244499 (for t>=1)
# and
# stress_xx = stress_yy = -0.006112 (for t>=1), since the
# elastic trial increment is exactly canelled by the Poisson's
# contribution from the return to the yield surface.
# The plastic strains are zero for t<=1, but for larger times:
# plastic_strain_zz = - (t - 1) (for t>=1)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
variable = disp_x
boundary = back
value = 0.0
[../]
[./bottomy]
type = DirichletBC
variable = disp_y
boundary = back
value = 0.0
[../]
[./bottomz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
variable = disp_x
boundary = front
function = 8*t
[../]
[./topy]
type = FunctionDirichletBC
variable = disp_y
boundary = front
function = 6*t
[../]
[./topz]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = -t
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yx
index_i = 1
index_j = 0
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zx
index_i = 2
index_j = 0
[../]
[./strainp_zy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zy
index_i = 2
index_j = 1
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yx
index_i = 1
index_j = 0
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zx
index_i = 2
index_j = 0
[../]
[./straint_zy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zy
index_i = 2
index_j = 1
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yx]
type = PointValue
point = '0 0 0'
variable = stress_yx
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zx]
type = PointValue
point = '0 0 0'
variable = stress_zx
[../]
[./s_zy]
type = PointValue
point = '0 0 0'
variable = stress_zy
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./c_s_xx]
type = PointValue
point = '0 0 0'
variable = couple_stress_xx
[../]
[./c_s_xy]
type = PointValue
point = '0 0 0'
variable = couple_stress_xy
[../]
[./c_s_xz]
type = PointValue
point = '0 0 0'
variable = couple_stress_xz
[../]
[./c_s_yx]
type = PointValue
point = '0 0 0'
variable = couple_stress_yx
[../]
[./c_s_yy]
type = PointValue
point = '0 0 0'
variable = couple_stress_yy
[../]
[./c_s_yz]
type = PointValue
point = '0 0 0'
variable = couple_stress_yz
[../]
[./c_s_zx]
type = PointValue
point = '0 0 0'
variable = couple_stress_zx
[../]
[./c_s_zy]
type = PointValue
point = '0 0 0'
variable = couple_stress_zy
[../]
[./c_s_zz]
type = PointValue
point = '0 0 0'
variable = couple_stress_zz
[../]
[./strainp_xx]
type = PointValue
point = '0 0 0'
variable = strainp_xx
[../]
[./strainp_xy]
type = PointValue
point = '0 0 0'
variable = strainp_xy
[../]
[./strainp_xz]
type = PointValue
point = '0 0 0'
variable = strainp_xz
[../]
[./strainp_yx]
type = PointValue
point = '0 0 0'
variable = strainp_yx
[../]
[./strainp_yy]
type = PointValue
point = '0 0 0'
variable = strainp_yy
[../]
[./strainp_yz]
type = PointValue
point = '0 0 0'
variable = strainp_yz
[../]
[./strainp_zx]
type = PointValue
point = '0 0 0'
variable = strainp_zx
[../]
[./strainp_zy]
type = PointValue
point = '0 0 0'
variable = strainp_zy
[../]
[./strainp_zz]
type = PointValue
point = '0 0 0'
variable = strainp_zz
[../]
[./straint_xx]
type = PointValue
point = '0 0 0'
variable = straint_xx
[../]
[./straint_xy]
type = PointValue
point = '0 0 0'
variable = straint_xy
[../]
[./straint_xz]
type = PointValue
point = '0 0 0'
variable = straint_xz
[../]
[./straint_yx]
type = PointValue
point = '0 0 0'
variable = straint_yx
[../]
[./straint_yy]
type = PointValue
point = '0 0 0'
variable = straint_yy
[../]
[./straint_yz]
type = PointValue
point = '0 0 0'
variable = straint_yz
[../]
[./straint_zx]
type = PointValue
point = '0 0 0'
variable = straint_zx
[../]
[./straint_zy]
type = PointValue
point = '0 0 0'
variable = straint_zy
[../]
[./straint_zz]
type = PointValue
point = '0 0 0'
variable = straint_zz
[../]
[./f_shear]
type = PointValue
point = '0 0 0'
variable = f_shear
[../]
[./f_tensile]
type = PointValue
point = '0 0 0'
variable = f_tensile
[../]
[./f_compressive]
type = PointValue
point = '0 0 0'
variable = f_compressive
[../]
[./intnl_shear]
type = PointValue
point = '0 0 0'
variable = intnl_shear
[../]
[./intnl_tensile]
type = PointValue
point = '0 0 0'
variable = intnl_tensile
[../]
[./iter]
type = PointValue
point = '0 0 0'
variable = iter
[../]
[./ls]
type = PointValue
point = '0 0 0'
variable = ls
[../]
[]
[UserObjects]
[./coh]
type = SolidMechanicsHardeningConstant
value = 30
[../]
[./tanphi]
type = SolidMechanicsHardeningConstant
value = 0.5
[../]
[./tanpsi]
type = SolidMechanicsHardeningConstant
value = 0.1111077
[../]
[./t_strength]
type = SolidMechanicsHardeningConstant
value = 40
[../]
[./c_strength]
type = SolidMechanicsHardeningConstant
value = 0.024449878
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 1.0
poisson = 0.2
layer_thickness = 0.1
joint_normal_stiffness = 0.25
joint_shear_stiffness = 0.2
[../]
[./strain]
type = ComputeCosseratIncrementalSmallStrain
[../]
[./admissible]
type = ComputeMultipleInelasticCosseratStress
inelastic_models = stress
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakPlaneCosseratStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 0
smoothing_tol = 1
yield_function_tol = 1E-5
[../]
[]
[Executioner]
nl_abs_tol = 1E-14
end_time = 3
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform_cosserat2
csv = true
[]
(modules/solid_mechanics/test/tests/isotropicSD_plasticity/powerRuleHardening.i)
# UserObject IsotropicSD test, with power rule hardening with rate 1e2.
# Linear strain is applied in the x and y direction.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -.5
xmax = .5
ymin = -.5
ymax = .5
zmin = -.5
zmax = .5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./xdisp]
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = '0.005*t'
[../]
[./ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '0.005*t'
[../]
[./yfix]
type = DirichletBC
variable = disp_y
#boundary = 'bottom top'
boundary = 'bottom'
value = 0
[../]
[./xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./zfix]
type = DirichletBC
variable = disp_z
#boundary = 'front back'
boundary = 'back'
value = 0
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./plastic_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl]
order = CONSTANT
family = MONOMIAL
[../]
[./sdev]
order = CONSTANT
family = MONOMIAL
[../]
[./sdet]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./plastic_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xx
index_i = 0
index_j = 0
[../]
[./plastic_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xy
index_i = 0
index_j = 1
[../]
[./plastic_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_xz
index_i = 0
index_j = 2
[../]
[./plastic_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_yy
index_i = 1
index_j = 1
[../]
[./plastic_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_yz
index_i = 1
index_j = 2
[../]
[./plastic_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[../]
[./sdev]
type = RankTwoScalarAux
variable = sdev
rank_two_tensor = stress
scalar_type = VonMisesStress
[../]
[]
[Postprocessors]
[./sdev]
type = PointValue
point = '0 0 0'
variable = sdev
[../]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./p_xx]
type = PointValue
point = '0 0 0'
variable = plastic_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./p_xy]
type = PointValue
point = '0 0 0'
variable = plastic_xy
[../]
[./p_xz]
type = PointValue
point = '0 0 0'
variable = plastic_xz
[../]
[./p_yz]
type = PointValue
point = '0 0 0'
variable = plastic_yz
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./p_yy]
type = PointValue
point = '0 0 0'
variable = plastic_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./p_zz]
type = PointValue
point = '0 0 0'
variable = plastic_zz
[../]
[./intnl]
type = PointValue
point = '0 0 0'
variable = intnl
[../]
[]
[UserObjects]
[./str]
type = SolidMechanicsHardeningPowerRule
value_0 = 300
epsilon0 = 1
exponent = 1e2
[../]
[./IsotropicSD]
type = SolidMechanicsPlasticIsotropicSD
b = -0.2
c = -0.779422863
associative = true
yield_strength = str
yield_function_tolerance = 1e-5
internal_constraint_tolerance = 1e-9
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '121e3 80e3'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1e-9
plastic_models = IsotropicSD
debug_fspb = crash
tangent_operator = elastic
[../]
[]
[Executioner]
num_steps = 3
dt = .5
type = Transient
nl_rel_tol = 1e-6
nl_max_its = 10
l_tol = 1e-4
l_max_its = 50
solve_type = PJFNK
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
perf_graph = false
csv = true
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
(modules/solid_mechanics/test/tests/dynamics/acceleration_bc/AccelerationBC_test_ti.i)
# Test for Acceleration boundary condition
# This test contains one brick element which is fixed in the y and z direction.
# Base acceleration is applied in the x direction to all nodes on the bottom surface (y=0).
# The PresetAcceleration converts the given acceleration to a displacement
# using Newmark time integration. This displacement is then prescribed on the boundary.
#
# Result: The acceleration at the bottom node should be same as the input acceleration
# which is a triangular function with peak at t = 0.2 in this case. Width of the triangular function
# is 0.2 s.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
[../]
[]
[AuxKernels]
[./accel_x] # These auxkernels are only to check output
type = TestNewmarkTI
displacement = disp_x
variable = accel_x
first = false
[../]
[./accel_y]
type = TestNewmarkTI
displacement = disp_y
variable = accel_y
first = false
[../]
[./accel_z]
type = TestNewmarkTI
displacement = disp_z
variable = accel_z
first = false
[../]
[./vel_x]
type = TestNewmarkTI
displacement = disp_x
variable = vel_x
[../]
[./vel_y]
type = TestNewmarkTI
displacement = disp_y
variable = vel_y
[../]
[./vel_z]
type = TestNewmarkTI
displacement = disp_z
variable = vel_z
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 0
index_j = 1
[../]
[]
[Functions]
[./acceleration_bottom]
type = PiecewiseLinear
data_file = acceleration.csv
format = columns
[../]
[]
[BCs]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = top
value=0.0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
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
[../]
[./preset_accelertion]
type = PresetAcceleration
boundary = bottom
function = acceleration_bottom
variable = disp_x
beta = 0.25
acceleration = accel_x
velocity = vel_x
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '210e9 0'
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = '7750'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
start_time = 0
end_time = 2.0
dt = 0.01
dtmin = 0.01
nl_abs_tol = 1e-8
nl_rel_tol = 1e-8
l_tol = 1e-8
timestep_tolerance = 1e-8
# Time integrator scheme
schem = "newmark-beta"
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp]
type = NodalVariableValue
variable = disp_x
nodeid = 1
[../]
[./vel]
type = NodalVariableValue
variable = vel_x
nodeid = 1
[../]
[./accel]
type = NodalVariableValue
variable = accel_x
nodeid = 1
[../]
[]
[Outputs]
file_base = "AccelerationBC_test_out"
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/shell/static/beam_bending_moment_AD_2.i)
# Test that models bending of a rotated cantilever beam using shell elements
# A cantilever beam of length 10 m (in Z direction) and cross-section
# 1 m x 0.1 m is modeled using 4 shell elements placed along the length
# (Figure 6a from Dvorkin and Bathe, 1984). All displacements and
# X rotations are fixed on the bottom boundary. E = 2100000 and v = 0.0.
# A load of 0.5 N (in the Y direction) is applied at each node on the top
# boundary resulting in a total load of 1 N.
# The analytical solution for displacement at tip using small strain/rotations # is PL^3/3EI + PL/AG = 1.90485714 m
# The FEM solution using 4 shell elements is 1.875095 m with a relative error
# of 1.5%.
# Similarly, the analytical solution for slope at tip is PL^2/2EI = 0.285714286
# The FEM solution is 0.2857143 and the relative error is 5e-6%.
# The stress_zz for the four elements at y = -0.57735 * (t/2) (first qp below mid-surface of shell) are:
# 3031.089 Pa, 2165.064 Pa, 1299.038 Pa and 433.0127 Pa.
# Note the above values are the average stresses in each element.
# Analytically, stress_zz decreases linearly from z = 0 to z = 10 m.
# The maximum value of stress_zz at z = 0 is My/I = PL * 0.57735*(t/2)/I = 3464.1 Pa
# Therefore, the analytical value of stress at y = -0.57735 * (t/2) at the mid-point
# of the four elements are:
# 3031.0875 Pa, 2165.0625 Pa, 1299.0375 Pa ,433.0125 Pa
# The relative error in stress_zz is in the order of 5e-5%.
# The stress_yz at y = -0.57735 * (t/2) at all four elements from the simulation is 10 Pa.
# The analytical solution for the shear stress is: V/2/I *((t^2)/4 - y^2), where the shear force (V)
# is 1 N at any z along the length of the beam. Therefore, the analytical shear stress at
# y = -0.57735 * (t/2) is 10 Pa at any location along the length of the beam.
[Mesh]
[./gen]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 4
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 10.0
[]
[./rotate]
type = TransformGenerator
input = gen
transform = ROTATE
vector_value = '0 90 0'
[../]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = global_stress_t_points_0
index_i = 2
index_j = 2
[../]
[./stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 'bottom'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = 'bottom'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = 'bottom'
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 'bottom'
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = ConstantRate
variable = disp_y
boundary = 'top'
rate = 0.5
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
nl_max_its = 2
nl_rel_tol = 1e-10
nl_abs_tol = 5e-4
dt = 1
dtmin = 1
end_time = 1
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 2100000
poissons_ratio = 0.0
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[]
[Postprocessors]
[./disp_z_tip]
type = PointValue
point = '1.0 0.0 10.0'
variable = disp_y
[../]
[./rot_y_tip]
type = PointValue
point = '0.0 0.0 10.0'
variable = rot_y
[../]
[./stress_zz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_zz
[../]
[./stress_zz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_zz
[../]
[./stress_zz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_zz
[../]
[./stress_zz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_zz
[../]
[./stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[../]
[./stress_yz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yz
[../]
[./stress_yz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yz
[../]
[./stress_yz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yz
[../]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/ring_2/ring2_template1.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring2_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 200
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 = 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/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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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/test/tests/verification/patch_tests/ring_4/ring4_template1.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring4_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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-5
[]
[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/lagrangian/materials/correctness/cauchy-elastic.i)
# Simple 3D test
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 1
[]
[]
[Kernels]
[sdx]
type = TotalLagrangianStressDivergence
variable = disp_x
component = 0
[]
[sdy]
type = TotalLagrangianStressDivergence
variable = disp_y
component = 1
[]
[sdz]
type = TotalLagrangianStressDivergence
variable = disp_z
component = 2
[]
[]
[Functions]
[strain]
type = ParsedFunction
expression = 't'
[]
[]
[BCs]
[leftx]
type = DirichletBC
preset = true
boundary = left
variable = disp_x
value = 0.0
[]
[boty]
type = DirichletBC
preset = true
boundary = bottom
variable = disp_y
value = 0.0
[]
[backz]
type = DirichletBC
preset = true
boundary = back
variable = disp_z
value = 0.0
[]
[pull_x]
type = FunctionDirichletBC
boundary = right
variable = disp_x
function = strain
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100000.0
poissons_ratio = 0.3
[]
[compute_stress]
type = ComputeLagrangianLinearElasticStress
[]
[compute_strain]
type = ComputeLagrangianStrain
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[sxx]
type = ElementAverageValue
variable = sxx
execute_on = 'initial timestep_end'
[]
[syy]
type = ElementAverageValue
variable = syy
execute_on = 'initial timestep_end'
[]
[sxy]
type = ElementAverageValue
variable = sxy
execute_on = 'initial timestep_end'
[]
[szz]
type = ElementAverageValue
variable = szz
execute_on = 'initial timestep_end'
[]
[syz]
type = ElementAverageValue
variable = syz
execute_on = 'initial timestep_end'
[]
[sxz]
type = ElementAverageValue
variable = sxz
execute_on = 'initial timestep_end'
[]
[exx]
type = ElementAverageValue
variable = exx
execute_on = 'initial timestep_end'
[]
[eyy]
type = ElementAverageValue
variable = eyy
execute_on = 'initial timestep_end'
[]
[exy]
type = ElementAverageValue
variable = exy
execute_on = 'initial timestep_end'
[]
[ezz]
type = ElementAverageValue
variable = ezz
execute_on = 'initial timestep_end'
[]
[eyz]
type = ElementAverageValue
variable = eyz
execute_on = 'initial timestep_end'
[]
[exz]
type = ElementAverageValue
variable = exz
execute_on = 'initial timestep_end'
[]
[]
[AuxVariables]
[sxx]
family = MONOMIAL
order = CONSTANT
[]
[syy]
family = MONOMIAL
order = CONSTANT
[]
[sxy]
family = MONOMIAL
order = CONSTANT
[]
[szz]
family = MONOMIAL
order = CONSTANT
[]
[syz]
family = MONOMIAL
order = CONSTANT
[]
[sxz]
family = MONOMIAL
order = CONSTANT
[]
[exx]
family = MONOMIAL
order = CONSTANT
[]
[eyy]
family = MONOMIAL
order = CONSTANT
[]
[exy]
family = MONOMIAL
order = CONSTANT
[]
[ezz]
family = MONOMIAL
order = CONSTANT
[]
[eyz]
family = MONOMIAL
order = CONSTANT
[]
[exz]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[sxx]
type = RankTwoAux
variable = sxx
rank_two_tensor = cauchy_stress
index_i = 0
index_j = 0
[]
[syy]
type = RankTwoAux
variable = syy
rank_two_tensor = cauchy_stress
index_i = 1
index_j = 1
[]
[sxy]
type = RankTwoAux
variable = sxy
rank_two_tensor = cauchy_stress
index_i = 0
index_j = 1
[]
[zz]
type = RankTwoAux
variable = szz
rank_two_tensor = cauchy_stress
index_i = 2
index_j = 2
[]
[syz]
type = RankTwoAux
variable = syz
rank_two_tensor = cauchy_stress
index_i = 1
index_j = 2
[]
[sxz]
type = RankTwoAux
variable = sxz
rank_two_tensor = cauchy_stress
index_i = 0
index_j = 2
[]
[exx]
type = RankTwoAux
variable = exx
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
[]
[eyy]
type = RankTwoAux
variable = eyy
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 1
[]
[exy]
type = RankTwoAux
variable = exy
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 1
[]
[ezz]
type = RankTwoAux
variable = ezz
rank_two_tensor = mechanical_strain
index_i = 2
index_j = 2
[]
[eyz]
type = RankTwoAux
variable = eyz
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 2
[]
[exz]
type = RankTwoAux
variable = exz
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 2
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 5
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.1
dtmin = 0.1
end_time = 0.1
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/shell/static/tapered.i)
# Test for the stress and strain output for tapered shell elements.
# A tapered beam is represented with shell elements in XY plane
# having Young's Modulus of 210000 and poissons ratio of 0.3.
# The displacement in X direction is constrained in the left end and the
# displacement of center node of the left end is constrained in Y direction.
# A uniform displacement is applied at the right end.
# The problem is symmetric about Y-axis and the results are symmetric.
[Mesh]
[input]
type = FileMeshGenerator
file = taperedmesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[rot_x]
[]
[rot_y]
[]
[]
[AuxVariables]
[stress_00]
order = CONSTANT
family = MONOMIAL
[]
[stress_11]
order = CONSTANT
family = MONOMIAL
[]
[stress_22]
order = CONSTANT
family = MONOMIAL
[]
[stress_01]
order = CONSTANT
family = MONOMIAL
[]
[stress_10]
order = CONSTANT
family = MONOMIAL
[]
[stress_02]
order = CONSTANT
family = MONOMIAL
[]
[stress_20]
order = CONSTANT
family = MONOMIAL
[]
[stress_12]
order = CONSTANT
family = MONOMIAL
[]
[stress_21]
order = CONSTANT
family = MONOMIAL
[]
[strain_00]
order = CONSTANT
family = MONOMIAL
[]
[strain_11]
order = CONSTANT
family = MONOMIAL
[]
[strain_22]
order = CONSTANT
family = MONOMIAL
[]
[strain_01]
order = CONSTANT
family = MONOMIAL
[]
[strain_10]
order = CONSTANT
family = MONOMIAL
[]
[strain_02]
order = CONSTANT
family = MONOMIAL
[]
[strain_20]
order = CONSTANT
family = MONOMIAL
[]
[strain_12]
order = CONSTANT
family = MONOMIAL
[]
[strain_21]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[solid_disp_x]
type = ADStressDivergenceShell
block = 1
component = 0
variable = disp_x
through_thickness_order = SECOND
[]
[solid_disp_y]
type = ADStressDivergenceShell
block = 1
component = 1
variable = disp_y
through_thickness_order = SECOND
[]
[solid_disp_z]
type = ADStressDivergenceShell
block = 1
component = 2
variable = disp_z
through_thickness_order = SECOND
[]
[solid_rot_x]
type = ADStressDivergenceShell
block = 1
component = 3
variable = rot_x
through_thickness_order = SECOND
[]
[solid_rot_y]
type = ADStressDivergenceShell
block = 1
component = 4
variable = rot_y
through_thickness_order = SECOND
[]
[]
[AuxKernels]
[stress_00]
type = RankTwoAux
variable = stress_00
rank_two_tensor = global_stress_t_points_0
index_i = 0
index_j = 0
execute_on = TIMESTEP_END
[]
[strain_00]
type = RankTwoAux
variable = strain_00
rank_two_tensor = total_global_strain_t_points_0
index_i = 0
index_j = 0
execute_on = TIMESTEP_END
[]
[stress_11]
type = RankTwoAux
variable = stress_11
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[]
[strain_11]
type = RankTwoAux
variable = strain_11
rank_two_tensor = total_global_strain_t_points_0
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[]
[stress_22]
type = RankTwoAux
variable = stress_22
rank_two_tensor = global_stress_t_points_0
index_i = 2
index_j = 2
execute_on = TIMESTEP_END
[]
[strain_22]
type = RankTwoAux
variable = strain_22
rank_two_tensor = total_global_strain_t_points_0
index_i = 2
index_j = 2
execute_on = TIMESTEP_END
[]
[stress_01]
type = RankTwoAux
variable = stress_01
rank_two_tensor = global_stress_t_points_0
index_i = 0
index_j = 1
execute_on = TIMESTEP_END
[]
[strain_01]
type = RankTwoAux
variable = strain_01
rank_two_tensor = total_global_strain_t_points_0
index_i = 0
index_j = 1
execute_on = TIMESTEP_END
[]
[stress_10]
type = RankTwoAux
variable = stress_10
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 0
execute_on = TIMESTEP_END
[]
[strain_10]
type = RankTwoAux
variable = strain_10
rank_two_tensor = total_global_strain_t_points_0
index_i = 1
index_j = 0
execute_on = TIMESTEP_END
[]
[stress_02]
type = RankTwoAux
variable = stress_02
rank_two_tensor = global_stress_t_points_0
index_i = 0
index_j = 2
execute_on = TIMESTEP_END
[]
[strain_02]
type = RankTwoAux
variable = strain_02
rank_two_tensor = total_global_strain_t_points_0
index_i = 0
index_j = 2
execute_on = TIMESTEP_END
[]
[stress_20]
type = RankTwoAux
variable = stress_20
rank_two_tensor = global_stress_t_points_0
index_i = 2
index_j = 0
execute_on = TIMESTEP_END
[]
[strain_20]
type = RankTwoAux
variable = strain_20
rank_two_tensor = total_global_strain_t_points_0
index_i = 2
index_j = 0
execute_on = TIMESTEP_END
[]
[stress_12]
type = RankTwoAux
variable = stress_12
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
execute_on = TIMESTEP_END
[]
[strain_12]
type = RankTwoAux
variable = strain_12
rank_two_tensor = total_global_strain_t_points_0
index_i = 1
index_j = 2
execute_on = TIMESTEP_END
[]
[stress_21]
type = RankTwoAux
variable = stress_21
rank_two_tensor = global_stress_t_points_0
index_i = 2
index_j = 1
execute_on = TIMESTEP_END
[]
[strain_21]
type = RankTwoAux
variable = strain_21
rank_two_tensor = total_global_strain_t_points_0
index_i = 2
index_j = 1
execute_on = TIMESTEP_END
[]
[]
[BCs]
[BC_0]
type = ADDirichletBC
variable = disp_x
value = 0.0
boundary = '2' #left
[]
[BC_1]
type = ADDirichletBC
variable = disp_y
value = 0.0
boundary = 10 #left_side_mid
[]
[BC_2]
type = FunctionDirichletBC
variable = disp_x
boundary = '3'
function = displacement
[]
[]
[Functions]
[displacement]
type = PiecewiseLinear
x = '0.0 1.0'
y = '0.0 0.2'
[]
[]
[Materials]
[stress]
type = ADComputeShellStress
block = 1
through_thickness_order = SECOND
[]
[elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 210000
poissons_ratio = 0.3
block = 1
through_thickness_order = SECOND
[]
[strain]
type = ADComputeIncrementalShellStrain
block = 1
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
line_search = 'none'
nl_rel_tol = 1e-16
nl_abs_tol = 1e-16
dt = 1
dtmin = 1
end_time = 1
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/surface_tension_KKS/surface_tension_KKS.i)
#
# KKS coupled with elasticity. Physical parameters for matrix and precipitate phases
# are gamma and gamma-prime phases, respectively, in the Ni-Al system.
# Parameterization is as described in L.K. Aagesen et al., Computational Materials
# Science, 140, 10-21 (2017), with isotropic elastic properties in both phases
# and without eigenstrain.
#
[Mesh]
type = GeneratedMesh
dim = 1
nx = 200
xmax = 200
[]
[Problem]
coord_type = RSPHERICAL
[]
[GlobalParams]
displacements = 'disp_x'
[]
[Variables]
# order parameter
[./eta]
order = FIRST
family = LAGRANGE
[../]
# solute concentration
[./c]
order = FIRST
family = LAGRANGE
[../]
# chemical potential
[./w]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (matrix)
[./cm]
order = FIRST
family = LAGRANGE
initial_condition = 0.13
[../]
# solute phase concentration (precipitate)
[./cp]
order = FIRST
family = LAGRANGE
initial_condition = 0.235
[../]
[]
[AuxVariables]
[./energy_density]
family = MONOMIAL
[../]
[./extra_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./extra_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./extra_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[ICs]
[./eta_ic]
variable = eta
type = FunctionIC
function = ic_func_eta
[../]
[./c_ic]
variable = c
type = FunctionIC
function = ic_func_c
[../]
[]
[Functions]
[./ic_func_eta]
type = ParsedFunction
expression = 'r:=sqrt(x^2+y^2+z^2);0.5*(1.0-tanh((r-r0)/delta_eta/sqrt(2.0)))'
symbol_names = 'delta_eta r0'
symbol_values = '6.431 100'
[../]
[./ic_func_c]
type = ParsedFunction
expression = 'r:=sqrt(x^2+y^2+z^2);eta_an:=0.5*(1.0-tanh((r-r0)/delta/sqrt(2.0)));0.235*eta_an^3*(6*eta_an^2-15*eta_an+10)+0.13*(1-eta_an^3*(6*eta_an^2-15*eta_an+10))'
symbol_names = 'delta r0'
symbol_values = '6.431 100'
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
add_variables = true
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz'
[../]
[]
[Kernels]
# enforce c = (1-h(eta))*cm + h(eta)*cp
[./PhaseConc]
type = KKSPhaseConcentration
ca = cm
variable = cp
c = c
eta = eta
[../]
# enforce pointwise equality of chemical potentials
[./ChemPotVacancies]
type = KKSPhaseChemicalPotential
variable = cm
cb = cp
fa_name = f_total_matrix
fb_name = f_total_ppt
[../]
#
# Cahn-Hilliard Equation
#
[./CHBulk]
type = KKSSplitCHCRes
variable = c
ca = cm
fa_name = f_total_matrix
w = w
[../]
[./dcdt]
type = CoupledTimeDerivative
variable = w
v = c
[../]
[./ckernel]
type = SplitCHWRes
mob_name = M
variable = w
[../]
#
# Allen-Cahn Equation
#
[./ACBulkF]
type = KKSACBulkF
variable = eta
fa_name = f_total_matrix
fb_name = f_total_ppt
w = 0.0033
args = 'cp cm'
[../]
[./ACBulkC]
type = KKSACBulkC
variable = eta
ca = cm
cb = cp
fa_name = f_total_matrix
[../]
[./ACInterface]
type = ACInterface
variable = eta
kappa_name = kappa
[../]
[./detadt]
type = TimeDerivative
variable = eta
[../]
[]
[AuxKernels]
[./extra_xx]
type = RankTwoAux
rank_two_tensor = extra_stress
index_i = 0
index_j = 0
variable = extra_xx
[../]
[./extra_yy]
type = RankTwoAux
rank_two_tensor = extra_stress
index_i = 1
index_j = 1
variable = extra_yy
[../]
[./extra_zz]
type = RankTwoAux
rank_two_tensor = extra_stress
index_i = 2
index_j = 2
variable = extra_zz
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = mechanical_strain
index_i = 0
index_j = 0
variable = strain_xx
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = mechanical_strain
index_i = 1
index_j = 1
variable = strain_yy
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = mechanical_strain
index_i = 2
index_j = 2
variable = strain_zz
[../]
[]
[Materials]
# Chemical free energy of the matrix
[./fm]
type = DerivativeParsedMaterial
property_name = fm
coupled_variables = 'cm'
expression = '6.55*(cm-0.13)^2'
[../]
# Elastic energy of the matrix
[./elastic_free_energy_m]
type = ElasticEnergyMaterial
base_name = matrix
f_name = fe_m
args = ' '
[../]
# Total free energy of the matrix
[./Total_energy_matrix]
type = DerivativeSumMaterial
property_name = f_total_matrix
sum_materials = 'fm fe_m'
coupled_variables = 'cm'
[../]
# Free energy of the precipitate phase
[./fp]
type = DerivativeParsedMaterial
property_name = fp
coupled_variables = 'cp'
expression = '6.55*(cp-0.235)^2'
[../]
# Elastic energy of the precipitate
[./elastic_free_energy_p]
type = ElasticEnergyMaterial
base_name = ppt
f_name = fe_p
args = ' '
[../]
# Total free energy of the precipitate
[./Total_energy_ppt]
type = DerivativeSumMaterial
property_name = f_total_ppt
sum_materials = 'fp fe_p'
coupled_variables = 'cp'
[../]
# Total elastic energy
[./Total_elastic_energy]
type = DerivativeTwoPhaseMaterial
eta = eta
f_name = f_el_mat
fa_name = fe_m
fb_name = fe_p
outputs = exodus
W = 0
[../]
# h(eta)
[./h_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta
[../]
# g(eta)
[./g_eta]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta
outputs = exodus
[../]
# constant properties
[./constants]
type = GenericConstantMaterial
prop_names = 'M L kappa'
prop_values = '0.7 0.7 0.1365'
[../]
#Mechanical properties
[./Stiffness_matrix]
type = ComputeElasticityTensor
C_ijkl = '74.25 14.525'
base_name = matrix
fill_method = symmetric_isotropic
[../]
[./Stiffness_ppt]
type = ComputeElasticityTensor
C_ijkl = '74.25 14.525'
base_name = ppt
fill_method = symmetric_isotropic
[../]
[./strain_matrix]
type = ComputeRSphericalSmallStrain
base_name = matrix
[../]
[./strain_ppt]
type = ComputeRSphericalSmallStrain
base_name = ppt
[../]
[./stress_matrix]
type = ComputeLinearElasticStress
base_name = matrix
[../]
[./stress_ppt]
type = ComputeLinearElasticStress
base_name = ppt
[../]
[./global_stress]
type = TwoPhaseStressMaterial
base_A = matrix
base_B = ppt
[../]
[./interface_stress]
type = ComputeSurfaceTensionKKS
v = eta
kappa_name = kappa
w = 0.0033
[../]
[]
[BCs]
[./left_r]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[]
#
# Precondition using handcoded off-diagonal terms
#
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm lu nonzero'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-9
nl_abs_tol = 1.0e-10
num_steps = 2
dt = 0.5
[]
[Outputs]
exodus = true
[./csv]
type = CSV
execute_on = 'final'
[../]
[]
(modules/solid_mechanics/test/tests/initial_stress/gravity_cosserat.i)
# Apply an initial stress that should be
# exactly that caused by gravity, and then
# do a transient step to check that nothing
# happens
# TODO: currently this has no div(moment_stress)
# contriution to the Kernels. This is because
# there is no way in MOOSE of calculating
# moment stresses and applying initial stresses.
# This will become possible after issue #7243 is
# resolved.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 10
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -10
zmax = 0
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[./wc_z]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[./z_moment]
type = MomentBalancing
variable = wc_z
component = 2
[../]
[./weight]
type = BodyForce
variable = disp_z
value = -0.5 # this is density*gravity
[../]
[]
[BCs]
# back = zmin
# front = zmax
# bottom = ymin
# top = ymax
# left = xmin
# right = xmax
[./x]
type = DirichletBC
variable = disp_x
boundary = 'left right'
value = 0
[../]
[./y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0
[../]
[./z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./weight]
type = ParsedFunction
expression = '0.5*z' # initial stress that should result from the weight force
[../]
[./kxx]
type = ParsedFunction
expression = '0.4*z' # some arbitrary xx and yy stress that should not affect the result
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeCosseratElasticityTensor
B_ijkl = '1.1 0.6 0.6' # In Forest notation this is alpha=1.1 (this is unimportant), beta=gamma=0.6.
fill_method_bending = 'general_isotropic'
fill_method = symmetric_isotropic
E_ijkl = '0.4 0.4' # young = 1, poisson = 0.25
[../]
[./strain]
type = ComputeCosseratSmallStrain
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = 'kxx 0 0 0 kxx 0 0 0 weight'
eigenstrain_name = ini_stress
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
[../]
[]
[Executioner]
end_time = 1.0
dt = 1.0
solve_type = NEWTON
type = Transient
nl_abs_tol = 1E-8
nl_rel_tol = 1E-12
l_tol = 1E-3
l_max_its = 200
nl_max_its = 400
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[]
[Outputs]
file_base = gravity_cosserat
exodus = true
[]
(modules/solid_mechanics/test/tests/mohr_coulomb/small_deform_hard_cubic.i)
# apply uniform stretches in x, y and z directions.
# let cohesion = 10, cohesion_residual = 2, cohesion_limit = 0.0003
# With cohesion = C, friction_angle = 60deg, tip_smoother = 4, the
# algorithm should return to
# sigma_m = (C*Cos(60) - 4)/Sin(60)
# This allows checking of the relationship for C
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-6*x*t'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '1E-6*y*t'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z*t'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./mc_int]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./mc_int_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = mc_int
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./internal]
type = PointValue
point = '0 0 0'
variable = mc_int
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningCubic
value_0 = 10
value_residual = 2
internal_limit = 0.0003
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 60
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4
mc_edge_smoother = 25
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = mc
debug_fspb = crash
debug_jac_at_stress = '10 1 2 1 10 3 2 3 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1E-4
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-8
[../]
[]
[Executioner]
end_time = 10
dt = 0.25
type = Transient
[]
[Outputs]
file_base = small_deform_hard_cubic
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/multi/three_surface21.i)
# Plasticit models:
# SimpleTester0 with a = 0 and b = 1 and strength = 1
# SimpleTester1 with a = 1 and b = 0 and strength = 1
# SimpleTester2 with a = 1 and b = 1 and strength = 1.5
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 2.0E-6m in y direction and 2.0E-6 in z direction.
# trial stress_yy = 2.0 and stress_zz = 2.0
#
# Then all yield functions will activate
# However, there is linear dependence. SimpleTester1 or SimpleTester0 will be rutned off (they are equi-distant).
# The algorithm will return to one corner point, but there will be negative plastic multipliers
# so the other SimpleTester0 or SimpleTester1 will turn off, and the algorithm will return to
# stress_yy=0.75 and stress_zz=0.75
# internal2=1.25
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2.0E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '2.0E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./f2]
type = PointValue
point = '0 0 0'
variable = f2
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[./int2]
type = PointValue
point = '0 0 0'
variable = int2
[../]
[]
[UserObjects]
[./simple0]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 0
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 1.5
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple0 simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = three_surface21
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/jacobian/cto14.i)
# Jacobian check for nonlinear, multi-surface plasticity.
# Returns to an edge of the tensile yield surface
# This is a very nonlinear test and a delicate test because it perturbs around
# an edge of the yield function where some derivatives are not well defined
#
# Plasticity models:
# Mohr-Coulomb with cohesion = 40MPa, friction angle = 35deg, dilation angle = 5deg
# Tensile with strength = 1MPa
#
# Lame lambda = 1GPa. Lame mu = 1.3GPa
#
# NOTE: The yield function tolerances here are set at 100-times what i would usually use
# This is because otherwise the test fails on the 'pearcey' architecture.
# This is because identical stress tensors yield slightly different eigenvalues
# (and hence return-map residuals) on 'pearcey' than elsewhere, which results in
# a different number of NR iterations are needed to return to the yield surface.
# This is presumably because of compiler internals, or the BLAS routines being
# optimised differently or something similar.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int3]
order = CONSTANT
family = MONOMIAL
[../]
[./int4]
order = CONSTANT
family = MONOMIAL
[../]
[./int5]
order = CONSTANT
family = MONOMIAL
[../]
[./int6]
order = CONSTANT
family = MONOMIAL
[../]
[./int7]
order = CONSTANT
family = MONOMIAL
[../]
[./int8]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int0
index = 0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int1
index = 1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int2
index = 2
[../]
[./int3]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int3
index = 3
[../]
[./int4]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int4
index = 4
[../]
[./int5]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int5
index = 5
[../]
[./int6]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int6
index = 6
[../]
[./int7]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int7
index = 7
[../]
[./int8]
type = MaterialStdVectorAux
property = plastic_yield_function
variable = int8
index = 8
[../]
[]
[Postprocessors]
[./max_int0]
type = ElementExtremeValue
variable = int0
outputs = console
[../]
[./max_int1]
type = ElementExtremeValue
variable = int1
outputs = console
[../]
[./max_int2]
type = ElementExtremeValue
variable = int2
outputs = console
[../]
[./max_int3]
type = ElementExtremeValue
variable = int3
outputs = console
[../]
[./max_int4]
type = ElementExtremeValue
variable = int4
outputs = console
[../]
[./max_int5]
type = ElementExtremeValue
variable = int5
outputs = console
[../]
[./max_int6]
type = ElementExtremeValue
variable = int6
outputs = console
[../]
[./max_int7]
type = ElementExtremeValue
variable = int7
outputs = console
[../]
[./max_int8]
type = ElementExtremeValue
variable = int8
outputs = console
[../]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console' [../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console' [../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console' [../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console' [../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 4E1
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = SolidMechanicsPlasticMohrCoulombMulti
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
yield_function_tolerance = 1.0E-4 # Note larger value
shift = 1.0E-4 # Note larger value
internal_constraint_tolerance = 1.0E-7
[../]
[./ts]
type = SolidMechanicsHardeningConstant
value = 1E0
[../]
[./tensile]
type = SolidMechanicsPlasticTensileMulti
tensile_strength = ts
yield_function_tolerance = 1.0E-4 # Note larger value
shift = 1.0E-4 # Note larger value
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '1.0E3 1.3E3'
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '10 12 -14 12 5 20 -14 20 8'
eigenstrain_name = ini_stress
[../]
[./multi]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1E-7
plastic_models = 'tensile mc'
max_NR_iterations = 5
specialIC = 'rock'
deactivation_scheme = 'safe'
min_stepsize = 1
tangent_operator = nonlinear
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_type'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000 test'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
[]
[Outputs]
file_base = cto14
exodus = false
[]
(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/contact/test/tests/verification/patch_tests/cyl_1/cyl1_mu_0_2_pen.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = cyl1_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = cyl1_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 = cyl1_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
tangential_tolerance = 1e-3
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/verification/patch_tests/plane_4/plane4_template2.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane4_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 200
[]
[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 = ComputeIncrementalStrain
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 = ComputeIncrementalStrain
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-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
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/static_deformations/layered_cosserat_02.i)
# apply shears and Cosserat rotations and observe the stresses and moment-stresses
# with
# young = 0.7
# poisson = 0.2
# layer_thickness = 0.1
# joint_normal_stiffness = 0.25
# joint_shear_stiffness = 0.2
# then
# a0000 = 0.730681
# a0011 = 0.18267
# a2222 = 0.0244221
# a0022 = 0.006055
# a0101 = 0.291667
# a66 = 0.018717
# a77 = 0.155192
# b0110 = 0.000534
# b0101 = 0.000107
# and with
# u_x = y + 2*z
# u_y = x -1.5*z
# u_z = 1.1*x - 2.2*y
# wc_x = 0.5
# wc_y = 0.8
# then
# strain_xx = 0
# strain_xy = 1
# strain_xz = 2 - 0.8 = 1.2
# strain_yx = 1
# strain_yy = 0
# strain_yz = -1.5 + 0.5 = -1
# strain_zx = 1.1 + 0.8 = 1.9
# strain_zy = -2.2 - 0.5 = -2.7
# strain_zz = 0
# so that
# stress_xy = a0101*(1+1) = 0.583333
# stress_xz = a66*1.2 + a66*1.9 = 0.058021
# stress_yx = a0101*(1+1) = 0.583333
# stress_yz = a66*(-1) + a66*(-2.7) = -0.06925
# old stress_zx = a77*1.2 + a66*1.9 = 0.221793
# old stress_zy = a77*(-1) + a66*(-2.7) = -0.205728
# stress_zx = a66*1.2 + a77*1.9 = 0.317325
# stress_zy = a66*(-1) + a77*(-2.7) = -0.437735
# and all others zero
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
ymax = 1
nz = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
Cosserat_rotations = 'wc_x wc_y wc_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./wc_x]
[../]
[./wc_y]
[../]
[]
[Kernels]
[./cx_elastic]
type = CosseratStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = CosseratStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = CosseratStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./x_couple]
type = StressDivergenceTensors
variable = wc_x
displacements = 'wc_x wc_y wc_z'
component = 0
base_name = couple
[../]
[./y_couple]
type = StressDivergenceTensors
variable = wc_y
displacements = 'wc_x wc_y wc_z'
component = 1
base_name = couple
[../]
[./x_moment]
type = MomentBalancing
variable = wc_x
component = 0
[../]
[./y_moment]
type = MomentBalancing
variable = wc_y
component = 1
[../]
[]
[BCs]
# zmin is called back
# zmax is called front
# ymin is called bottom
# ymax is called top
# xmin is called left
# xmax is called right
[./strain_xx]
type = FunctionDirichletBC
variable = disp_x
boundary = 'left right'
function = 'y+2*z'
[../]
[./strain_yy]
type = FunctionDirichletBC
variable = disp_y
boundary = 'bottom top'
function = 'x-1.5*z'
[../]
[./strain_zz]
type = FunctionDirichletBC
variable = disp_z
boundary = 'back front'
function = '1.1*x-2.2*y'
[../]
[./wc_x]
type = FunctionDirichletBC
variable = wc_x
boundary = 'left right'
function = 0.5
[../]
[./wc_y]
type = FunctionDirichletBC
variable = wc_y
boundary = 'left right'
function = 0.8
[../]
[]
[AuxVariables]
[./wc_z]
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_xz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_yz]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zx]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zy]
family = MONOMIAL
order = CONSTANT
[../]
[./couple_stress_zz]
family = MONOMIAL
order = CONSTANT
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yx
index_i = 1
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zx
index_i = 2
index_j = 0
[../]
[./stress_zy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zy
index_i = 2
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./couple_stress_xx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xx
index_i = 0
index_j = 0
[../]
[./couple_stress_xy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xy
index_i = 0
index_j = 1
[../]
[./couple_stress_xz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_xz
index_i = 0
index_j = 2
[../]
[./couple_stress_yx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yx
index_i = 1
index_j = 0
[../]
[./couple_stress_yy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yy
index_i = 1
index_j = 1
[../]
[./couple_stress_yz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_yz
index_i = 1
index_j = 2
[../]
[./couple_stress_zx]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zx
index_i = 2
index_j = 0
[../]
[./couple_stress_zy]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zy
index_i = 2
index_j = 1
[../]
[./couple_stress_zz]
type = RankTwoAux
rank_two_tensor = couple_stress
variable = couple_stress_zz
index_i = 2
index_j = 2
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yx]
type = PointValue
point = '0 0 0'
variable = stress_yx
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zx]
type = PointValue
point = '0 0 0'
variable = stress_zx
[../]
[./s_zy]
type = PointValue
point = '0 0 0'
variable = stress_zy
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./c_s_xx]
type = PointValue
point = '0 0 0'
variable = couple_stress_xx
[../]
[./c_s_xy]
type = PointValue
point = '0 0 0'
variable = couple_stress_xy
[../]
[./c_s_xz]
type = PointValue
point = '0 0 0'
variable = couple_stress_xz
[../]
[./c_s_yx]
type = PointValue
point = '0 0 0'
variable = couple_stress_yx
[../]
[./c_s_yy]
type = PointValue
point = '0 0 0'
variable = couple_stress_yy
[../]
[./c_s_yz]
type = PointValue
point = '0 0 0'
variable = couple_stress_yz
[../]
[./c_s_zx]
type = PointValue
point = '0 0 0'
variable = couple_stress_zx
[../]
[./c_s_zy]
type = PointValue
point = '0 0 0'
variable = couple_stress_zy
[../]
[./c_s_zz]
type = PointValue
point = '0 0 0'
variable = couple_stress_zz
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeLayeredCosseratElasticityTensor
young = 0.7
poisson = 0.2
layer_thickness = 0.1
joint_normal_stiffness = 0.25
joint_shear_stiffness = 0.2
[../]
[./strain]
type = ComputeCosseratSmallStrain
[../]
[./stress]
type = ComputeCosseratLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -snes_atol -snes_rtol -snes_max_it -ksp_atol -ksp_rtol'
petsc_options_value = 'gmres asm lu 1E-10 1E-14 10 1E-15 1E-10'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
num_steps = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = layered_cosserat_02
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/hcp_volumetric_eigenstrain.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[e_xtalpl_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_xtalpl_yy]
order = CONSTANT
family = MONOMIAL
[]
[ev_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_xtalpl_zz]
order = CONSTANT
family = MONOMIAL
[]
[fv_xx]
order = CONSTANT
family = MONOMIAL
[]
[fv_yy]
order = CONSTANT
family = MONOMIAL
[]
[fv_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_yy]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_xx]
order = CONSTANT
family = MONOMIAL
[]
[f_yy]
order = CONSTANT
family = MONOMIAL
[]
[f_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
additional_generate_output = 'stress_zz stress_xx stress_yy vonmises_stress l2norm_strain'
additional_material_output_order = FIRST
[]
[Functions]
[temperature_ramp]
type = ParsedFunction
expression = 'if(t<=1500.0, 600.0 + t/6.0, 850.0)'
[]
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = 'temperature_ramp'
execute_on = timestep_begin
[]
[e_xtalpl_xx]
type = RankTwoAux
variable = e_xtalpl_xx
rank_two_tensor = total_lagrangian_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_xtalpl_yy]
type = RankTwoAux
variable = e_xtalpl_yy
rank_two_tensor = total_lagrangian_strain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[ev_zz]
type = RankTwoAux
variable = ev_zz
rank_two_tensor = void_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_xtalpl_zz]
type = RankTwoAux
variable = e_xtalpl_zz
rank_two_tensor = total_lagrangian_strain
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[fv_xx]
type = RankTwoAux
variable = fv_xx
rank_two_tensor = volumetric_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fv_yy]
type = RankTwoAux
variable = fv_yy
rank_two_tensor = volumetric_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fv_zz]
type = RankTwoAux
variable = fv_zz
rank_two_tensor = volumetric_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = plastic_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f_xx]
type = RankTwoAux
variable = f_xx
rank_two_tensor = deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[f_yy]
type = RankTwoAux
variable = f_yy
rank_two_tensor = deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[f_zz]
type = RankTwoAux
variable = f_zz
rank_two_tensor = deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = void_eigenstrain
tan_mod_type = exact
line_search_method = CUT_HALF
use_line_search = true
maximum_substep_iteration = 10
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e3
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '9 22' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e2 4.7e2' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
[]
[void_eigenstrain]
type = ComputeCrystalPlasticityVolumetricEigenstrain
eigenstrain_name = void_eigenstrain
deformation_gradient_name = volumetric_deformation_gradient
mean_spherical_void_radius = void_radius
spherical_void_number_density = void_density
[]
[void_density]
type = ParsedMaterial
property_name = void_density
coupled_variables = temperature
expression = 'if(temperature<611.0, 0.0,
if(temperature<=835.0, 2.387e13 *(temperature - 611.0) / 1344.0, 0.0))' #1/mm^3, gives an eigenstrain of 1.0e-5 with radius=1.0e-6mm
# outputs = exodus
[]
[void_radius]
type = GenericConstantMaterial
prop_names = void_radius
prop_values = '1.0e-6' ##1 nm avg particle radius
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[e_xtalpl_xx]
type = ElementAverageValue
variable = e_xtalpl_xx
[]
[e_xtalpl_yy]
type = ElementAverageValue
variable = e_xtalpl_yy
[]
[ev_zz]
type = ElementAverageValue
variable = ev_zz
[]
[e_xtalpl_zz]
type = ElementAverageValue
variable = e_xtalpl_zz
[]
[fv_xx]
type = ElementAverageValue
variable = fv_xx
[]
[fv_yy]
type = ElementAverageValue
variable = fv_yy
[]
[fv_zz]
type = ElementAverageValue
variable = fv_zz
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_yy]
type = ElementAverageValue
variable = fp_yy
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[f_xx]
type = ElementAverageValue
variable = f_xx
[]
[f_yy]
type = ElementAverageValue
variable = f_yy
[]
[f_zz]
type = ElementAverageValue
variable = f_zz
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 10.0
dtmin = 1e-4
# end_time = 10
num_steps = 10
[]
[Outputs]
csv = true
[console]
type = Console
# max_rows = 5
[]
[]
(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/combined/examples/phase_field-mechanics/kks_mechanics_KHS.i)
# KKS phase-field model coupled with elasticity using Khachaturyan's scheme as
# described in L.K. Aagesen et al., Computational Materials Science, 140, 10-21 (2017)
# Original run #170403a
[Mesh]
type = GeneratedMesh
dim = 3
nx = 640
ny = 1
nz = 1
xmin = -10
xmax = 10
ymin = 0
ymax = 0.03125
zmin = 0
zmax = 0.03125
elem_type = HEX8
[]
[Variables]
# order parameter
[./eta]
order = FIRST
family = LAGRANGE
[../]
# solute concentration
[./c]
order = FIRST
family = LAGRANGE
[../]
# chemical potential
[./w]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (matrix)
[./cm]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (precipitate)
[./cp]
order = FIRST
family = LAGRANGE
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[ICs]
[./eta_ic]
variable = eta
type = FunctionIC
function = ic_func_eta
block = 0
[../]
[./c_ic]
variable = c
type = FunctionIC
function = ic_func_c
block = 0
[../]
[./w_ic]
variable = w
type = ConstantIC
value = 0.00991
block = 0
[../]
[./cm_ic]
variable = cm
type = ConstantIC
value = 0.131
block = 0
[../]
[./cp_ic]
variable = cp
type = ConstantIC
value = 0.236
block = 0
[../]
[]
[Functions]
[./ic_func_eta]
type = ParsedFunction
expression = '0.5*(1.0+tanh((x)/delta_eta/sqrt(2.0)))'
symbol_names = 'delta_eta'
symbol_values = '0.8034'
[../]
[./ic_func_c]
type = ParsedFunction
expression = '0.2389*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^3*(6*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^2-15*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))+10)+0.1339*(1-(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^3*(6*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))^2-15*(0.5*(1.0+tanh(x/delta/sqrt(2.0))))+10))'
symbol_names = 'delta'
symbol_values = '0.8034'
[../]
[./psi_eq_int]
type = ParsedFunction
expression = 'volume*psi_alpha'
symbol_names = 'volume psi_alpha'
symbol_values = 'volume psi_alpha'
[../]
[./gamma]
type = ParsedFunction
expression = '(psi_int - psi_eq_int) / dy / dz'
symbol_names = 'psi_int psi_eq_int dy dz'
symbol_values = 'psi_int psi_eq_int 0.03125 0.03125'
[../]
[]
[AuxVariables]
[./sigma11]
order = CONSTANT
family = MONOMIAL
[../]
[./sigma22]
order = CONSTANT
family = MONOMIAL
[../]
[./sigma33]
order = CONSTANT
family = MONOMIAL
[../]
[./e11]
order = CONSTANT
family = MONOMIAL
[../]
[./e12]
order = CONSTANT
family = MONOMIAL
[../]
[./e22]
order = CONSTANT
family = MONOMIAL
[../]
[./e33]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el11]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el12]
order = CONSTANT
family = MONOMIAL
[../]
[./e_el22]
order = CONSTANT
family = MONOMIAL
[../]
[./f_el]
order = CONSTANT
family = MONOMIAL
[../]
[./eigen_strain00]
order = CONSTANT
family = MONOMIAL
[../]
[./Fglobal]
order = CONSTANT
family = MONOMIAL
[../]
[./psi]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./matl_sigma11]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = sigma11
[../]
[./matl_sigma22]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = sigma22
[../]
[./matl_sigma33]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = sigma33
[../]
[./matl_e11]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 0
variable = e11
[../]
[./f_el]
type = MaterialRealAux
variable = f_el
property = f_el_mat
execute_on = timestep_end
[../]
[./GlobalFreeEnergy]
variable = Fglobal
type = KKSGlobalFreeEnergy
fa_name = fm
fb_name = fp
w = 0.0264
kappa_names = kappa
interfacial_vars = eta
[../]
[./psi_potential]
variable = psi
type = ParsedAux
coupled_variables = 'Fglobal w c f_el sigma11 e11'
expression = 'Fglobal - w*c + f_el - sigma11*e11'
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = right
value = 0
[../]
[./front_y]
type = DirichletBC
variable = disp_y
boundary = front
value = 0
[../]
[./back_y]
type = DirichletBC
variable = disp_y
boundary = back
value = 0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0
[../]
[]
[Materials]
# Chemical free energy of the matrix
[./fm]
type = DerivativeParsedMaterial
property_name = fm
coupled_variables = 'cm'
expression = '6.55*(cm-0.13)^2'
[../]
# Chemical Free energy of the precipitate phase
[./fp]
type = DerivativeParsedMaterial
property_name = fp
coupled_variables = 'cp'
expression = '6.55*(cp-0.235)^2'
[../]
# Elastic energy of the precipitate
[./elastic_free_energy_p]
type = ElasticEnergyMaterial
f_name = f_el_mat
args = 'eta'
outputs = exodus
[../]
# h(eta)
[./h_eta]
type = SwitchingFunctionMaterial
h_order = HIGH
eta = eta
[../]
# 1- h(eta), putting in function explicitly
[./one_minus_h_eta_explicit]
type = DerivativeParsedMaterial
property_name = one_minus_h_explicit
coupled_variables = eta
expression = 1-eta^3*(6*eta^2-15*eta+10)
outputs = exodus
[../]
# g(eta)
[./g_eta]
type = BarrierFunctionMaterial
g_order = SIMPLE
eta = eta
[../]
# constant properties
[./constants]
type = GenericConstantMaterial
prop_names = 'M L kappa misfit'
prop_values = '0.7 0.7 0.01704 0.00377'
[../]
#Mechanical properties
[./Stiffness_matrix]
type = ComputeElasticityTensor
base_name = C_matrix
C_ijkl = '103.3 74.25 74.25 103.3 74.25 103.3 46.75 46.75 46.75'
fill_method = symmetric9
[../]
[./Stiffness_ppt]
type = ComputeElasticityTensor
C_ijkl = '100.7 71.45 71.45 100.7 71.45 100.7 50.10 50.10 50.10'
base_name = C_ppt
fill_method = symmetric9
[../]
[./C]
type = CompositeElasticityTensor
args = eta
tensors = 'C_matrix C_ppt'
weights = 'one_minus_h_explicit h'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigenstrain_ppt'
[../]
[./eigen_strain]
type = ComputeVariableEigenstrain
eigen_base = '0.00377 0.00377 0.00377 0 0 0'
prefactor = h
args = eta
eigenstrain_name = 'eigenstrain_ppt'
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
# enforce c = (1-h(eta))*cm + h(eta)*cp
[./PhaseConc]
type = KKSPhaseConcentration
ca = cm
variable = cp
c = c
eta = eta
[../]
# enforce pointwise equality of chemical potentials
[./ChemPotVacancies]
type = KKSPhaseChemicalPotential
variable = cm
cb = cp
fa_name = fm
fb_name = fp
[../]
#
# Cahn-Hilliard Equation
#
[./CHBulk]
type = KKSSplitCHCRes
variable = c
ca = cm
fa_name = fm
w = w
[../]
[./dcdt]
type = CoupledTimeDerivative
variable = w
v = c
[../]
[./ckernel]
type = SplitCHWRes
mob_name = M
variable = w
[../]
#
# Allen-Cahn Equation
#
[./ACBulkF]
type = KKSACBulkF
variable = eta
fa_name = fm
fb_name = fp
w = 0.0264
args = 'cp cm'
[../]
[./ACBulkC]
type = KKSACBulkC
variable = eta
ca = cm
cb = cp
fa_name = fm
[../]
[./ACBulk_el] #This adds df_el/deta for strain interpolation
type = AllenCahn
variable = eta
f_name = f_el_mat
[../]
[./ACInterface]
type = ACInterface
variable = eta
kappa_name = kappa
[../]
[./detadt]
type = TimeDerivative
variable = eta
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'asm ilu nonzero'
l_max_its = 30
nl_max_its = 10
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 1.0e-11
num_steps = 200
[./TimeStepper]
type = SolutionTimeAdaptiveDT
dt = 0.5
[../]
[]
[Postprocessors]
[./f_el_int]
type = ElementIntegralMaterialProperty
mat_prop = f_el_mat
[../]
[./c_alpha]
type = SideAverageValue
boundary = left
variable = c
[../]
[./c_beta]
type = SideAverageValue
boundary = right
variable = c
[../]
[./e11_alpha]
type = SideAverageValue
boundary = left
variable = e11
[../]
[./e11_beta]
type = SideAverageValue
boundary = right
variable = e11
[../]
[./s11_alpha]
type = SideAverageValue
boundary = left
variable = sigma11
[../]
[./s22_alpha]
type = SideAverageValue
boundary = left
variable = sigma22
[../]
[./s33_alpha]
type = SideAverageValue
boundary = left
variable = sigma33
[../]
[./s11_beta]
type = SideAverageValue
boundary = right
variable = sigma11
[../]
[./s22_beta]
type = SideAverageValue
boundary = right
variable = sigma22
[../]
[./s33_beta]
type = SideAverageValue
boundary = right
variable = sigma33
[../]
[./f_el_alpha]
type = SideAverageValue
boundary = left
variable = f_el
[../]
[./f_el_beta]
type = SideAverageValue
boundary = right
variable = f_el
[../]
[./f_c_alpha]
type = SideAverageValue
boundary = left
variable = Fglobal
[../]
[./f_c_beta]
type = SideAverageValue
boundary = right
variable = Fglobal
[../]
[./chem_pot_alpha]
type = SideAverageValue
boundary = left
variable = w
[../]
[./chem_pot_beta]
type = SideAverageValue
boundary = right
variable = w
[../]
[./psi_alpha]
type = SideAverageValue
boundary = left
variable = psi
[../]
[./psi_beta]
type = SideAverageValue
boundary = right
variable = psi
[../]
[./total_energy]
type = ElementIntegralVariablePostprocessor
variable = Fglobal
[../]
# Get simulation cell size from postprocessor
[./volume]
type = ElementIntegralMaterialProperty
mat_prop = 1
[../]
[./psi_eq_int]
type = FunctionValuePostprocessor
function = psi_eq_int
[../]
[./psi_int]
type = ElementIntegralVariablePostprocessor
variable = psi
[../]
[./gamma]
type = FunctionValuePostprocessor
function = gamma
[../]
[./int_position]
type = FindValueOnLine
start_point = '-10 0 0'
end_point = '10 0 0'
v = eta
target = 0.5
[../]
[]
#
# Precondition using handcoded off-diagonal terms
#
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Outputs]
[./exodus]
type = Exodus
time_step_interval = 20
[../]
checkpoint = true
[./csv]
type = CSV
execute_on = 'final'
[../]
[]
(modules/solid_mechanics/test/tests/ad_anisotropic_creep/aniso_iso_creep_x_3d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0.0
ymin = 0.0
zmin = 0.0
xmax = 10.0
ymax = 1.0
zmax = 1.0
[]
[corner_node]
type = ExtraNodesetGenerator
new_boundary = '100'
nodes = '3 69'
input = gen
[]
[corner_node_2]
type = ExtraNodesetGenerator
new_boundary = '101'
nodes = '4 47'
input = corner_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_yz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = RankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xz
index_i = 0
index_j = 2
[]
[creep_strain_yz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yz
index_i = 1
index_j = 2
[]
[sigma_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 1
index_j = 1
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1.0e-9 1.0'
y = '0 -4e1 -4e1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx'
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 700
poissons_ratio = 0.0
[]
[elastic_strain]
type = ComputeMultipleInelasticStress
# inelastic_models = 'trial_creep_iso'
max_iterations = 50
[]
[hill_tensor]
type = HillConstants
# F G H L M N
hill_constants = "0.5 0.5 0.5 1.5 1.5 1.5"
[]
[trial_creep_aniso_iso]
type = HillCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
max_inelastic_increment = 0.00003
relative_tolerance = 1e-20
absolute_tolerance = 1e-20
internal_solve_output_on = never
# Force it to not use integration error
max_integration_error = 1.0
[]
[trial_creep_iso]
type = PowerLawCreepStressUpdate
coefficient = 1e-16
n_exponent = 9
m_exponent = 0
activation_energy = 0
# F G H L M N
max_inelastic_increment = 0.00003
relative_tolerance = 1e-16
absolute_tolerance = 1e-16
internal_solve_output_on = never
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[]
[no_disp_z]
type = DirichletBC
variable = disp_z
boundary = 101
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-13
nl_abs_tol = 1.0e-14
l_max_its = 90
num_steps = 10
dt = 5.0e-4
start_time = 0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_disp_y]
type = ElementExtremeValue
variable = disp_y
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
outputs = console
[]
[num_nonlin]
type = NumNonlinearIterations
outputs = console
[]
[creep_strain_xx]
type = ElementalVariableValue
variable = creep_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_yy]
type = ElementalVariableValue
variable = creep_strain_yy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_zz]
type = ElementalVariableValue
variable = creep_strain_zz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_xy]
type = ElementalVariableValue
variable = creep_strain_xy
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_yz]
type = ElementalVariableValue
variable = creep_strain_yz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[creep_strain_xz]
type = ElementalVariableValue
variable = creep_strain_xz
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 39
[]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(modules/combined/test/tests/poro_mechanics/borehole_lowres.i)
# Poroelastic response of a borehole.
#
# LOWRES VERSION: this version does not give perfect agreement with the analytical solution
#
# A fully-saturated medium contains a fluid with a homogeneous porepressure,
# but an anisitropic insitu stress. A infinitely-long borehole aligned with
# the $$z$$ axis is instanteously excavated. The borehole boundary is
# stress-free and allowed to freely drain. This problem is analysed using
# plane-strain conditions (no $$z$$ displacement).
#
# The solution in Laplace space is found in E Detournay and AHD Cheng "Poroelastic response of a borehole in a non-hydrostatic stress field". International Journal of Rock Mechanics and Mining Sciences and Geomechanics Abstracts 25 (1988) 171-182. In the small-time limit, the Laplace transforms may be performed. There is one typo in the paper. Equation (A4)'s final term should be -(a/r)\sqrt(4ct/(a^2\pi)), and not +(a/r)\sqrt(4ct/(a^2\pi)).
#
# Because realistic parameters are chosen (below),
# the residual for porepressure is much smaller than
# the residuals for the displacements. Therefore the
# scaling parameter is chosen. Also note that the
# insitu stresses are effective stresses, not total
# stresses, but the solution in the above paper is
# expressed in terms of total stresses.
#
# Here are the problem's parameters, and their values:
# Borehole radius. a = 1
# Rock's Lame lambda. la = 0.5E9
# Rock's Lame mu, which is also the Rock's shear modulus. mu = G = 1.5E9
# Rock bulk modulus. K = la + 2*mu/3 = 1.5E9
# Drained Poisson ratio. nu = (3K - 2G)/(6K + 2G) = 0.125
# Rock bulk compliance. 1/K = 0.66666666E-9
# Fluid bulk modulus. Kf = 0.7171315E9
# Fluid bulk compliance. 1/Kf = 1.39444444E-9
# Rock initial porosity. phi0 = 0.3
# Biot coefficient. alpha = 0.65
# Biot modulus. M = 1/(phi0/Kf + (alpha - phi0)(1 - alpha)/K) = 2E9
# Undrained bulk modulus. Ku = K + alpha^2*M = 2.345E9
# Undrained Poisson ratio. nuu = (3Ku - 2G)/(6Ku + 2G) = 0.2364
# Skempton coefficient. B = alpha*M/Ku = 0.554
# Fluid mobility (rock permeability/fluid viscosity). k = 1E-12
[Mesh]
type = FileMesh
file = borehole_lowres_input.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
block = 1
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./porepressure]
scaling = 1E9 # Notice the scaling, to make porepressure's kernels roughly of same magnitude as disp's kernels
[../]
[]
[ICs]
[./initial_p]
type = ConstantIC
variable = porepressure
value = 1E6
[../]
[]
[BCs]
[./fixed_outer_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = outer
[../]
[./fixed_outer_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = outer
[../]
[./plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'zmin zmax'
[../]
[./borehole_wall]
type = DirichletBC
variable = porepressure
value = 0
boundary = bh_wall
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./tot_yy]
type = ParsedAux
coupled_variables = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_yy
expression = 'stress_yy-0.65*porepressure'
[../]
[]
[Kernels]
[./grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[../]
[./grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[../]
[./grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[../]
[./poro_x]
type = PoroMechanicsCoupling
variable = disp_x
component = 0
[../]
[./poro_y]
type = PoroMechanicsCoupling
variable = disp_y
component = 1
[../]
[./poro_z]
type = PoroMechanicsCoupling
variable = disp_z
component = 2
[../]
[./poro_timederiv]
type = PoroFullSatTimeDerivative
variable = porepressure
[../]
[./darcy_flow]
type = CoefDiffusion
variable = porepressure
coef = 1E-12
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '0.5E9 1.5E9'
# bulk modulus is lambda + 2*mu/3 = 0.5 + 2*1.5/3 = 1.5E9
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '-1.35E6 0 0 0 -3.35E6 0 0 0 0' # remember this is the effective stress
eigenstrain_name = ini_stress
[../]
[./no_plasticity]
type = ComputeFiniteStrainElasticStress
[../]
[./poro_material]
type = PoroFullSatMaterial
porosity0 = 0.3
biot_coefficient = 0.65
solid_bulk_compliance = 0.6666666666667E-9
fluid_bulk_compliance = 1.3944444444444E-9
constant_porosity = false
[../]
[]
[Postprocessors]
[./p00]
type = PointValue
variable = porepressure
point = '1.00 0 0'
outputs = csv_p
[../]
[./p01]
type = PointValue
variable = porepressure
point = '1.01 0 0'
outputs = csv_p
[../]
[./p02]
type = PointValue
variable = porepressure
point = '1.02 0 0'
outputs = csv_p
[../]
[./p03]
type = PointValue
variable = porepressure
point = '1.03 0 0'
outputs = csv_p
[../]
[./p04]
type = PointValue
variable = porepressure
point = '1.04 0 0'
outputs = csv_p
[../]
[./p05]
type = PointValue
variable = porepressure
point = '1.05 0 0'
outputs = csv_p
[../]
[./p06]
type = PointValue
variable = porepressure
point = '1.06 0 0'
outputs = csv_p
[../]
[./p07]
type = PointValue
variable = porepressure
point = '1.07 0 0'
outputs = csv_p
[../]
[./p08]
type = PointValue
variable = porepressure
point = '1.08 0 0'
outputs = csv_p
[../]
[./p09]
type = PointValue
variable = porepressure
point = '1.09 0 0'
outputs = csv_p
[../]
[./p10]
type = PointValue
variable = porepressure
point = '1.10 0 0'
outputs = csv_p
[../]
[./p11]
type = PointValue
variable = porepressure
point = '1.11 0 0'
outputs = csv_p
[../]
[./p12]
type = PointValue
variable = porepressure
point = '1.12 0 0'
outputs = csv_p
[../]
[./p13]
type = PointValue
variable = porepressure
point = '1.13 0 0'
outputs = csv_p
[../]
[./p14]
type = PointValue
variable = porepressure
point = '1.14 0 0'
outputs = csv_p
[../]
[./p15]
type = PointValue
variable = porepressure
point = '1.15 0 0'
outputs = csv_p
[../]
[./p16]
type = PointValue
variable = porepressure
point = '1.16 0 0'
outputs = csv_p
[../]
[./p17]
type = PointValue
variable = porepressure
point = '1.17 0 0'
outputs = csv_p
[../]
[./p18]
type = PointValue
variable = porepressure
point = '1.18 0 0'
outputs = csv_p
[../]
[./p19]
type = PointValue
variable = porepressure
point = '1.19 0 0'
outputs = csv_p
[../]
[./p20]
type = PointValue
variable = porepressure
point = '1.20 0 0'
outputs = csv_p
[../]
[./p21]
type = PointValue
variable = porepressure
point = '1.21 0 0'
outputs = csv_p
[../]
[./p22]
type = PointValue
variable = porepressure
point = '1.22 0 0'
outputs = csv_p
[../]
[./p23]
type = PointValue
variable = porepressure
point = '1.23 0 0'
outputs = csv_p
[../]
[./p24]
type = PointValue
variable = porepressure
point = '1.24 0 0'
outputs = csv_p
[../]
[./p25]
type = PointValue
variable = porepressure
point = '1.25 0 0'
outputs = csv_p
[../]
[./s00]
type = PointValue
variable = disp_x
point = '1.00 0 0'
outputs = csv_s
[../]
[./s01]
type = PointValue
variable = disp_x
point = '1.01 0 0'
outputs = csv_s
[../]
[./s02]
type = PointValue
variable = disp_x
point = '1.02 0 0'
outputs = csv_s
[../]
[./s03]
type = PointValue
variable = disp_x
point = '1.03 0 0'
outputs = csv_s
[../]
[./s04]
type = PointValue
variable = disp_x
point = '1.04 0 0'
outputs = csv_s
[../]
[./s05]
type = PointValue
variable = disp_x
point = '1.05 0 0'
outputs = csv_s
[../]
[./s06]
type = PointValue
variable = disp_x
point = '1.06 0 0'
outputs = csv_s
[../]
[./s07]
type = PointValue
variable = disp_x
point = '1.07 0 0'
outputs = csv_s
[../]
[./s08]
type = PointValue
variable = disp_x
point = '1.08 0 0'
outputs = csv_s
[../]
[./s09]
type = PointValue
variable = disp_x
point = '1.09 0 0'
outputs = csv_s
[../]
[./s10]
type = PointValue
variable = disp_x
point = '1.10 0 0'
outputs = csv_s
[../]
[./s11]
type = PointValue
variable = disp_x
point = '1.11 0 0'
outputs = csv_s
[../]
[./s12]
type = PointValue
variable = disp_x
point = '1.12 0 0'
outputs = csv_s
[../]
[./s13]
type = PointValue
variable = disp_x
point = '1.13 0 0'
outputs = csv_s
[../]
[./s14]
type = PointValue
variable = disp_x
point = '1.14 0 0'
outputs = csv_s
[../]
[./s15]
type = PointValue
variable = disp_x
point = '1.15 0 0'
outputs = csv_s
[../]
[./s16]
type = PointValue
variable = disp_x
point = '1.16 0 0'
outputs = csv_s
[../]
[./s17]
type = PointValue
variable = disp_x
point = '1.17 0 0'
outputs = csv_s
[../]
[./s18]
type = PointValue
variable = disp_x
point = '1.18 0 0'
outputs = csv_s
[../]
[./s19]
type = PointValue
variable = disp_x
point = '1.19 0 0'
outputs = csv_s
[../]
[./s20]
type = PointValue
variable = disp_x
point = '1.20 0 0'
outputs = csv_s
[../]
[./s21]
type = PointValue
variable = disp_x
point = '1.21 0 0'
outputs = csv_s
[../]
[./s22]
type = PointValue
variable = disp_x
point = '1.22 0 0'
outputs = csv_s
[../]
[./s23]
type = PointValue
variable = disp_x
point = '1.23 0 0'
outputs = csv_s
[../]
[./s24]
type = PointValue
variable = disp_x
point = '1.24 0 0'
outputs = csv_s
[../]
[./s25]
type = PointValue
variable = disp_x
point = '1.25 0 0'
outputs = csv_s
[../]
[./t00]
type = PointValue
variable = tot_yy
point = '1.00 0 0'
outputs = csv_t
[../]
[./t01]
type = PointValue
variable = tot_yy
point = '1.01 0 0'
outputs = csv_t
[../]
[./t02]
type = PointValue
variable = tot_yy
point = '1.02 0 0'
outputs = csv_t
[../]
[./t03]
type = PointValue
variable = tot_yy
point = '1.03 0 0'
outputs = csv_t
[../]
[./t04]
type = PointValue
variable = tot_yy
point = '1.04 0 0'
outputs = csv_t
[../]
[./t05]
type = PointValue
variable = tot_yy
point = '1.05 0 0'
outputs = csv_t
[../]
[./t06]
type = PointValue
variable = tot_yy
point = '1.06 0 0'
outputs = csv_t
[../]
[./t07]
type = PointValue
variable = tot_yy
point = '1.07 0 0'
outputs = csv_t
[../]
[./t08]
type = PointValue
variable = tot_yy
point = '1.08 0 0'
outputs = csv_t
[../]
[./t09]
type = PointValue
variable = tot_yy
point = '1.09 0 0'
outputs = csv_t
[../]
[./t10]
type = PointValue
variable = tot_yy
point = '1.10 0 0'
outputs = csv_t
[../]
[./t11]
type = PointValue
variable = tot_yy
point = '1.11 0 0'
outputs = csv_t
[../]
[./t12]
type = PointValue
variable = tot_yy
point = '1.12 0 0'
outputs = csv_t
[../]
[./t13]
type = PointValue
variable = tot_yy
point = '1.13 0 0'
outputs = csv_t
[../]
[./t14]
type = PointValue
variable = tot_yy
point = '1.14 0 0'
outputs = csv_t
[../]
[./t15]
type = PointValue
variable = tot_yy
point = '1.15 0 0'
outputs = csv_t
[../]
[./t16]
type = PointValue
variable = tot_yy
point = '1.16 0 0'
outputs = csv_t
[../]
[./t17]
type = PointValue
variable = tot_yy
point = '1.17 0 0'
outputs = csv_t
[../]
[./t18]
type = PointValue
variable = tot_yy
point = '1.18 0 0'
outputs = csv_t
[../]
[./t19]
type = PointValue
variable = tot_yy
point = '1.19 0 0'
outputs = csv_t
[../]
[./t20]
type = PointValue
variable = tot_yy
point = '1.20 0 0'
outputs = csv_t
[../]
[./t21]
type = PointValue
variable = tot_yy
point = '1.21 0 0'
outputs = csv_t
[../]
[./t22]
type = PointValue
variable = tot_yy
point = '1.22 0 0'
outputs = csv_t
[../]
[./t23]
type = PointValue
variable = tot_yy
point = '1.23 0 0'
outputs = csv_t
[../]
[./t24]
type = PointValue
variable = tot_yy
point = '1.24 0 0'
outputs = csv_t
[../]
[./t25]
type = PointValue
variable = tot_yy
point = '1.25 0 0'
outputs = csv_t
[../]
[./dt]
type = FunctionValuePostprocessor
outputs = console
function = 2*t
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options = '-snes_monitor -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -ksp_max_it -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'gmres asm 1E0 1E-10 200 500 lu NONZERO'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 0.3
dt = 0.3
#[./TimeStepper]
# type = PostprocessorDT
# postprocessor = dt
# dt = 0.003
#[../]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = borehole_lowres
exodus = true
sync_times = '0.003 0.3'
[./csv_p]
file_base = borehole_lowres_p
type = CSV
[../]
[./csv_s]
file_base = borehole_lowres_s
type = CSV
[../]
[./csv_t]
file_base = borehole_lowres_t
type = CSV
[../]
[]
(modules/porous_flow/test/tests/poro_elasticity/undrained_oedometer.i)
# An undrained oedometer test on a saturated poroelastic sample.
#
# The sample is a single unit element, with roller BCs on the sides
# and bottom. A constant displacement is applied to the top: disp_z = -0.01*t.
# There is no fluid flow.
#
# Under these conditions
# porepressure = -(Fluid bulk modulus)*log(1 - 0.01t)
# stress_xx = (bulk - 2*shear/3)*disp_z/L (remember this is effective stress)
# stress_zz = (bulk + 4*shear/3)*disp_z/L (remember this is effective stress)
# where L is the height of the sample (L=1 in this test)
#
# Parameters:
# Bulk modulus = 2
# Shear modulus = 1.5
# fluid bulk modulus = 1
#
# Desired output:
# zdisp = -0.01*t
# p0 = 1*log(1-0.01t)
# stress_xx = stress_yy = -0.01*t
# stress_zz = -0.04*t
#
# Regarding the "log" - it just comes from conserving fluid mass
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[]
[basefixed]
type = DirichletBC
variable = disp_z
value = 0
boundary = back
[]
[top_velocity]
type = FunctionDirichletBC
variable = disp_z
function = -0.01*t
boundary = front
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_vol_exp]
type = PorousFlowMassVolumetricExpansion
variable = porepressure
fluid_component = 0
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = porepressure
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1
density0 = 1
thermal_expansion = 0
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.1
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.8
alpha = 1
[]
[]
[Postprocessors]
[fluid_mass]
type = PorousFlowFluidMass
fluid_component = 0
execute_on = 'initial timestep_end'
[]
[p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
variable = disp_z
[]
[stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[]
[stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[]
[stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-8 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = undrained_oedometer
[csv]
type = CSV
[]
[]
(modules/combined/test/tests/phase_field_fracture/crack2d_computeCrackedStress_finitestrain_elastic.i)
#This input uses PhaseField-Nonconserved Action to add phase field fracture bulk rate kernels
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 40
ny = 20
ymax = 0.5
[]
[./noncrack]
type = BoundingBoxNodeSetGenerator
new_boundary = noncrack
bottom_left = '0.5 0 0'
top_right = '1 0 0'
input = gen
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Physics]
[./SolidMechanics]
[./QuasiStatic]
[./All]
add_variables = true
strain = FINITE
planar_formulation = PLANE_STRAIN
additional_generate_output = 'stress_yy'
strain_base_name = uncracked
[../]
[../]
[../]
[]
[Modules]
[./PhaseField]
[./Nonconserved]
[./c]
free_energy = E_el
kappa = kappa_op
mobility = L
[../]
[../]
[../]
[]
[Kernels]
[./solid_x]
type = PhaseFieldFractureMechanicsOffDiag
variable = disp_x
component = 0
c = c
[../]
[./solid_y]
type = PhaseFieldFractureMechanicsOffDiag
variable = disp_y
component = 1
c = c
[../]
[./off_disp]
type = AllenCahnElasticEnergyOffDiag
variable = c
displacements = 'disp_x disp_y'
mob_name = L
[../]
[]
[AuxKernels]
[./strain_yy]
type = RankTwoAux
variable = strain_yy
rank_two_tensor = uncracked_mechanical_strain
index_i = 1
index_j = 1
execute_on = TIMESTEP_END
[../]
[]
[BCs]
[./ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = 't'
[../]
[./yfix]
type = DirichletBC
variable = disp_y
boundary = noncrack
value = 0
[../]
[./xfix]
type = DirichletBC
variable = disp_x
boundary = right
value = 0
[../]
[]
[Materials]
[./pfbulkmat]
type = GenericConstantMaterial
prop_names = 'gc_prop l visco'
prop_values = '1e-3 0.05 1e-4'
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
base_name = uncracked
[../]
[./elastic]
type = ComputeFiniteStrainElasticStress
base_name = uncracked
[../]
[./cracked_stress]
type = ComputeCrackedStress
c = c
kdamage = 1e-5
F_name = E_el
use_current_history_variable = true
uncracked_base_name = uncracked
finite_strain_model = true
[../]
[]
[Postprocessors]
[./av_stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./av_strain_yy]
type = SideAverageValue
variable = disp_y
boundary = top
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_factor_mat_solving_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-8
l_tol = 1e-4
l_max_its = 100
nl_max_its = 10
dt = 3e-5
num_steps = 2
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/ad_cavity_pressure/3d.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 (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V0 + gamma * t
# with
# alpha = n0
# beta = T0 / 2
# gamma = - (0.003322259...) * V0
# 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
#
# The parameters combined at t = 1 gives p = 301.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
file = 3d.e
[]
[Functions]
[displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[]
[displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[]
[temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[]
[material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.35'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temp]
initial_condition = 240.54443866068704
[]
[material_input]
[]
[]
[AuxVariables]
[pressure_residual_x]
[]
[pressure_residual_y]
[]
[pressure_residual_z]
[]
[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
[]
[]
[Kernels]
[TensorMechanics]
use_displaced_mesh = true
use_automatic_differentiation = true
[]
[heat]
type = ADDiffusion
variable = temp
use_displaced_mesh = true
[]
[material_input_dummy]
type = ADDiffusion
variable = material_input
use_displaced_mesh = true
[]
[]
[AuxKernels]
[stress_xx]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_xx
[]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_yy
[]
[stress_zz]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
[]
[stress_xy]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[]
[stress_yz]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 2
variable = stress_yz
[]
[stress_zx]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 0
variable = stress_zx
[]
[]
[BCs]
[no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[]
[no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[]
[no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[]
[prescribed_left]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[]
[prescribed_right]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[]
[no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[]
[no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[]
[no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[]
[temperatureInterior]
type = ADFunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[]
[MaterialInput]
type = ADFunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[]
[CavityPressure]
[1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
volume = internalVolume
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[elast_tensor1]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e1
poissons_ratio = 0
block = 1
[]
[strain1]
type = ADComputeFiniteStrain
block = 1
[]
[stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[]
[elast_tensor2]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
block = 2
[]
[strain2]
type = ADComputeFiniteStrain
block = 2
[]
[stress2]
type = ADComputeFiniteStrainElasticStress
block = 2
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
use_pre_SMO_residual = true
[]
[Postprocessors]
[internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[]
[aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[]
[materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/shell/static/beam_bending_moment_AD.i)
# Test that models bending of a cantilever beam using shell elements
# A cantilever beam of length 10 m (in Y direction) and cross-section
# 1 m x 0.1 m is modeled using 4 shell elements placed along the length
# (Figure 6a from Dvorkin and Bathe, 1984). All displacements and
# X rotations are fixed on the bottom boundary. E = 2100000 and v = 0.0.
# A load of 0.5 N (in the Z direction) is applied at each node on the top
# boundary resulting in a total load of 1 N.
# The analytical solution for displacement at tip using small strain/rotations # is PL^3/3EI + PL/AG = 1.90485714 m
# The FEM solution using 4 shell elements is 1.875095 m with a relative error
# of 1.5%.
# Similarly, the analytical solution for slope at tip is PL^2/2EI = 0.285714286
# The FEM solution is 0.2857143 and the relative error is 5e-6%.
# The stress_yy for the four elements at z = -0.57735 * (t/2) (first qp below mid-surface of shell) are:
# 3031.089 Pa, 2165.064 Pa, 1299.038 Pa and 433.0127 Pa.
# Note the above values are the average stresses in each element.
# Analytically, stress_yy decreases linearly from y = 0 to y = 10 m.
# The maximum value of stress_yy at y = 0 is Mz/I = PL * 0.57735*(t/2)/I = 3464.1 Pa
# Therefore, the analytical value of stress at z = -0.57735 * (t/2) at the mid-point
# of the four elements are:
# 3031.0875 Pa, 2165.0625 Pa, 1299.0375 Pa ,433.0125 Pa
# The relative error in stress_yy is in the order of 5e-5%.
# The stress_yz at z = -0.57735 * (t/2) at all four elements from the simulation is 10 Pa.
# The analytical solution for the shear stress is: V/2/I *((t^2)/4 - z^2), where the shear force (V)
# is 1 N at any y along the length of the beam. Therefore, the analytical shear stress at
# z = -0.57735 * (t/2) is 10 Pa at any location along the length of the beam.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 4
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 10.0
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 'bottom'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = 'bottom'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = 'bottom'
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 'bottom'
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = ConstantRate
variable = disp_z
boundary = 'top'
rate = 0.5
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
nl_max_its = 2
nl_rel_tol = 1e-10
nl_abs_tol = 5e-4
dt = 1
dtmin = 1
end_time = 1
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 2100000
poissons_ratio = 0.0
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[]
[Postprocessors]
[./disp_z_tip]
type = PointValue
point = '1.0 10.0 0.0'
variable = disp_z
[../]
[./rot_x_tip]
type = PointValue
point = '0.0 10.0 0.0'
variable = rot_x
[../]
[./stress_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yy
[../]
[./stress_yy_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yy
[../]
[./stress_yy_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yy
[../]
[./stress_yy_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yy
[../]
[./stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[../]
[./stress_yz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yz
[../]
[./stress_yz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yz
[../]
[./stress_yz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yz
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/poro_mechanics/borehole_highres.i)
# Poroelastic response of a borehole.
#
# HIGHRES VERSION: this version gives good agreement with the analytical solution, but it takes a while so is a "heavy" test
#
# A fully-saturated medium contains a fluid with a homogeneous porepressure,
# but an anisitropic insitu stress. A infinitely-long borehole aligned with
# the $$z$$ axis is instanteously excavated. The borehole boundary is
# stress-free and allowed to freely drain. This problem is analysed using
# plane-strain conditions (no $$z$$ displacement).
#
# The solution in Laplace space is found in E Detournay and AHD Cheng "Poroelastic response of a borehole in a non-hydrostatic stress field". International Journal of Rock Mechanics and Mining Sciences and Geomechanics Abstracts 25 (1988) 171-182. In the small-time limit, the Laplace transforms may be performed. There is one typo in the paper. Equation (A4)'s final term should be -(a/r)\sqrt(4ct/(a^2\pi)), and not +(a/r)\sqrt(4ct/(a^2\pi)).
#
# Because realistic parameters are chosen (below),
# the residual for porepressure is much smaller than
# the residuals for the displacements. Therefore the
# scaling parameter is chosen. Also note that the
# insitu stresses are effective stresses, not total
# stresses, but the solution in the above paper is
# expressed in terms of total stresses.
#
# Here are the problem's parameters, and their values:
# Borehole radius. a = 1
# Rock's Lame lambda. la = 0.5E9
# Rock's Lame mu, which is also the Rock's shear modulus. mu = G = 1.5E9
# Rock bulk modulus. K = la + 2*mu/3 = 1.5E9
# Drained Poisson ratio. nu = (3K - 2G)/(6K + 2G) = 0.125
# Rock bulk compliance. 1/K = 0.66666666E-9
# Fluid bulk modulus. Kf = 0.7171315E9
# Fluid bulk compliance. 1/Kf = 1.39444444E-9
# Rock initial porosity. phi0 = 0.3
# Biot coefficient. alpha = 0.65
# Biot modulus. M = 1/(phi0/Kf + (alpha - phi0)(1 - alpha)/K) = 2E9
# Undrained bulk modulus. Ku = K + alpha^2*M = 2.345E9
# Undrained Poisson ratio. nuu = (3Ku - 2G)/(6Ku + 2G) = 0.2364
# Skempton coefficient. B = alpha*M/Ku = 0.554
# Fluid mobility (rock permeability/fluid viscosity). k = 1E-12
[Mesh]
type = FileMesh
file = borehole_highres_input.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
block = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./porepressure]
scaling = 1E9 # Notice the scaling, to make porepressure's kernels roughly of same magnitude as disp's kernels
[../]
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[ICs]
[./initial_p]
type = ConstantIC
variable = porepressure
value = 1E6
[../]
[]
[BCs]
[./fixed_outer_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = outer
[../]
[./fixed_outer_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = outer
[../]
[./plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'zmin zmax'
[../]
[./borehole_wall]
type = DirichletBC
variable = porepressure
value = 0
boundary = bh_wall
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./tot_yy]
type = ParsedAux
coupled_variables = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_yy
expression = 'stress_yy-0.65*porepressure'
[../]
[]
[Kernels]
[./grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[../]
[./grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[../]
[./grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[../]
[./poro_x]
type = PoroMechanicsCoupling
variable = disp_x
component = 0
[../]
[./poro_y]
type = PoroMechanicsCoupling
variable = disp_y
component = 1
[../]
[./poro_z]
type = PoroMechanicsCoupling
variable = disp_z
component = 2
[../]
[./poro_timederiv]
type = PoroFullSatTimeDerivative
variable = porepressure
[../]
[./darcy_flow]
type = CoefDiffusion
variable = porepressure
coef = 1E-12
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '0.5E9 1.5E9'
# bulk modulus is lambda + 2*mu/3 = 0.5 + 2*1.5/3 = 1.5E9
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '-1.35E6 0 0 0 -3.35E6 0 0 0 0' # remember this is the effective stress
eigenstrain_name = ini_stress
[../]
[./no_plasticity]
type = ComputeFiniteStrainElasticStress
[../]
[./poro_material]
type = PoroFullSatMaterial
porosity0 = 0.3
biot_coefficient = 0.65
solid_bulk_compliance = 0.6666666666667E-9
fluid_bulk_compliance = 1.3944444444444E-9
constant_porosity = false
[../]
[]
[Postprocessors]
[./p00]
type = PointValue
variable = porepressure
point = '1.00 0 0'
outputs = csv_p
[../]
[./p01]
type = PointValue
variable = porepressure
point = '1.01 0 0'
outputs = csv_p
[../]
[./p02]
type = PointValue
variable = porepressure
point = '1.02 0 0'
outputs = csv_p
[../]
[./p03]
type = PointValue
variable = porepressure
point = '1.03 0 0'
outputs = csv_p
[../]
[./p04]
type = PointValue
variable = porepressure
point = '1.04 0 0'
outputs = csv_p
[../]
[./p05]
type = PointValue
variable = porepressure
point = '1.05 0 0'
outputs = csv_p
[../]
[./p06]
type = PointValue
variable = porepressure
point = '1.06 0 0'
outputs = csv_p
[../]
[./p07]
type = PointValue
variable = porepressure
point = '1.07 0 0'
outputs = csv_p
[../]
[./p08]
type = PointValue
variable = porepressure
point = '1.08 0 0'
outputs = csv_p
[../]
[./p09]
type = PointValue
variable = porepressure
point = '1.09 0 0'
outputs = csv_p
[../]
[./p10]
type = PointValue
variable = porepressure
point = '1.10 0 0'
outputs = csv_p
[../]
[./p11]
type = PointValue
variable = porepressure
point = '1.11 0 0'
outputs = csv_p
[../]
[./p12]
type = PointValue
variable = porepressure
point = '1.12 0 0'
outputs = csv_p
[../]
[./p13]
type = PointValue
variable = porepressure
point = '1.13 0 0'
outputs = csv_p
[../]
[./p14]
type = PointValue
variable = porepressure
point = '1.14 0 0'
outputs = csv_p
[../]
[./p15]
type = PointValue
variable = porepressure
point = '1.15 0 0'
outputs = csv_p
[../]
[./p16]
type = PointValue
variable = porepressure
point = '1.16 0 0'
outputs = csv_p
[../]
[./p17]
type = PointValue
variable = porepressure
point = '1.17 0 0'
outputs = csv_p
[../]
[./p18]
type = PointValue
variable = porepressure
point = '1.18 0 0'
outputs = csv_p
[../]
[./p19]
type = PointValue
variable = porepressure
point = '1.19 0 0'
outputs = csv_p
[../]
[./p20]
type = PointValue
variable = porepressure
point = '1.20 0 0'
outputs = csv_p
[../]
[./p21]
type = PointValue
variable = porepressure
point = '1.21 0 0'
outputs = csv_p
[../]
[./p22]
type = PointValue
variable = porepressure
point = '1.22 0 0'
outputs = csv_p
[../]
[./p23]
type = PointValue
variable = porepressure
point = '1.23 0 0'
outputs = csv_p
[../]
[./p24]
type = PointValue
variable = porepressure
point = '1.24 0 0'
outputs = csv_p
[../]
[./p25]
type = PointValue
variable = porepressure
point = '1.25 0 0'
outputs = csv_p
[../]
[./s00]
type = PointValue
variable = disp_x
point = '1.00 0 0'
outputs = csv_s
[../]
[./s01]
type = PointValue
variable = disp_x
point = '1.01 0 0'
outputs = csv_s
[../]
[./s02]
type = PointValue
variable = disp_x
point = '1.02 0 0'
outputs = csv_s
[../]
[./s03]
type = PointValue
variable = disp_x
point = '1.03 0 0'
outputs = csv_s
[../]
[./s04]
type = PointValue
variable = disp_x
point = '1.04 0 0'
outputs = csv_s
[../]
[./s05]
type = PointValue
variable = disp_x
point = '1.05 0 0'
outputs = csv_s
[../]
[./s06]
type = PointValue
variable = disp_x
point = '1.06 0 0'
outputs = csv_s
[../]
[./s07]
type = PointValue
variable = disp_x
point = '1.07 0 0'
outputs = csv_s
[../]
[./s08]
type = PointValue
variable = disp_x
point = '1.08 0 0'
outputs = csv_s
[../]
[./s09]
type = PointValue
variable = disp_x
point = '1.09 0 0'
outputs = csv_s
[../]
[./s10]
type = PointValue
variable = disp_x
point = '1.10 0 0'
outputs = csv_s
[../]
[./s11]
type = PointValue
variable = disp_x
point = '1.11 0 0'
outputs = csv_s
[../]
[./s12]
type = PointValue
variable = disp_x
point = '1.12 0 0'
outputs = csv_s
[../]
[./s13]
type = PointValue
variable = disp_x
point = '1.13 0 0'
outputs = csv_s
[../]
[./s14]
type = PointValue
variable = disp_x
point = '1.14 0 0'
outputs = csv_s
[../]
[./s15]
type = PointValue
variable = disp_x
point = '1.15 0 0'
outputs = csv_s
[../]
[./s16]
type = PointValue
variable = disp_x
point = '1.16 0 0'
outputs = csv_s
[../]
[./s17]
type = PointValue
variable = disp_x
point = '1.17 0 0'
outputs = csv_s
[../]
[./s18]
type = PointValue
variable = disp_x
point = '1.18 0 0'
outputs = csv_s
[../]
[./s19]
type = PointValue
variable = disp_x
point = '1.19 0 0'
outputs = csv_s
[../]
[./s20]
type = PointValue
variable = disp_x
point = '1.20 0 0'
outputs = csv_s
[../]
[./s21]
type = PointValue
variable = disp_x
point = '1.21 0 0'
outputs = csv_s
[../]
[./s22]
type = PointValue
variable = disp_x
point = '1.22 0 0'
outputs = csv_s
[../]
[./s23]
type = PointValue
variable = disp_x
point = '1.23 0 0'
outputs = csv_s
[../]
[./s24]
type = PointValue
variable = disp_x
point = '1.24 0 0'
outputs = csv_s
[../]
[./s25]
type = PointValue
variable = disp_x
point = '1.25 0 0'
outputs = csv_s
[../]
[./t00]
type = PointValue
variable = tot_yy
point = '1.00 0 0'
outputs = csv_t
[../]
[./t01]
type = PointValue
variable = tot_yy
point = '1.01 0 0'
outputs = csv_t
[../]
[./t02]
type = PointValue
variable = tot_yy
point = '1.02 0 0'
outputs = csv_t
[../]
[./t03]
type = PointValue
variable = tot_yy
point = '1.03 0 0'
outputs = csv_t
[../]
[./t04]
type = PointValue
variable = tot_yy
point = '1.04 0 0'
outputs = csv_t
[../]
[./t05]
type = PointValue
variable = tot_yy
point = '1.05 0 0'
outputs = csv_t
[../]
[./t06]
type = PointValue
variable = tot_yy
point = '1.06 0 0'
outputs = csv_t
[../]
[./t07]
type = PointValue
variable = tot_yy
point = '1.07 0 0'
outputs = csv_t
[../]
[./t08]
type = PointValue
variable = tot_yy
point = '1.08 0 0'
outputs = csv_t
[../]
[./t09]
type = PointValue
variable = tot_yy
point = '1.09 0 0'
outputs = csv_t
[../]
[./t10]
type = PointValue
variable = tot_yy
point = '1.10 0 0'
outputs = csv_t
[../]
[./t11]
type = PointValue
variable = tot_yy
point = '1.11 0 0'
outputs = csv_t
[../]
[./t12]
type = PointValue
variable = tot_yy
point = '1.12 0 0'
outputs = csv_t
[../]
[./t13]
type = PointValue
variable = tot_yy
point = '1.13 0 0'
outputs = csv_t
[../]
[./t14]
type = PointValue
variable = tot_yy
point = '1.14 0 0'
outputs = csv_t
[../]
[./t15]
type = PointValue
variable = tot_yy
point = '1.15 0 0'
outputs = csv_t
[../]
[./t16]
type = PointValue
variable = tot_yy
point = '1.16 0 0'
outputs = csv_t
[../]
[./t17]
type = PointValue
variable = tot_yy
point = '1.17 0 0'
outputs = csv_t
[../]
[./t18]
type = PointValue
variable = tot_yy
point = '1.18 0 0'
outputs = csv_t
[../]
[./t19]
type = PointValue
variable = tot_yy
point = '1.19 0 0'
outputs = csv_t
[../]
[./t20]
type = PointValue
variable = tot_yy
point = '1.20 0 0'
outputs = csv_t
[../]
[./t21]
type = PointValue
variable = tot_yy
point = '1.21 0 0'
outputs = csv_t
[../]
[./t22]
type = PointValue
variable = tot_yy
point = '1.22 0 0'
outputs = csv_t
[../]
[./t23]
type = PointValue
variable = tot_yy
point = '1.23 0 0'
outputs = csv_t
[../]
[./t24]
type = PointValue
variable = tot_yy
point = '1.24 0 0'
outputs = csv_t
[../]
[./t25]
type = PointValue
variable = tot_yy
point = '1.25 0 0'
outputs = csv_t
[../]
[./dt]
type = FunctionValuePostprocessor
outputs = console
function = 2*t
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options = '-snes_monitor -snes_linesearch_monitor'
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -ksp_max_it -sub_pc_type -sub_pc_factor_shift_type'
petsc_options_value = 'gmres asm 1E0 1E-10 200 500 lu NONZERO'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 0.3
dt = 0.1
#[./TimeStepper]
# type = PostprocessorDT
# postprocessor = dt
# dt = 0.003
#[../]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = borehole_highres
exodus = true
sync_times = '0.003 0.3'
[./csv_p]
file_base = borehole_highres_p
type = CSV
[../]
[./csv_s]
file_base = borehole_highres_s
type = CSV
[../]
[./csv_t]
file_base = borehole_highres_t
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_error.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_4]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_5]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_6]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_7]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_8]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_9]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_10]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_11]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_6]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_7]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_8]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_9]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_11]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = twin_total_volume_fraction_twins
execute_on = timestep_end
[]
[slip_increment_0]
type = MaterialStdVectorAux
variable = slip_increment_0
property = slip_increment
index = 0
execute_on = timestep_end
[]
[slip_increment_1]
type = MaterialStdVectorAux
variable = slip_increment_1
property = slip_increment
index = 1
execute_on = timestep_end
[]
[slip_increment_2]
type = MaterialStdVectorAux
variable = slip_increment_2
property = slip_increment
index = 2
execute_on = timestep_end
[]
[slip_increment_3]
type = MaterialStdVectorAux
variable = slip_increment_3
property = slip_increment
index = 3
execute_on = timestep_end
[]
[slip_increment_4]
type = MaterialStdVectorAux
variable = slip_increment_4
property = slip_increment
index = 4
execute_on = timestep_end
[]
[slip_increment_5]
type = MaterialStdVectorAux
variable = slip_increment_5
property = slip_increment
index = 5
execute_on = timestep_end
[]
[slip_increment_6]
type = MaterialStdVectorAux
variable = slip_increment_6
property = slip_increment
index = 6
execute_on = timestep_end
[]
[slip_increment_7]
type = MaterialStdVectorAux
variable = slip_increment_7
property = slip_increment
index = 7
execute_on = timestep_end
[]
[slip_increment_8]
type = MaterialStdVectorAux
variable = slip_increment_8
property = slip_increment
index = 8
execute_on = timestep_end
[]
[slip_increment_9]
type = MaterialStdVectorAux
variable = slip_increment_9
property = slip_increment
index = 9
execute_on = timestep_end
[]
[slip_increment_10]
type = MaterialStdVectorAux
variable = slip_increment_10
property = slip_increment
index = 10
execute_on = timestep_end
[]
[slip_increment_11]
type = MaterialStdVectorAux
variable = slip_increment_11
property = slip_increment
index = 11
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_volume_fraction_6]
type = MaterialStdVectorAux
variable = twin_volume_fraction_6
property = twin_twin_system_volume_fraction
index = 6
execute_on = timestep_end
[]
[twin_volume_fraction_7]
type = MaterialStdVectorAux
variable = twin_volume_fraction_7
property = twin_twin_system_volume_fraction
index = 7
execute_on = timestep_end
[]
[twin_volume_fraction_8]
type = MaterialStdVectorAux
variable = twin_volume_fraction_8
property = twin_twin_system_volume_fraction
index = 8
execute_on = timestep_end
[]
[twin_volume_fraction_9]
type = MaterialStdVectorAux
variable = twin_volume_fraction_9
property = twin_twin_system_volume_fraction
index = 9
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_11]
type = MaterialStdVectorAux
variable = twin_volume_fraction_11
property = twin_twin_system_volume_fraction
index = 11
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.02*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5' # roughly copper
fill_method = symmetric9
euler_angle_1 = 54.74
euler_angle_2 = 45.0
euler_angle_3 = 270.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_xtalpl slip_xtalpl'
tan_mod_type = exact
[]
[twin_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
base_name = twin
number_slip_systems = 12
slip_sys_file_name = 'fcc_input_twinning_systems.txt'
initial_twin_lattice_friction = 60.0
[]
[slip_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
total_twin_volume_fraction = 'total_volume_fraction_twins'
[]
[]
[Postprocessors]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[slip_increment_0]
type = ElementAverageValue
variable = slip_increment_0
[]
[slip_increment_1]
type = ElementAverageValue
variable = slip_increment_1
[]
[slip_increment_2]
type = ElementAverageValue
variable = slip_increment_2
[]
[slip_increment_3]
type = ElementAverageValue
variable = slip_increment_3
[]
[slip_increment_4]
type = ElementAverageValue
variable = slip_increment_4
[]
[slip_increment_5]
type = ElementAverageValue
variable = slip_increment_5
[]
[slip_increment_6]
type = ElementAverageValue
variable = slip_increment_6
[]
[slip_increment_7]
type = ElementAverageValue
variable = slip_increment_7
[]
[slip_increment_8]
type = ElementAverageValue
variable = slip_increment_8
[]
[slip_increment_9]
type = ElementAverageValue
variable = slip_increment_9
[]
[slip_increment_10]
type = ElementAverageValue
variable = slip_increment_10
[]
[slip_increment_11]
type = ElementAverageValue
variable = slip_increment_11
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_volume_fraction_6]
type = ElementAverageValue
variable = twin_volume_fraction_6
[]
[twin_volume_fraction_7]
type = ElementAverageValue
variable = twin_volume_fraction_7
[]
[twin_volume_fraction_8]
type = ElementAverageValue
variable = twin_volume_fraction_8
[]
[twin_volume_fraction_9]
type = ElementAverageValue
variable = twin_volume_fraction_9
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[twin_volume_fraction_11]
type = ElementAverageValue
variable = twin_volume_fraction_11
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.005
dtmin = 0.01
num_steps = 6
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/multi/two_surface05.i)
# Plasticit models:
# SimpleTester with a = 0 and b = 1 and strength = 1
# SimpleTester with a = 1 and b = 1 and strength = 2
#
# Lame lambda = 0 (Poisson=0). Lame mu = 0.5E6
#
# A single element is stretched by 3E-6m in y directions and 1.0E-6 in z direction.
# trial stress_zz = 1 and stress_yy = 3
#
# Then SimpleTester2 should activate and the algorithm will return to
# stress_zz = 0, stress_yy = 2
# internal0 should be zero, and internal1 should be 1
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0E-6*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3E-6*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '1E-6*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = f0
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = f1
[../]
[./int0]
type = PointValue
point = '0 0 0'
variable = int0
[../]
[./int1]
type = PointValue
point = '0 0 0'
variable = int1
[../]
[]
[UserObjects]
[./simple1]
type = SolidMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[./simple2]
type = SolidMechanicsPlasticSimpleTester
a = 1
b = 1
strength = 2
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 0.5E6'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = 'simple1 simple2'
max_NR_iterations = 2
min_stepsize = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1'
debug_jac_at_intnl = '1 1'
debug_stress_change = 1E-5
debug_pm_change = '1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = two_surface05
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[gss]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[gss]
type = ElementAverageValue
variable = gss
[]
[slip_increment]
type = ElementAverageValue
variable = slip_increment
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 10.0
num_steps = 10
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/contact/test/tests/verification/patch_tests/ring_3/ring3_mu_0_2_pen.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = ring3_mesh.e
[]
[Problem]
type = FEProblem
coord_type = RZ
[]
[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'
[../]
[]
[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
[../]
[] # AuxKernels
[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
[../]
[./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 = ComputeAxisymmetricRZIncrementalStrain
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 = ComputeAxisymmetricRZIncrementalStrain
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 = 100
nl_max_its = 1000
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 = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = ring3_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 = ring3_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
tangential_tolerance = 1e-3
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/eigenstrain/reducedOrderRZLinear.i)
#
# This test checks whether the ComputeReducedOrderEigenstrain is functioning properly.
#
# If instead of 'reduced_eigenstrain', 'thermal_eigenstrain' is given to
# eigenstrain_names in the Physics/SolidMechanics/QuasiStatic/all block, the output will be
# quite different.
#
# Open the reducedOrderRZLinear_out_hydro_0001.csv file and plot the hydro variables as
# a function of x. For the reduced order case, the values are smooth across each of the
# two elements with a jump upward from the left element to the right element. However,
# when not using 'reduced_order_eigenstrain', a jump downward appears from the left
# element to the right element.
#
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
coord_type = RZ
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 1
xmax = 3
xmin = 1
ymax = 1
ymin = 0
#second_order = true
[]
[Functions]
[./tempLinear]
type = ParsedFunction
expression = '715-5*x'
[../]
[./tempQuadratic]
type = ParsedFunction
expression = '2.5*x*x-15*x+722.5'
[../]
[./tempCubic]
type = ParsedFunction
expression = '-1.25*x*x*x+11.25*x*x-33.75*x+733.75'
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 700
[../]
[]
[AuxVariables]
[./hydro_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./hydro_first]
order = FIRST
family = MONOMIAL
[../]
[./hydro_second]
order = SECOND
family = MONOMIAL
[../]
[./sxx_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./sxx_first]
order = FIRST
family = MONOMIAL
[../]
[./sxx_second]
order = SECOND
family = MONOMIAL
[../]
[./szz_constant]
order = CONSTANT
family = MONOMIAL
[../]
[./szz_first]
order = FIRST
family = MONOMIAL
[../]
[./szz_second]
order = SECOND
family = MONOMIAL
[../]
[./temp2]
order = FIRST
family = LAGRANGE
initial_condition = 700
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
add_variables = true
strain = SMALL
incremental = true
temperature = temp2
eigenstrain_names = 'reduced_eigenstrain' #'thermal_eigenstrain'
[../]
[../]
[../]
[]
[Kernels]
[./heat]
type = Diffusion
variable = temp
[../]
[]
[AuxKernels]
[./hydro_constant_aux]
type = RankTwoScalarAux
variable = hydro_constant
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./hydro_first_aux]
type = RankTwoScalarAux
variable = hydro_first
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./hydro_second_aux]
type = RankTwoScalarAux
variable = hydro_second
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[./sxx_constant_aux]
type = RankTwoAux
variable = sxx_constant
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./sxx_first_aux]
type = RankTwoAux
variable = sxx_first
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./sxx_second_aux]
type = RankTwoAux
variable = sxx_second
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./szz_constant_aux]
type = RankTwoAux
variable = szz_constant
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./szz_first_aux]
type = RankTwoAux
variable = szz_first
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./szz_second_aux]
type = RankTwoAux
variable = szz_second
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./temp2]
type = FunctionAux
variable = temp2
function = tempLinear
execute_on = timestep_begin
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[../]
[./temp_right]
type = DirichletBC
variable = temp
boundary = right
value = 700
[../]
[./temp_left]
type = DirichletBC
variable = temp
boundary = left
value = 710
[../]
[]
[Materials]
[./fuel_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0
[../]
[./fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1
temperature = temp2
stress_free_temperature = 700.0
eigenstrain_name = 'thermal_eigenstrain'
[../]
[./reduced_order_eigenstrain]
type = ComputeReducedOrderEigenstrain
input_eigenstrain_names = 'thermal_eigenstrain'
eigenstrain_name = 'reduced_eigenstrain'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
num_steps = 1
nl_rel_tol = 1e-8 #1e-12
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[]
[VectorPostprocessors]
[./hydro]
type = LineValueSampler
warn_discontinuous_face_values = false
num_points = 100
start_point = '1 0.07e-3 0'
end_point = '3 0.07e-3 0'
sort_by = x
variable = 'hydro_constant hydro_first hydro_second temp2 disp_x disp_y'
[../]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/solid_mechanics/test/tests/drucker_prager/small_deform2_outer_tip.i)
# apply repeated stretches in x, y and z directions, so that mean_stress = 0
# This maps out the yield surface in the octahedral plane for zero mean stress
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1.5E-6*x+2E-6*x*sin(t)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '2E-6*y*sin(2*t)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-2E-6*z*(sin(t)+sin(2*t))'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f0]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[./f1]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[../]
[]
[UserObjects]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_phi]
type = SolidMechanicsHardeningConstant
value = 20
convert_to_radians = true
[../]
[./mc_psi]
type = SolidMechanicsHardeningConstant
value = 0
[../]
[./mc]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
smoother = 4
mc_interpolation_scheme = outer_tip
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-12
plastic_models = mc
debug_fspb = crash
[../]
[]
[Executioner]
end_time = 100
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2_outer_tip
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/combined/examples/phase_field-mechanics/poly_grain_growth_2D_eldrforce.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 20
ny = 20
nz = 0
xmax = 1000
ymax = 1000
zmax = 0
elem_type = QUAD4
uniform_refine = 2
[]
[GlobalParams]
op_num = 8
var_name_base = gr
grain_num = 36
[]
[Variables]
[./PolycrystalVariables]
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[UserObjects]
[./euler_angle_file]
type = EulerAngleFileReader
file_name = grn_36_rand_2D.tex
[../]
[./voronoi]
type = PolycrystalVoronoi
coloring_algorithm = bt
[../]
[./grain_tracker]
type = GrainTrackerElasticity
threshold = 0.2
compute_var_to_feature_map = true
execute_on = 'initial timestep_begin'
flood_entity_type = ELEMENTAL
C_ijkl = '1.27e5 0.708e5 0.708e5 1.27e5 0.708e5 1.27e5 0.7355e5 0.7355e5 0.7355e5'
fill_method = symmetric9
euler_angle_provider = euler_angle_file
[../]
[]
[ICs]
[./PolycrystalICs]
[./PolycrystalColoringIC]
polycrystal_ic_uo = voronoi
[../]
[../]
[]
[AuxVariables]
[./bnds]
order = FIRST
family = LAGRANGE
[../]
[./elastic_strain11]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain22]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain12]
order = CONSTANT
family = MONOMIAL
[../]
[./unique_grains]
order = CONSTANT
family = MONOMIAL
[../]
[./var_indices]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises_stress]
order = CONSTANT
family = MONOMIAL
[../]
[./C1111]
order = CONSTANT
family = MONOMIAL
[../]
[./euler_angle]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./PolycrystalKernel]
[../]
[./PolycrystalElasticDrivingForce]
[../]
[./TensorMechanics]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./BndsCalc]
type = BndsCalcAux
variable = bnds
execute_on = timestep_end
[../]
[./elastic_strain11]
type = RankTwoAux
variable = elastic_strain11
rank_two_tensor = elastic_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./elastic_strain22]
type = RankTwoAux
variable = elastic_strain22
rank_two_tensor = elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./elastic_strain12]
type = RankTwoAux
variable = elastic_strain12
rank_two_tensor = elastic_strain
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./unique_grains]
type = FeatureFloodCountAux
variable = unique_grains
execute_on = timestep_end
flood_counter = grain_tracker
field_display = UNIQUE_REGION
[../]
[./var_indices]
type = FeatureFloodCountAux
variable = var_indices
execute_on = timestep_end
flood_counter = grain_tracker
field_display = VARIABLE_COLORING
[../]
[./C1111]
type = RankFourAux
variable = C1111
rank_four_tensor = elasticity_tensor
index_l = 0
index_j = 0
index_k = 0
index_i = 0
execute_on = timestep_end
[../]
[./vonmises_stress]
type = RankTwoScalarAux
variable = vonmises_stress
rank_two_tensor = stress
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[./euler_angle]
type = OutputEulerAngles
variable = euler_angle
euler_angle_provider = euler_angle_file
grain_tracker = grain_tracker
output_euler_angle = 'phi1'
execute_on = 'initial timestep_end'
[../]
[]
[BCs]
[./Periodic]
[./All]
auto_direction = 'x'
variable = 'gr0 gr1 gr2 gr3 gr4 gr5 gr6 gr7'
[../]
[../]
[./top_displacement]
type = DirichletBC
variable = disp_y
boundary = top
value = -50.0
[../]
[./x_anchor]
type = DirichletBC
variable = disp_x
boundary = 'left right'
value = 0.0
[../]
[./y_anchor]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./Copper]
type = GBEvolution
block = 0
T = 500 # K
wGB = 15 # nm
GBmob0 = 2.5e-6 # m^4/(Js) from Schoenfelder 1997
Q = 0.23 # Migration energy in eV
GBenergy = 0.708 # GB energy in J/m^2
[../]
[./ElasticityTensor]
type = ComputePolycrystalElasticityTensor
grain_tracker = grain_tracker
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
[]
[Postprocessors]
[./ngrains]
type = FeatureFloodCount
variable = bnds
threshold = 0.7
[../]
[./dofs]
type = NumDOFs
[../]
[./dt]
type = TimestepSize
[../]
[./run_time]
type = PerfGraphData
section_name = "Root"
data_type = total
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart -pc_hypre_boomeramg_strong_threshold'
petsc_options_value = 'hypre boomeramg 31 0.7'
l_tol = 1.0e-4
l_max_its = 30
nl_max_its = 25
nl_rel_tol = 1.0e-7
start_time = 0.0
num_steps = 50
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1.5
growth_factor = 1.2
cutback_factor = 0.8
optimal_iterations = 8
[../]
[./Adaptivity]
initial_adaptivity = 2
refine_fraction = 0.8
coarsen_fraction = 0.05
max_h_level = 3
[../]
[]
[Outputs]
file_base = poly36_grtracker
exodus = true
[]
(modules/solid_mechanics/test/tests/isotropic_elasticity_tensor/bulk_modulus_shear_modulus_test.i)
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./stress_11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
add_variables = true
[../]
[]
[AuxKernels]
[./stress_11]
type = RankTwoAux
variable = stress_11
rank_two_tensor = stress
index_j = 1
index_i = 1
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.001
[../]
[]
[Materials]
[./stress]
type = ComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 416666
shear_modulus = 454545
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
l_max_its = 20
nl_max_its = 10
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/mean_cap_TC/small_deform6.i)
# apply nonuniform stretch in x, y and z directions using
# Lame lambda = 0.7E7, Lame mu = 1.0E7,
# trial_stress(0, 0) = 2.9
# trial_stress(1, 1) = 10.9
# trial_stress(2, 2) = 14.9
# With tensile_strength = 2, decaying to zero at internal parameter = 4E-7
# via a Cubic, the algorithm should return to:
# internal parameter = 2.26829E-7
# trace(stress) = 0.799989 = tensile_strength
# stress(0, 0) = -6.4
# stress(1, 1) = 1.6
# stress(2, 2) = 5.6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = SolidMechanicsHardeningCubic
value_0 = 2
value_residual = 0
internal_limit = 4E-7
[../]
[./compressive_strength]
type = SolidMechanicsHardeningCubic
value_0 = -1
value_residual = 0
internal_limit = 1E-8
[../]
[./cap]
type = SolidMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
use_custom_returnMap = true
use_custom_cto = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-11
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform6
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/anisotropic_elastoplasticity/ad_uniaxial_x_non_linear.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[AuxVariables]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[sigma_xx]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[hydrostatic_stress]
type = ADRankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[]
[plasticity_strain_xx]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xx
index_i = 0
index_j = 0
[]
[plasticity_strain_xy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_xy
index_i = 0
index_j = 1
[]
[plasticity_strain_yy]
type = ADRankTwoAux
rank_two_tensor = plastic_strain
variable = plastic_strain_yy
index_i = 1
index_j = 1
[]
[sigma_xx]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[]
[]
[Functions]
[pull]
type = PiecewiseLinear
x = '0 1e1'
y = '0 -2e8'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
generate_output = 'elastic_strain_xx stress_xx strain_xx plastic_strain_xx'
use_automatic_differentiation = true
add_variables = true
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeElasticityTensor
fill_method = orthotropic
C_ijkl = '10.0e10 15.0e10 20.0e10 2.0e10 2.0e10 2.0e10 0.2 0.2 0.2 0.13333333333333333 0.1 0.15'
[]
[elastic_strain]
type = ADComputeMultipleInelasticStress
inelastic_models = "trial_plasticity"
max_iterations = 50
absolute_tolerance = 1e-16
[]
[hill_tensor]
type = ADHillConstants
# F G H L M N
hill_constants = "0.6 0.4 0.7 1.5 1.5 1.5"
[]
[trial_plasticity]
type = ADHillElastoPlasticityStressUpdate
hardening_constant = 1e9
hardening_exponent = 0.5
yield_stress = 60e6
absolute_tolerance = 1e-15 # 1e-8
relative_tolerance = 1e-13 # 1e-15
internal_solve_full_iteration_history = true
max_inelastic_increment = 2.0e-5
internal_solve_output_on = on_error
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[Pressure]
[Side1]
boundary = right
function = pull
[]
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
nl_rel_tol = 1e-12
nl_abs_tol = 1.0e-14
l_max_its = 90
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 30
iteration_window = 9
growth_factor = 1.05
cutback_factor = 0.5
timestep_limiting_postprocessor = matl_ts_min
dt = 0.1
time_t = '0 2.5 10'
time_dt = '0.1 1.0e-2 1.0e-2'
[]
start_time = 0
end_time = 10.0
automatic_scaling = true
[]
[Postprocessors]
[matl_ts_min]
type = MaterialTimeStepPostprocessor
[]
[max_disp_x]
type = ElementExtremeValue
variable = disp_x
[]
[max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[]
[dt]
type = TimestepSize
[]
[plasticity_strain_xx]
type = ElementalVariableValue
variable = plastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[elastic_strain_xx]
type = ElementalVariableValue
variable = elastic_strain_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[strain_xx]
type = ElementalVariableValue
variable = strain_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[sigma_xx]
type = ElementalVariableValue
variable = stress_xx
execute_on = 'TIMESTEP_END'
elementid = 0
[]
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_fully_saturated_volume.i)
# A sample is constrained on all sides, except its top
# and its boundaries are
# also impermeable. Fluid is pumped into the sample via a
# volumetric source (ie m^3/second per cubic meter), and the
# rise in the top surface, porepressure, and stress are observed.
#
# In the standard poromechanics scenario, the Biot Modulus is held
# fixed and the source has units 1/s. Then the expected result
# is
# strain_zz = disp_z = BiotCoefficient*BiotModulus*s*t/((bulk + 4*shear/3) + BiotCoefficient^2*BiotModulus)
# porepressure = BiotModulus*(s*t - BiotCoefficient*strain_zz)
# stress_xx = (bulk - 2*shear/3)*strain_zz (remember this is effective stress)
# stress_zz = (bulk + 4*shear/3)*strain_zz (remember this is effective stress)
#
# In standard porous_flow, everything is based on mass, eg the source has
# units kg/s/m^3. This is discussed in the other pp_generation_unconfined
# models. In this test, we use the FullySaturated Kernel and set
# multiply_by_density = false
# meaning the fluid Kernel has units of volume, and the source, s, has units 1/time
#
# The ratios are:
# stress_xx/strain_zz = (bulk - 2*shear/3) = 1 (for the parameters used here)
# stress_zz/strain_zz = (bulk + 4*shear/3) = 4 (for the parameters used here)
# porepressure/strain_zz = 13.3333333 (for the parameters used here)
#
# Expect
# disp_z = 0.3*10*s*t/((2 + 4*1.5/3) + 0.3^2*10) = 0.612245*s*t
# porepressure = 10*(s*t - 0.3*0.612245*s*t) = 8.163265*s*t
# stress_xx = (2 - 2*1.5/3)*0.612245*s*t = 0.612245*s*t
# stress_zz = (2 + 4*shear/3)*0.612245*s*t = 2.44898*s*t
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[confinex]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confiney]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top'
[]
[confinez]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[]
[poro_x]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 0.3
component = 2
variable = disp_z
[]
[mass0]
type = PorousFlowFullySaturatedMassTimeDerivative
variable = porepressure
multiply_by_density = false
coupling_type = HydroMechanical
biot_coefficient = 0.3
[]
[source]
type = BodyForce
function = 0.1
variable = porepressure
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[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_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 3.3333333333
density0 = 1
thermal_expansion = 0
[]
[]
[Materials]
[temperature_qp]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1.5'
# bulk modulus is lambda + 2*mu/3 = 1 + 2*1.5/3 = 2
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure]
type = PorousFlowEffectiveFluidPressure
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseFullySaturated
porepressure = porepressure
[]
[simple_fluid_qp]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst # the "const" is irrelevant here: all that uses Porosity is the BiotModulus, which just uses the initial value of porosity
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
biot_coefficient = 0.3
fluid_bulk_modulus = 3.3333333333
solid_bulk_compliance = 0.5
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 0.5'
variable = disp_z
[]
[stress_xx]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_xx
[]
[stress_yy]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_yy
[]
[stress_zz]
type = PointValue
outputs = csv
point = '0 0 0'
variable = stress_zz
[]
[stress_xx_over_strain]
type = FunctionValuePostprocessor
function = stress_xx_over_strain_fcn
outputs = csv
[]
[stress_zz_over_strain]
type = FunctionValuePostprocessor
function = stress_zz_over_strain_fcn
outputs = csv
[]
[p_over_strain]
type = FunctionValuePostprocessor
function = p_over_strain_fcn
outputs = csv
[]
[]
[Functions]
[stress_xx_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'stress_xx zdisp'
[]
[stress_zz_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'stress_zz zdisp'
[]
[p_over_strain_fcn]
type = ParsedFunction
expression = a/b
symbol_names = 'a b'
symbol_values = 'p0 zdisp'
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
file_base = pp_generation_unconfined_fully_saturated_volume
[csv]
type = CSV
[]
[]
(modules/solid_mechanics/test/tests/volumetric_deform_grad/volumetric_strain_interface.i)
#This test has volumetric deformation gradient as identity
#Test the interface
#Results should match with elasticity
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxVariables]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
block = 0
[../]
[]
[AuxKernels]
[./stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
block = 0
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[../]
[]
[Materials]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./volumetric_strain]
type = ComputeVolumetricDeformGrad
pre_deform_grad_name = deformation_gradient
volumetric_deform_grad_name = volumetric_deformation_gradient
post_deform_grad_name = elastic_deformation_gradient
block = 0
[../]
[./elastic_stress]
type = ComputeDeformGradBasedStress
deform_grad_name = elastic_deformation_gradient
elasticity_tensor_name = elasticity_tensor
stress_name = elastic_stress
jacobian_name = elastic_jacobian
block = 0
[../]
[./corrected_stress]
type = VolumeDeformGradCorrectedStress
pre_stress_name = elastic_stress
deform_grad_name = volumetric_deformation_gradient
pre_jacobian_name = elastic_jacobian
stress_name = stress
jacobian_name = Jacobian_mult
block = 0
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '2.8e5 1.2e5 1.2e5 2.8e5 1.2e5 2.8e5 0.8e5 0.8e5 0.8e5'
fill_method = symmetric9
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.02
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
dtmax = 10.0
nl_rel_tol = 1e-10
dtmin = 0.02
num_steps = 10
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/ad_isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD8
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = SMALL
add_variables = true
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[stress_theta]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_theta]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[]
[]
[Materials]
[elasticity_tensor]
#Material constants selected to match isotropic lambda and shear modulus case
type = ADComputeElasticityTensor
C_ijkl = '1022726 113636 113636 1022726 454545'
fill_method = axisymmetric_rz
[]
[elastic_stress]
type = ADComputeLinearElasticStress
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_r]
type = DirichletBC
variable = disp_r
boundary = left
value = 0.0
[]
[no_disp_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
# exterior and internal pressures
[exterior_pressure_r]
type = ADPressure
variable = disp_r
boundary = right
factor = 200000
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
num_steps = 1000
dtmax = 5e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 6
iteration_window = 0
linear_iteration_ratio = 100
[]
[Predictor]
type = SimplePredictor
scale = 1.0
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[]
[Outputs]
file_base = 2D-axisymmetric_rz_test_out
exodus = true
[]
(modules/solid_mechanics/test/tests/umat/print/print.i)
# Testing the UMAT Interface - linear elastic model using the large strain formulation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[]
[Functions]
[top_pull]
type = ParsedFunction
expression = -t/1000
[]
[]
[AuxVariables]
[strain_yy]
family = MONOMIAL
order = FIRST
[]
[]
[AuxKernels]
[strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
[]
[]
[BCs]
[Pressure]
[bc_presssure]
boundary = top
function = top_pull
[]
[]
[x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[z_bot]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.0
[]
[]
[Materials]
[umat]
type = AbaqusUMATStress
constant_properties = '1000 0.3'
plugin = '../../../plugins/elastic_print'
num_state_vars = 0
external_fields = 'strain_yy'
use_one_based_indexing = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 20
dt = 10.0
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/poro_mechanics/mandel.i)
# Mandel's problem of consolodation of a drained medium
#
# A sample is in plane strain.
# -a <= x <= a
# -b <= y <= b
# It is squashed with constant force by impermeable, frictionless plattens on its top and bottom surfaces (at y=+/-b)
# Fluid is allowed to leak out from its sides (at x=+/-a)
# The porepressure within the sample is monitored.
#
# As is common in the literature, this is simulated by
# considering the quarter-sample, 0<=x<=a and 0<=y<=b, with
# impermeable, roller BCs at x=0 and y=0 and y=b.
# Porepressure is fixed at zero on x=a.
# Porepressure and displacement are initialised to zero.
# Then the top (y=b) is moved downwards with prescribed velocity,
# so that the total force that is inducing this downwards velocity
# is fixed. The velocity is worked out by solving Mandel's problem
# analytically, and the total force is monitored in the simulation
# to check that it indeed remains constant.
#
# Here are the problem's parameters, and their values:
# Soil width. a = 1
# Soil height. b = 0.1
# Soil's Lame lambda. la = 0.5
# Soil's Lame mu, which is also the Soil's shear modulus. mu = G = 0.75
# Soil bulk modulus. K = la + 2*mu/3 = 1
# Drained Poisson ratio. nu = (3K - 2G)/(6K + 2G) = 0.2
# Soil bulk compliance. 1/K = 1
# Fluid bulk modulus. Kf = 8
# Fluid bulk compliance. 1/Kf = 0.125
# Soil initial porosity. phi0 = 0.1
# Biot coefficient. alpha = 0.6
# Biot modulus. M = 1/(phi0/Kf + (alpha - phi0)(1 - alpha)/K) = 4.705882
# Undrained bulk modulus. Ku = K + alpha^2*M = 2.694118
# Undrained Poisson ratio. nuu = (3Ku - 2G)/(6Ku + 2G) = 0.372627
# Skempton coefficient. B = alpha*M/Ku = 1.048035
# Fluid mobility (soil permeability/fluid viscosity). k = 1.5
# Consolidation coefficient. c = 2*k*B^2*G*(1-nu)*(1+nuu)^2/9/(1-nuu)/(nuu-nu) = 3.821656
# Normal stress on top. F = 1
#
# The solution for porepressure and displacements is given in
# AHD Cheng and E Detournay "A direct boundary element method for plane strain poroelasticity" International Journal of Numerical and Analytical Methods in Geomechanics 12 (1988) 551-572.
# The solution involves complicated infinite series, so I shall not write it here
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 1
nz = 1
xmin = 0
xmax = 1
ymin = 0
ymax = 0.1
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./porepressure]
[../]
[]
[BCs]
[./roller_xmin]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[../]
[./roller_ymin]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[../]
[./plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'back front'
[../]
[./xmax_drained]
type = DirichletBC
variable = porepressure
value = 0
boundary = right
[../]
[./top_velocity]
type = FunctionDirichletBC
variable = disp_y
function = top_velocity
boundary = top
[../]
[]
[Functions]
[./top_velocity]
type = PiecewiseLinear
x = '0 0.002 0.006 0.014 0.03 0.046 0.062 0.078 0.094 0.11 0.126 0.142 0.158 0.174 0.19 0.206 0.222 0.238 0.254 0.27 0.286 0.302 0.318 0.334 0.35 0.366 0.382 0.398 0.414 0.43 0.446 0.462 0.478 0.494 0.51 0.526 0.542 0.558 0.574 0.59 0.606 0.622 0.638 0.654 0.67 0.686 0.702'
y = '-0.041824842 -0.042730269 -0.043412712 -0.04428867 -0.045509181 -0.04645965 -0.047268246 -0.047974749 -0.048597109 -0.0491467 -0.049632388 -0.050061697 -0.050441198 -0.050776675 -0.051073238 -0.0513354 -0.051567152 -0.051772022 -0.051953128 -0.052113227 -0.052254754 -0.052379865 -0.052490464 -0.052588233 -0.052674662 -0.052751065 -0.052818606 -0.052878312 -0.052931093 -0.052977751 -0.053018997 -0.053055459 -0.053087691 -0.053116185 -0.053141373 -0.05316364 -0.053183324 -0.053200724 -0.053216106 -0.053229704 -0.053241725 -0.053252351 -0.053261745 -0.053270049 -0.053277389 -0.053283879 -0.053289615'
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_force]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./tot_force]
type = ParsedAux
coupled_variables = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
expression = '-stress_yy+0.6*porepressure'
[../]
[]
[Kernels]
[./grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
component = 0
[../]
[./grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
component = 1
[../]
[./grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
component = 2
[../]
[./poro_x]
type = PoroMechanicsCoupling
variable = disp_x
component = 0
[../]
[./poro_y]
type = PoroMechanicsCoupling
variable = disp_y
component = 1
[../]
[./poro_z]
type = PoroMechanicsCoupling
variable = disp_z
component = 2
[../]
[./poro_timederiv]
type = PoroFullSatTimeDerivative
variable = porepressure
[../]
[./darcy_flow]
type = CoefDiffusion
variable = porepressure
coef = 1.5
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '0.5 0.75'
# bulk modulus is lambda + 2*mu/3 = 0.5 + 2*0.75/3 = 1
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./poro_material]
type = PoroFullSatMaterial
porosity0 = 0.1
biot_coefficient = 0.6
solid_bulk_compliance = 1
fluid_bulk_compliance = 0.125
constant_porosity = true
[../]
[]
[Postprocessors]
[./p0]
type = PointValue
outputs = csv
point = '0.0 0 0'
variable = porepressure
[../]
[./p1]
type = PointValue
outputs = csv
point = '0.1 0 0'
variable = porepressure
[../]
[./p2]
type = PointValue
outputs = csv
point = '0.2 0 0'
variable = porepressure
[../]
[./p3]
type = PointValue
outputs = csv
point = '0.3 0 0'
variable = porepressure
[../]
[./p4]
type = PointValue
outputs = csv
point = '0.4 0 0'
variable = porepressure
[../]
[./p5]
type = PointValue
outputs = csv
point = '0.5 0 0'
variable = porepressure
[../]
[./p6]
type = PointValue
outputs = csv
point = '0.6 0 0'
variable = porepressure
[../]
[./p7]
type = PointValue
outputs = csv
point = '0.7 0 0'
variable = porepressure
[../]
[./p8]
type = PointValue
outputs = csv
point = '0.8 0 0'
variable = porepressure
[../]
[./p9]
type = PointValue
outputs = csv
point = '0.9 0 0'
variable = porepressure
[../]
[./p99]
type = PointValue
outputs = csv
point = '1 0 0'
variable = porepressure
[../]
[./xdisp]
type = PointValue
outputs = csv
point = '1 0.1 0'
variable = disp_x
[../]
[./ydisp]
type = PointValue
outputs = csv
point = '1 0.1 0'
variable = disp_y
[../]
[./total_downwards_force]
type = ElementAverageValue
outputs = csv
variable = tot_force
[../]
[./dt]
type = FunctionValuePostprocessor
outputs = console
function = if(0.15*t<0.01,0.15*t,0.01)
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 10000'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 0.7
[./TimeStepper]
type = PostprocessorDT
postprocessor = dt
dt = 0.001
[../]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = mandel
[./csv]
time_step_interval = 3
type = CSV
[../]
[]
(modules/solid_mechanics/test/tests/interface_stress/multi.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 10
nz = 10
xmax = 1
ymax = 1
zmax = 1
xmin = -1
ymin = -1
zmin = -1
[]
[GlobalParams]
order = CONSTANT
family = MONOMIAL
rank_two_tensor = extra_stress
[]
[Functions]
[./sphere1]
type = ParsedFunction
expression = 'r:=sqrt(x^2+y^2+z^2); if(r>1,0,1-3*r^2+2*r^3)'
[../]
[./sphere2]
type = ParsedFunction
expression = 'r:=sqrt(x^2+y^2+z^2); 0.5-0.5*if(r>1,0,1-3*r^2+2*r^3)'
[../]
[]
[Variables]
[./dummy]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = dummy
[../]
[]
[AuxVariables]
[./eta1]
[./InitialCondition]
type = FunctionIC
function = sphere1
[../]
order = FIRST
family = LAGRANGE
[../]
[./eta2]
[./InitialCondition]
type = FunctionIC
function = sphere2
[../]
order = FIRST
family = LAGRANGE
[../]
[./s00]
[../]
[./s01]
[../]
[./s02]
[../]
[./s10]
[../]
[./s11]
[../]
[./s12]
[../]
[./s20]
[../]
[./s21]
[../]
[./s22]
[../]
[]
[AuxKernels]
[./s00]
type = RankTwoAux
variable = s00
index_i = 0
index_j = 0
[../]
[./s01]
type = RankTwoAux
variable = s01
index_i = 0
index_j = 1
[../]
[./s02]
type = RankTwoAux
variable = s02
index_i = 0
index_j = 2
[../]
[./s10]
type = RankTwoAux
variable = s10
index_i = 1
index_j = 0
[../]
[./s11]
type = RankTwoAux
variable = s11
index_i = 1
index_j = 1
[../]
[./s12]
type = RankTwoAux
variable = s12
index_i = 1
index_j = 2
[../]
[./s20]
type = RankTwoAux
variable = s20
index_i = 2
index_j = 0
[../]
[./s21]
type = RankTwoAux
variable = s21
index_i = 2
index_j = 1
[../]
[./s22]
type = RankTwoAux
variable = s22
index_i = 2
index_j = 2
[../]
[]
[Materials]
[./interface]
type = ComputeInterfaceStress
v = 'eta1 eta2'
stress = '1.0 2.0'
op_range = '1.0 0.5'
[../]
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
file_base = test_out
execute_on = timestep_end
hide = 'dummy eta1 eta2'
[]