- base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
C++ Type:std::string
Controllable:No
Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this boundary condition applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this boundary condition applies
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
Compute Linear Elastic Stress
Compute stress using elasticity for small strains
Description
This material, ComputeLinearElasticStress
computes the elastic stress for a total and small strain formulation: this stress class is compatible with the ComputeSmallStrain type of strain calculators, including those for non-Cartesian coordinate systems. This stress calculator class can be used with any coordinate system to calculate the elastic stress response for a small total formulation strain.
Elastic materials do not experience permanent deformation, and all elastic strain and elastic stress is recoverable. Elastic stress is related to elastic strain through the elasticity tensor where is the total strain formulation; this strain measure is also the sum of the mechanical elastic strain and any eigenstrains in the system.
Example Input File Syntax
[./stress]
type = ComputeLinearElasticStress
[../]
(modules/tensor_mechanics/tutorials/basics/part_1.1.i)Input Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names were you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names were you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
Input Files
- (modules/tensor_mechanics/test/tests/2D_different_planes/gps_xz.i)
- (modules/tensor_mechanics/test/tests/global_strain/global_strain_pressure_3D.i)
- (modules/tensor_mechanics/test/tests/1D_axisymmetric/axisymm_gps_small.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_basicthm.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/gps_jacobian_testing_xz.i)
- (modules/tensor_mechanics/test/tests/global_strain/global_strain_action.i)
- (modules/porous_flow/test/tests/poro_elasticity/terzaghi_constM.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/planestrain_jacobian_testing_xy.i)
- (modules/tensor_mechanics/test/tests/stress_recovery/patch/patch.i)
- (modules/peridynamics/test/tests/jacobian_check/2D_thermomechanics_smallstrain_H1NOSPD.i)
- (modules/xfem/test/tests/moving_interface/cut_mesh_2d.i)
- (modules/peridynamics/test/tests/restart/2D_mesh_restartable_H1NOSPD_second.i)
- (modules/xfem/test/tests/crack_tip_enrichment/penny_crack_3d.i)
- (modules/combined/examples/phase_field-mechanics/hex_grain_growth_2D_eldrforce.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/planestrain_yz.i)
- (modules/combined/examples/phase_field-mechanics/poly_grain_growth_2D_eldrforce.i)
- (modules/contact/test/tests/hertz_spherical/hertz_contact.i)
- (modules/peridynamics/test/tests/simple_tests/2D_small_strain_H1NOSPD.i)
- (modules/tensor_mechanics/test/tests/cohesive_zone_model/czm_traction_separation_base.i)
- (modules/combined/test/tests/generalized_plane_strain_tm_contact/generalized_plane_strain_tm_contact.i)
- (modules/tensor_mechanics/test/tests/1D_axisymmetric/axisymmetric_gps_small.i)
- (modules/porous_flow/test/tests/jacobian/mass_vol_exp03.i)
- (modules/tensor_mechanics/tutorials/introduction/mech_step01.i)
- (modules/porous_flow/test/tests/jacobian/mass01_fully_saturated.i)
- (modules/peridynamics/test/tests/jacobian_check/weak_planestress_thermomechanics_smallstrain_H1NOSPD.i)
- (modules/tensor_mechanics/test/tests/dynamics/time_integration/newmark_action.i)
- (modules/combined/test/tests/poro_mechanics/pp_generation_unconfined.i)
- (modules/xfem/test/tests/crack_tip_enrichment/edge_crack_2d.i)
- (modules/tensor_mechanics/test/tests/dynamics/linear_constraint/disp_mid.i)
- (modules/combined/test/tests/multiphase_mechanics/twophasestress.i)
- (modules/tensor_mechanics/test/tests/check_error/num_constants.i)
- (modules/porous_flow/test/tests/mass_conservation/mass04.i)
- (modules/tensor_mechanics/test/tests/check_error/shear_modulus.i)
- (modules/combined/examples/phase_field-mechanics/Pattern1.i)
- (modules/porous_flow/test/tests/mass_conservation/mass11.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_action.i)
- (modules/tensor_mechanics/tutorials/introduction/mech_step03a.i)
- (modules/combined/examples/periodic_strain/global_strain_pfm.i)
- (modules/combined/test/tests/poro_mechanics/unconsolidated_undrained.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/gps_jacobian_testing_yz.i)
- (modules/combined/test/tests/thermo_mech/thermo_mech.i)
- (modules/porous_flow/test/tests/thm_rehbinder/free_outer.i)
- (modules/contact/test/tests/hertz_spherical/hertz_contact_rz_quad8.i)
- (modules/contact/test/tests/hertz_spherical/hertz_contact_hex27.i)
- (modules/tensor_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_ref_resid.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_fully_saturated_volume.i)
- (modules/combined/test/tests/thermo_mech/thermo_mech_smp.i)
- (modules/tensor_mechanics/tutorials/basics/part_2.1.i)
- (modules/tensor_mechanics/test/tests/initial_stress/gravity.i)
- (modules/tensor_mechanics/test/tests/check_error/youngs_modulus.i)
- (modules/combined/test/tests/phase_field_fracture/crack2d_computeCrackedStress_smallstrain.i)
- (modules/contact/test/tests/hertz_spherical/hertz_contact_rz.i)
- (modules/combined/test/tests/concentration_dependent_elasticity_tensor/concentration_dependent_elasticity_tensor.i)
- (modules/porous_flow/test/tests/jacobian/fflux08.i)
- (modules/porous_flow/examples/tidal/barometric_fully_confined.i)
- (modules/porous_flow/test/tests/mass_conservation/mass13.i)
- (modules/combined/test/tests/surface_tension_KKS/surface_tension_KKS.i)
- (modules/combined/examples/phase_field-mechanics/EBSD_reconstruction_grain_growth_mech.i)
- (modules/porous_flow/test/tests/energy_conservation/heat05.i)
- (modules/porous_flow/test/tests/poro_elasticity/mandel_constM.i)
- (modules/porous_flow/test/tests/jacobian/mass_vol_exp02.i)
- (modules/tensor_mechanics/test/tests/isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i)
- (modules/tensor_mechanics/test/tests/thermal_expansion_function/small_linear.i)
- (modules/tensor_mechanics/test/tests/finite_strain_elastic/finite_strain_stress_errorcheck.i)
- (modules/porous_flow/test/tests/jacobian/heat_vol_exp01.i)
- (modules/porous_flow/test/tests/poro_elasticity/mandel.i)
- (modules/tensor_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement_with_gravity.i)
- (modules/tensor_mechanics/test/tests/test_jacobian/jacobian_pressure_spherical.i)
- (modules/porous_flow/test/tests/jacobian/linear_por.i)
- (modules/peridynamics/test/tests/plane_stress/weak_planestress_H1NOSPD.i)
- (modules/tensor_mechanics/test/tests/dynamics/time_integration/hht_test.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_fullysat_action.i)
- (modules/tensor_mechanics/test/tests/dynamics/time_integration/newmark.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/planestrain_jacobian_testing_yz.i)
- (modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_newmark.i)
- (modules/tensor_mechanics/test/tests/dynamics/time_integration/hht_test_ti.i)
- (modules/peridynamics/test/tests/jacobian_check/3D_mechanics_smallstrain_H1NOSPD.i)
- (modules/combined/test/tests/reference_residual/group_variables.i)
- (modules/tensor_mechanics/test/tests/thermal_expansion_function/dilatation.i)
- (modules/porous_flow/test/tests/poro_elasticity/mandel_fully_saturated.i)
- (modules/tensor_mechanics/test/tests/dynamics/time_integration/hht_test_action.i)
- (modules/tensor_mechanics/test/tests/check_error/bulk_modulus.i)
- (modules/peridynamics/test/tests/jacobian_check/generalized_planestrain_smallstrain_H1NOSPD.i)
- (modules/tensor_mechanics/test/tests/pressure/pressure_test.i)
- (modules/porous_flow/test/tests/energy_conservation/heat03_rz.i)
- (modules/tensor_mechanics/examples/piston/piston_params.i)
- (modules/tensor_mechanics/test/tests/ad_elastic/rspherical_small_elastic-noad.i)
- (modules/combined/test/tests/multiphase_mechanics/simpleeigenstrain.i)
- (modules/combined/test/tests/poro_mechanics/jacobian1.i)
- (modules/tensor_mechanics/test/tests/poro/vol_expansion_action.i)
- (modules/tensor_mechanics/test/tests/2D_geometries/planestrain.i)
- (modules/tensor_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement_ti.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/gps_xy.i)
- (modules/peridynamics/test/tests/failure_tests/2D_singular_shape_tensor_H1NOSPD.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/gps_jacobian_testing_xy.i)
- (modules/porous_flow/test/tests/jacobian/denergy02.i)
- (modules/porous_flow/test/tests/poro_elasticity/terzaghi_basicthm.i)
- (modules/xfem/test/tests/solid_mechanics_basic/square_branch_quad_2d.i)
- (modules/combined/test/tests/poro_mechanics/undrained_oedometer.i)
- (modules/tensor_mechanics/test/tests/ad_elastic/rz_small_elastic-noad.i)
- (modules/porous_flow/test/tests/jacobian/denergy04.i)
- (modules/porous_flow/test/tests/jacobian/mass10.i)
- (modules/xfem/test/tests/moving_interface/moving_bimaterial.i)
- (modules/tensor_mechanics/tutorials/basics/part_1.2.i)
- (modules/tensor_mechanics/test/tests/torque_reaction/torque_reaction.i)
- (modules/combined/test/tests/eigenstrain/variable_cahnhilliard.i)
- (modules/porous_flow/examples/thm_example/2D_c.i)
- (modules/combined/test/tests/surface_tension_KKS/surface_tension_VDWgas.i)
- (modules/tensor_mechanics/examples/cframe_iga/cframe_iga.i)
- (modules/combined/test/tests/multiphase_mechanics/multiphasestress.i)
- (modules/combined/examples/phase_field-mechanics/SimplePhaseTrans.i)
- (modules/combined/test/tests/linear_elasticity/thermal_expansion.i)
- (modules/tensor_mechanics/test/tests/anisotropic_patch/anisotropic_patch_test.i)
- (modules/tensor_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_hht.i)
- (modules/porous_flow/test/tests/jacobian/mass08.i)
- (modules/combined/examples/publications/rapid_dev/fig8.i)
- (modules/xfem/test/tests/corner_nodes_cut/corner_node_cut.i)
- (modules/xfem/test/tests/bimaterials/glued_bimaterials_2d.i)
- (modules/tensor_mechanics/test/tests/action/two_block.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/planestrain_xy.i)
- (modules/porous_flow/test/tests/jacobian/mass10_nodens.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_second/small.i)
- (modules/porous_flow/test/tests/jacobian/desorped_mass_vol_exp01.i)
- (modules/tensor_mechanics/test/tests/generalized_plane_strain/plane_strain_prescribed.i)
- (modules/combined/test/tests/multiphase_mechanics/nonsplit_gradderiv_action.i)
- (modules/tensor_mechanics/tutorials/introduction/mech_step03.i)
- (modules/combined/test/tests/eigenstrain/variable.i)
- (modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_hht_ti.i)
- (modules/tensor_mechanics/test/tests/action/two_coord.i)
- (modules/combined/test/tests/multiphase_mechanics/nonsplit_gradderiv.i)
- (modules/combined/test/tests/evolving_mass_density/rz_tensors.i)
- (modules/combined/examples/phase_field-mechanics/interface_stress.i)
- (modules/tensor_mechanics/test/tests/critical_time_step/crit_time_solid_variable.i)
- (modules/tensor_mechanics/test/tests/j_integral/j_integral_2d_small_strain.i)
- (modules/tensor_mechanics/test/tests/critical_time_step/crit_time_solid_uniform.i)
- (modules/contact/test/tests/pressure/pressurePenalty_mechanical_constraint.i)
- (modules/combined/examples/phase_field-mechanics/kks_mechanics_KHS.i)
- (modules/porous_flow/test/tests/energy_conservation/heat04_action_KT.i)
- (modules/contact/test/tests/hertz_spherical/hertz_contact_hex20.i)
- (modules/combined/examples/phase_field-mechanics/LandauPhaseTrans.i)
- (modules/combined/examples/phase_field-mechanics/Nonconserved.i)
- (modules/porous_flow/examples/tidal/earth_tide_fullsat.i)
- (modules/xfem/test/tests/moving_interface/cut_mesh_3d.i)
- (modules/tensor_mechanics/test/tests/ad_simple_linear/linear-hand-coded.i)
- (modules/peridynamics/test/tests/jacobian_check/2D_mechanics_smallstrain_H1NOSPD.i)
- (modules/tensor_mechanics/test/tests/jacobian/thermal_coupling.i)
- (modules/combined/test/tests/poro_mechanics/selected_qp.i)
- (modules/xfem/test/tests/moment_fitting/solid_mechanics_moment_fitting.i)
- (modules/porous_flow/examples/tutorial/04.i)
- (modules/xfem/test/tests/second_order_elements/square_branch_quad9_2d.i)
- (modules/peridynamics/test/tests/failure_tests/2D_stress_failure_H1NOSPD.i)
- (modules/porous_flow/examples/tutorial/11_2D.i)
- (modules/porous_flow/examples/tutorial/11.i)
- (modules/combined/test/tests/multiphase_mechanics/elasticenergymaterial.i)
- (modules/porous_flow/test/tests/poro_elasticity/terzaghi.i)
- (modules/combined/test/tests/poro_mechanics/terzaghi.i)
- (modules/combined/examples/thermomechanics/circle_thermal_expansion_stress.i)
- (modules/tensor_mechanics/test/tests/action/material_output_order.i)
- (modules/tensor_mechanics/test/tests/global_strain/global_strain_shear.i)
- (modules/xfem/test/tests/checkpoint/checkpoint.i)
- (modules/porous_flow/test/tests/actions/basicthm_hm.i)
- (modules/tensor_mechanics/test/tests/gravity/gravity_test.i)
- (modules/combined/examples/publications/rapid_dev/fig7b.i)
- (modules/tensor_mechanics/test/tests/torque_reaction/torque_reaction_3D.i)
- (modules/tensor_mechanics/test/tests/truss/truss_hex_action.i)
- (modules/tensor_mechanics/test/tests/line_material_rank_two_sampler/rank_two_scalar_sampler.i)
- (modules/combined/test/tests/evolving_mass_density/uniform_expand_compress_test_tensors.i)
- (modules/tensor_mechanics/test/tests/jacobian/poro01.i)
- (modules/combined/test/tests/linear_elasticity/applied_strain.i)
- (modules/tensor_mechanics/test/tests/pressure/cantilever.i)
- (modules/xfem/test/tests/second_order_elements/square_branch_quad8_2d.i)
- (modules/peridynamics/test/tests/failure_tests/2D_bond_status_convergence_H1NOSPD.i)
- (modules/contact/test/tests/check_error/contact_displacements.i)
- (modules/tensor_mechanics/test/tests/strain_energy_density/tot_model.i)
- (modules/porous_flow/test/tests/mass_conservation/mass12.i)
- (modules/tensor_mechanics/test/tests/poro/vol_expansion.i)
- (modules/porous_flow/test/tests/poro_elasticity/mandel_basicthm.i)
- (modules/tensor_mechanics/test/tests/generalized_plane_strain/out_of_plane_pressure.i)
- (modules/tensor_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_small.i)
- (modules/xfem/test/tests/pressure_bc/edge_2d_pressure.i)
- (modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_hht.i)
- (modules/xfem/test/tests/corner_nodes_cut/corner_edge_cut.i)
- (modules/tensor_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_squares.i)
- (modules/peridynamics/test/tests/restart/2D_mesh_restartable_H1NOSPD.i)
- (modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_weak_plane_stress_jacobian.i)
- (modules/combined/test/tests/eigenstrain/inclusion.i)
- (modules/combined/test/tests/poro_mechanics/pp_generation.i)
- (modules/peridynamics/test/tests/plane_stress/conventional_planestress_H1NOSPD.i)
- (modules/porous_flow/test/tests/jacobian/denergy03.i)
- (modules/tensor_mechanics/test/tests/isotropic_elasticity_tensor/youngs_modulus_poissons_ratio_test.i)
- (modules/porous_flow/test/tests/jacobian/denergy05.i)
- (modules/tensor_mechanics/test/tests/dynamics/acceleration_bc/AccelerationBC_test.i)
- (modules/combined/examples/mortar/eigenstrain.i)
- (modules/combined/examples/phase_field-mechanics/Conserved.i)
- (modules/combined/test/tests/linear_elasticity/tensor.i)
- (modules/tensor_mechanics/test/tests/jacobian/thermal_coupling_rz.i)
- (modules/peridynamics/test/tests/jacobian_check/generalized_planestrain_thermomechanics_smallstrain_H1NOSPD.i)
- (modules/tensor_mechanics/test/tests/global_strain/global_strain_disp.i)
- (modules/tensor_mechanics/test/tests/CylindricalRankTwoAux/test.i)
- (modules/tensor_mechanics/test/tests/global_strain/global_strain.i)
- (modules/tensor_mechanics/test/tests/plane_stress/weak_plane_stress_small.i)
- (modules/tensor_mechanics/test/tests/generalized_plane_strain/plane_strain.i)
- (modules/xfem/test/tests/corner_nodes_cut/notch.i)
- (modules/peridynamics/test/tests/jacobian_check/2D_mechanics_FNOSPD.i)
- (modules/porous_flow/test/tests/poro_elasticity/mandel_fully_saturated_volume.i)
- (modules/peridynamics/test/tests/jacobian_check/2D_mechanics_smallstrain_H2NOSPD.i)
- (modules/tensor_mechanics/test/tests/1D_axisymmetric/axisymm_plane_strain_small.i)
- (modules/tensor_mechanics/test/tests/gravity/material_vector_body_force.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_first/small.i)
- (modules/tensor_mechanics/test/tests/cohesive_zone_model/czm_multiple_dimension_base.i)
- (modules/porous_flow/test/tests/jacobian/mass_vol_exp01.i)
- (modules/tensor_mechanics/test/tests/elastic_patch/elastic_patch_quadratic.i)
- (modules/tensor_mechanics/test/tests/initial_stress/gravity_with_aux.i)
- (modules/tensor_mechanics/test/tests/test_jacobian/jacobian_spherical.i)
- (modules/tensor_mechanics/test/tests/homogenization/anisoLongFiber.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/gps_yz.i)
- (modules/tensor_mechanics/test/tests/homogenization/anisoShortFiber.i)
- (modules/porous_flow/test/tests/thm_rehbinder/fixed_outer_rz.i)
- (modules/combined/test/tests/generalized_plane_strain_tm_contact/out_of_plane_pressure.i)
- (modules/tensor_mechanics/test/tests/stickyBC/except1.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation.i)
- (modules/xfem/test/tests/bimaterials/inclusion_bimaterials_2d.i)
- (modules/peridynamics/test/tests/auxkernels/planestrain_thermomechanics_stretch_H1NOSPD.i)
- (modules/combined/examples/stochastic/graphite_ring_thermomechanics.i)
- (modules/combined/test/tests/eigenstrain/composite.i)
- (modules/porous_flow/examples/tidal/atm_tides.i)
- (modules/combined/examples/phase_field-mechanics/kks_mechanics_VTS.i)
- (modules/porous_flow/test/tests/energy_conservation/heat04.i)
- (modules/combined/examples/periodic_strain/global_strain_pfm_3D.i)
- (modules/tensor_mechanics/test/tests/isotropic_elasticity_tensor/lambda_shear_modulus_test.i)
- (modules/combined/test/tests/evolving_mass_density/shear_test_tensors.i)
- (modules/tensor_mechanics/test/tests/truss/truss_hex.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/planestrain_xz.i)
- (modules/porous_flow/test/tests/thm_rehbinder/fixed_outer.i)
- (modules/porous_flow/examples/thm_example/2D.i)
- (modules/combined/examples/publications/rapid_dev/fig7a.i)
- (modules/tensor_mechanics/test/tests/global_strain/global_strain_hydrostat.i)
- (modules/tensor_mechanics/test/tests/pressure/ring.i)
- (modules/tensor_mechanics/test/tests/global_strain/global_strain_direction.i)
- (modules/combined/examples/mortar/eigenstrain_action.i)
- (modules/tensor_mechanics/test/tests/stress_recovery/stress_concentration/stress_concentration.i)
- (modules/xfem/test/tests/pressure_bc/inclined_edge_2d_pressure.i)
- (modules/combined/test/tests/linear_elasticity/linear_elastic_material.i)
- (modules/tensor_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement.i)
- (modules/tensor_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_hht_ti.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_constM_action.i)
- (modules/tensor_mechanics/tutorials/basics/part_1.1.i)
- (modules/tensor_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_newmark.i)
- (modules/tensor_mechanics/test/tests/thermal_expansion_function/instantaneous.i)
- (modules/tensor_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_newmark_material_dependent.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_second/small.i)
- (modules/tensor_mechanics/test/tests/global_strain/global_strain_uniaxial.i)
- (modules/tensor_mechanics/test/tests/isotropic_elasticity_tensor/bulk_modulus_shear_modulus_test.i)
- (modules/porous_flow/test/tests/energy_conservation/heat04_fullysat_action.i)
- (modules/tensor_mechanics/test/tests/auxkernels/tensorelasticenergyaux.i)
- (modules/peridynamics/test/tests/jacobian_check/3D_mechanics_smallstrain_H2NOSPD.i)
- (modules/tensor_mechanics/test/tests/torque/torque_small.i)
- (modules/tensor_mechanics/test/tests/stickyBC/push_down.i)
- (modules/xfem/test/tests/solid_mechanics_basic/square_branch_tri_2d.i)
- (modules/porous_flow/test/tests/energy_conservation/heat04_action.i)
- (modules/porous_flow/test/tests/heterogeneous_materials/vol_expansion_poroperm.i)
- (modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_newmark_action.i)
- (modules/tensor_mechanics/test/tests/check_error/poissons_ratio.i)
- (modules/fsi/test/tests/fsi_2d/fsi_flat_channel.i)
- (modules/combined/test/tests/linear_elasticity/extra_stress.i)
- (modules/porous_flow/test/tests/actions/basicthm_thm.i)
- (modules/xfem/test/tests/corner_nodes_cut/corner_node_cut_twice.i)
- (modules/porous_flow/test/tests/energy_conservation/heat03.i)
- (modules/tensor_mechanics/examples/bridge/bridge.i)
- (modules/tensor_mechanics/test/tests/thermal_expansion_function/mean.i)
- (modules/tensor_mechanics/test/tests/stickyBC/push_up.i)
- (modules/tensor_mechanics/test/tests/dynamics/acceleration_bc/AccelerationBC_test_ti.i)
- (modules/porous_flow/test/tests/poro_elasticity/vol_expansion.i)
- (modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_newmark.i)
- (modules/peridynamics/test/tests/generalized_plane_strain/generalized_plane_strain_H1NOSPD.i)
- (modules/combined/test/tests/poro_mechanics/pp_generation_unconfined_action.i)
- (modules/peridynamics/test/tests/jacobian_check/2D_thermomechanics_smallstrain_H2NOSPD.i)
- (modules/combined/test/tests/poro_mechanics/mandel.i)
- (modules/porous_flow/test/tests/poro_elasticity/vol_expansion_poroperm.i)
- (modules/porous_flow/test/tests/poro_elasticity/undrained_oedometer.i)
- (modules/tensor_mechanics/test/tests/thermal_expansion_function/small_const.i)
- (modules/tensor_mechanics/test/tests/line_material_rank_two_sampler/rank_two_sampler.i)
- (modules/peridynamics/test/tests/jacobian_check/2D_thermomechanics_FNOSPD.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined.i)
- (modules/xfem/test/tests/second_order_elements/square_branch_tri6_2d.i)
- (modules/tensor_mechanics/test/tests/critical_time_step/non-isotropic_error_test.i)
- (modules/contact/test/tests/tension_release/4ElemTensionRelease_mechanical_constraint.i)
- (modules/porous_flow/test/tests/jacobian/desorped_mass01.i)
- (modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_hht.i)
- (modules/porous_flow/test/tests/energy_conservation/heat04_rz.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_fully_saturated.i)
- (modules/porous_flow/examples/tidal/atm_tides_open_hole.i)
- (modules/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_constM.i)
- (modules/tensor_mechanics/tutorials/introduction/mech_step02.i)
- (modules/combined/test/tests/ACGrGrElasticDrivingForce/bicrystal.i)
- (modules/tensor_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_scalar_vector.i)
- (modules/porous_flow/test/tests/poro_elasticity/terzaghi_fully_saturated_volume.i)
- (modules/tensor_mechanics/test/tests/plane_stress/weak_plane_stress_elastic_jacobian.i)
- (modules/tensor_mechanics/test/tests/2D_different_planes/planestrain_jacobian_testing_xz.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_first/small.i)
- (modules/combined/test/tests/evolving_mass_density/expand_compress_test_tensors.i)
- (modules/tensor_mechanics/test/tests/coupled_pressure/coupled_pressure_test.i)
Child Objects
(modules/tensor_mechanics/tutorials/basics/part_1.1.i)
#Tensor Mechanics tutorial: the basics
#Step 1, part 1
#2D simulation of uniaxial tension with linear elasticity
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
file = necking_quad4.e
[]
[Modules/TensorMechanics/Master]
[./block1]
strain = SMALL #Small linearized strain, automatically set to XY coordinates
add_variables = true #Add the variables from the displacement string in GlobalParams
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.05
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'asm lu 1 101'
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/tensor_mechanics/test/tests/2D_different_planes/gps_xz.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = square_xz_plane.e
[]
[Variables]
[./disp_x]
[../]
[./disp_z]
[../]
[./scalar_strain_yy]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./temp]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./generalized_plane_strain]
block = 1
strain = SMALL
scalar_out_of_plane_strain = scalar_strain_yy
out_of_plane_direction = y
planar_formulation = GENERALIZED_PLANE_STRAIN
eigenstrain_names = 'eigenstrain'
generate_output = 'stress_xx stress_xz stress_yy stress_zz strain_xx strain_xz strain_yy strain_zz'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(1-x)*t'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 3
variable = disp_z
value = 0.0
[../]
[]
[Materials]
[./elastic_stress]
type = ComputeLinearElasticStress
block = 1
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[]
[Postprocessors]
[./react_y]
type = MaterialTensorIntegral
use_displaced_mesh = false
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[]
[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 = 10
nl_rel_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
file_base = gps_xz_small_out
exodus = true
[]
(modules/tensor_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]
[./TensorMechanics]
[../]
[]
[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/tensor_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]
[./TensorMechanics]
[../]
[]
[Modules]
[./TensorMechanics]
[./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/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_basicthm.i)
# Identical to pp_generation_unconfined_fullysat_volume.i but using an Action
#
# 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
[]
[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]
[source]
type = BodyForce
function = 0.1
variable = porepressure
[]
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 3.3333333333
viscosity = 1.0
density0 = 1.0
[]
[]
[]
[PorousFlowBasicTHM]
coupling_type = HydroMechanical
displacements = 'disp_x disp_y disp_z'
multiply_by_density = false
porepressure = porepressure
biot_coefficient = 0.3
gravity = '0 0 0'
fp = the_simple_fluid
save_component_rate_in = nodal_m3_per_s
[]
[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
[]
[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
PorousFlowDictator = dictator
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
PorousFlowDictator = dictator
biot_coefficient = 0.3
fluid_bulk_modulus = 3.3333333333
solid_bulk_compliance = 0.5
[]
[permeability_irrelevant]
type = PorousFlowPermeabilityConst
PorousFlowDictator = dictator
permeability = '1.5 0 0 0 1.5 0 0 0 1.5'
[]
[]
[AuxVariables]
[nodal_m3_per_s]
[]
[]
[Postprocessors]
[nodal_m3_per_s]
type = PointValue
outputs = csv
point = '0 0 0'
variable = nodal_m3_per_s
[]
[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
value = a/b
vars = 'a b'
vals = 'stress_xx zdisp'
[]
[stress_zz_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = 'stress_zz zdisp'
[]
[p_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = '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_basicthm
[csv]
type = CSV
[]
[]
(modules/tensor_mechanics/test/tests/2D_different_planes/gps_jacobian_testing_xz.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = square_xz_plane.e
[]
[Variables]
[./disp_x]
[../]
[./disp_z]
[../]
[./scalar_strain_yy]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./generalized_plane_strain]
block = 1
strain = SMALL
scalar_out_of_plane_strain = scalar_strain_yy
out_of_plane_direction = y
planar_formulation = GENERALIZED_PLANE_STRAIN
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.0
youngs_modulus = 1
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
end_time = 1.0
[]
(modules/tensor_mechanics/test/tests/global_strain/global_strain_action.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
[]
[]
[GlobalParams]
displacements = 'u_x u_y u_z'
block = 0
[]
[Variables]
[./global_strain]
order = SIXTH
family = SCALAR
[../]
[]
[Modules]
[./TensorMechanics]
# Master action for generating the tensor mechanics kernels, variables,
# strain calculation material, and the auxilliary system for visualization
[./Master]
[./stress_div]
strain = SMALL
add_variables = true
global_strain = global_strain #global strain contribution
generate_output = 'strain_xx strain_xy strain_yy stress_xx stress_xy
stress_yy vonmises_stress'
[../]
[../]
# GlobalStrain action for generating the objects associated with the global
# strain calculation and associated displacement visualization
[./GlobalStrain]
[./global_strain]
scalar_global_strain = global_strain
displacements = 'u_x u_y u_z'
auxiliary_displacements = 'disp_x disp_y disp_z'
global_displacements = 'ug_x ug_y ug_z'
[../]
[../]
[../]
[]
[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
[../]
[./centerfix_z]
type = DirichletBC
boundary = 100
variable = u_z
value = 0
[../]
# applied displacement
[./appl_y]
type = DirichletBC
boundary = top
variable = u_y
value = 0.033
[../]
[./fix_y]
type = DirichletBC
boundary = bottom
variable = u_y
value = 0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '7 0.33'
fill_method = symmetric_isotropic_E_nu
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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/porous_flow/test/tests/poro_elasticity/terzaghi_constM.i)
# Terzaghi's problem of consolodation of a drained medium
#
# A saturated soil sample sits in a bath of water.
# It is constrained on its sides, and bottom.
# Its sides and bottom are also impermeable.
# Initially it is unstressed.
# A normal stress, q, is applied to the soil's top.
# The soil then slowly compresses as water is squeezed
# out from the sample from its top (the top BC for
# the porepressure is porepressure = 0).
#
# See, for example. Section 2.2 of the online manuscript
# Arnold Verruijt "Theory and Problems of Poroelasticity" Delft University of Technology 2013
# but note that the "sigma" in that paper is the negative
# of the stress in TensorMechanics
#
# Here are the problem's parameters, and their values:
# Soil height. h = 10
# Soil's Lame lambda. la = 2
# Soil's Lame mu, which is also the Soil's shear modulus. mu = 3
# Soil bulk modulus. K = la + 2*mu/3 = 4
# Soil confined compressibility. m = 1/(K + 4mu/3) = 0.125
# Soil bulk compliance. 1/K = 0.25
# Fluid bulk modulus. Kf = 8
# Fluid bulk compliance. 1/Kf = 0.125
# Fluid mobility (soil permeability/fluid viscosity). k = 1.5
# Soil initial porosity. phi0 = 0.1
# Biot coefficient. alpha = 0.6
# Soil initial storativity, which is the reciprocal of the initial Biot modulus. S = phi0/Kf + (alpha - phi0)(1 - alpha)/K = 0.0625
# Consolidation coefficient. c = k/(S + alpha^2 m) = 13.95348837
# Normal stress on top. q = 1
# Initial porepressure, resulting from instantaneous application of q, assuming corresponding instantaneous increase of porepressure (Note that this is calculated by MOOSE: we only need it for the analytical solution). p0 = alpha*m*q/(S + alpha^2 m) = 0.69767442
# Initial vertical displacement (down is positive), resulting from instantaneous application of q (Note this is calculated by MOOSE: we only need it for the analytical solution). uz0 = q*m*h*S/(S + alpha^2 m)
# Final vertical displacement (down in positive) (Note this is calculated by MOOSE: we only need it for the analytical solution). uzinf = q*m*h
#
# The solution for porepressure is
# P = 4*p0/\pi \sum_{k=1}^{\infty} \frac{(-1)^{k-1}}{2k-1} \cos ((2k-1)\pi z/(2h)) \exp(-(2k-1)^2 \pi^2 ct/(4 h^2))
# This series converges very slowly for ct/h^2 small, so in that domain
# P = p0 erf( (1-(z/h))/(2 \sqrt(ct/h^2)) )
#
# The degree of consolidation is defined as
# U = (uz - uz0)/(uzinf - uz0)
# where uz0 and uzinf are defined above, and
# uz = the vertical displacement of the top (down is positive)
# U = 1 - (8/\pi^2)\sum_{k=1}^{\infty} \frac{1}{(2k-1)^2} \exp(-(2k-1)^2 \pi^2 ct/(4 h^2))
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 10
xmin = -1
xmax = 1
ymin = -1
ymax = 1
zmin = 0
zmax = 10
[]
[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 = 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'
[]
[basefixed]
type = DirichletBC
variable = disp_z
value = 0
boundary = back
[]
[topdrained]
type = DirichletBC
variable = porepressure
value = 0
boundary = front
[]
[topload]
type = NeumannBC
variable = disp_z
value = -1
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.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
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 8
density0 = 1
thermal_expansion = 0
viscosity = 0.96
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
# bulk modulus is lambda + 2*mu/3 = 2 + 2*3/3 = 4
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 = 4
constant_fluid_bulk_modulus = 8
constant_biot_modulus = 16
[]
[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'
variable = porepressure
use_displaced_mesh = false
[]
[p1]
type = PointValue
outputs = csv
point = '0 0 1'
variable = porepressure
use_displaced_mesh = false
[]
[p2]
type = PointValue
outputs = csv
point = '0 0 2'
variable = porepressure
use_displaced_mesh = false
[]
[p3]
type = PointValue
outputs = csv
point = '0 0 3'
variable = porepressure
use_displaced_mesh = false
[]
[p4]
type = PointValue
outputs = csv
point = '0 0 4'
variable = porepressure
use_displaced_mesh = false
[]
[p5]
type = PointValue
outputs = csv
point = '0 0 5'
variable = porepressure
use_displaced_mesh = false
[]
[p6]
type = PointValue
outputs = csv
point = '0 0 6'
variable = porepressure
use_displaced_mesh = false
[]
[p7]
type = PointValue
outputs = csv
point = '0 0 7'
variable = porepressure
use_displaced_mesh = false
[]
[p8]
type = PointValue
outputs = csv
point = '0 0 8'
variable = porepressure
use_displaced_mesh = false
[]
[p9]
type = PointValue
outputs = csv
point = '0 0 9'
variable = porepressure
use_displaced_mesh = false
[]
[p99]
type = PointValue
outputs = csv
point = '0 0 10'
variable = porepressure
use_displaced_mesh = false
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 10'
variable = disp_z
use_displaced_mesh = false
[]
[dt]
type = FunctionValuePostprocessor
outputs = console
function = if(0.5*t<0.1,0.5*t,0.1)
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
[TimeStepper]
type = PostprocessorDT
postprocessor = dt
dt = 0.0001
[]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = terzaghi_constM
[csv]
type = CSV
[]
[]
(modules/tensor_mechanics/test/tests/2D_different_planes/planestrain_jacobian_testing_xy.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
file = square_xy_plane.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./plane_strain]
block = 1
strain = SMALL
out_of_plane_direction = z
planar_formulation = PLANE_STRAIN
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.0
youngs_modulus = 1
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
end_time = 1.0
[]
(modules/tensor_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]
interval = 1
exodus = true
print_linear_residuals = false
[]
(modules/peridynamics/test/tests/jacobian_check/2D_thermomechanics_smallstrain_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
eigenstrain_names = thermal
[../]
[]
[Kernels]
[./heat]
type = HeatConductionBPD
variable = temp
[../]
[]
[Materials]
[./linelast]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.0
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
eigenstrain_names = thermal
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0.5
eigenstrain_name = thermal
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./thermal]
type = ThermalConstantHorizonMaterialBPD
thermal_conductivity = 1.0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(modules/xfem/test/tests/moving_interface/cut_mesh_2d.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[XFEM]
geometric_cut_userobjects = 'cut_mesh'
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 11
ny = 11
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = gen
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[AuxVariables]
[u]
[]
[]
[UserObjects]
[cut_mesh]
type = InterfaceMeshCut2DUserObject
mesh_file = circle_surface.e
interface_velocity_function = vel_func
heal_always = true
block = 2
[]
[]
[Functions]
[vel_func]
type = ConstantFunction
value = 0.011
[]
[]
[Modules/TensorMechanics/Master]
displacements = 'disp_x disp_y'
[all]
strain = SMALL
add_variables = true
incremental = false
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
displacements = 'disp_x disp_y'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[AuxVariables]
[ls]
[]
[]
[AuxKernels]
[ls]
type = MeshCutLevelSetAux
mesh_cut_user_object = cut_mesh
variable = ls
[]
[]
[BCs]
[box1_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = left
[]
[box1_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = left
[]
[box2_x]
type = FunctionDirichletBC
variable = disp_x
function = '0.01*t'
boundary = right
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 20
l_tol = 1e-3
nl_max_its = 15
nl_abs_tol = 1e-10
nl_rel_tol = 1e-12
start_time = 0.0
dt = 2
end_time = 2
max_xfem_update = 1
[]
[Outputs]
exodus = true
[]
(modules/peridynamics/test/tests/restart/2D_mesh_restartable_H1NOSPD_second.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
restart_file_base = 2D_mesh_restartable_hnospd_out_cp/LATEST
[]
[Mesh]
file = 2D_mesh_restartable_hnospd_out_cp/LATEST
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1003
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 1001
value = 0.001
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e8
poissons_ratio = 0.3
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = PJFNK
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
[Outputs]
file_base = 2D_mesh_restartable_H1NOSPD_second_out
exodus = true
[]
(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/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/tensor_mechanics/test/tests/2D_different_planes/planestrain_yz.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = square_yz_plane.e
[]
[Variables]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./disp_x]
[../]
[]
[Modules/TensorMechanics/Master]
[./plane_strain]
block = 1
strain = SMALL
out_of_plane_direction = x
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'eigenstrain'
generate_output = 'stress_xx stress_yz stress_yy stress_zz strain_xx strain_yz strain_yy strain_zz'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(1-y)*t'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 4
variable = disp_y
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 4
variable = disp_z
value = 0.0
[../]
[]
[Materials]
[./elastic_stress]
type = ComputeLinearElasticStress
block = 1
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[]
[Postprocessors]
[./react_x]
type = MaterialTensorIntegral
use_displaced_mesh = false
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[]
[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 = 10
nl_rel_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
file_base = planestrain_yz_small_out
exodus = true
[]
(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/contact/test/tests/hertz_spherical/hertz_contact.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]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]#Comment
file = hertz_contact.e
[] # 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
[../]
[./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
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./hydrostatic]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Modules/TensorMechanics/Master]
[./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 = 200
start_time = 0.0
dt = 0.5
end_time = 2.0
[] # Executioner
[Postprocessors]
[./maxdisp]
type = NodalVariableValue
nodeid = 122 # 123-1 where 123 is the exodus node number of the top-center node
variable = disp_y
[../]
[]
[Outputs]
[./out]
type = Exodus
[../]
[] # Outputs
(modules/peridynamics/test/tests/simple_tests/2D_small_strain_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 8
ny = 8
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1003
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 1001
function = '0.001*t'
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e8
poissons_ratio = 0.3
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
start_time = 0
end_time = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
[Outputs]
file_base = 2D_small_strain_H1NOSPD
exodus = true
[]
(modules/tensor_mechanics/test/tests/cohesive_zone_model/czm_traction_separation_base.i)
# base test to check the implemantation traction separation laws
# Loads are expressed using functions. See the czm_materials/3DC section in the
# test file for examples.
[Mesh]
[./msh]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 1
nz = 1
[]
[./subdomain_1]
type = SubdomainBoundingBoxGenerator
input = msh
bottom_left = '0 0 0'
block_id = 1
top_right = '0.5 1 1'
[]
[./subdomain_2]
type = SubdomainBoundingBoxGenerator
input = subdomain_1
bottom_left = '0.5 0 0'
block_id = 2
top_right = '1 1 1'
[]
[./breakmesh]
input = subdomain_2
type = BreakMeshByBlockGenerator
[../]
[add_side_sets]
input = breakmesh
type = SideSetsFromNormalsGenerator
normals = '0 -1 0
0 1 0
-1 0 0
1 0 0
0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'y0 y1 x0 x1 z0 z1'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_yz stress_xz stress_xy'
[../]
[]
[Modules/TensorMechanics/CohesiveZoneMaster]
[./czm1]
strain = SMALL
boundary = 'interface'
generate_output = 'traction_x traction_y traction_z normal_traction tangent_traction jump_x jump_y jump_z normal_jump tangent_jump'
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = x0
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = x0
value = 0.0
[../]
[./left_z]
type = DirichletBC
variable = disp_z
preset = false
boundary = x0
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
preset = false
boundary = x1
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = x1
[../]
[./right_z]
type = FunctionDirichletBC
variable = disp_z
preset = false
boundary = x1
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = '1 2'
fill_method = symmetric_isotropic
C_ijkl = '0.3 0.5e8'
[../]
[./stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[./czm_mat]
boundary = 'interface'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
solve_type = NEWTON
nl_abs_tol = 1e-8
nl_rel_tol = 1e-6
nl_max_its = 5
l_tol = 1e-10
l_max_its = 50
start_time = 0.0
dt = 0.2
end_time = 3
dtmin = 0.2
line_search = none
[]
[Outputs]
[./out]
type = Exodus
[../]
[]
(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
[../]
[]
[Modules]
[./TensorMechanics]
[./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
value = '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/tensor_mechanics/test/tests/1D_axisymmetric/axisymmetric_gps_small.i)
#
# This test checks the generalized plane strain using small strain formulation.
# The model consists of two sets of line elements. One undergoes a temperature rise of 100 with
# the other seeing a temperature rise of 300. Young's modulus is 3600, and
# Poisson's ratio is 0.2. The thermal expansion coefficient is 1e-8. All
# nodes are constrained against movement.
#
# For plane strain case, i.e., without constraining the strain_yy to be uniform,
# the stress solution would be [-6e-3, -6e-3, -6e-3] and [-18e-3, -18e-3, -18e-3] (xx, yy, zz).
# The generalized plane strain kernels work to balance the force in y direction.
#
# With out of plane strain of 3e-6, the stress solution becomes
# [-3e-3, 6e-3, -3e-3] and [-15e-3, -6e-3, -15e-3] (xx, yy, zz). This gives
# a domain integral of out-of-plane stress to be zero.
#
[GlobalParams]
displacements = disp_x
scalar_out_of_plane_strain = scalar_strain_yy
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = lines.e
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 580.0
[]
[scalar_strain_yy]
order = FIRST
family = SCALAR
[]
[]
[Functions]
[temp100]
type = PiecewiseLinear
x = '0 1'
y = '580 680'
[]
[temp300]
type = PiecewiseLinear
x = '0 1'
y = '580 880'
[]
[]
[Kernels]
[heat]
type = Diffusion
variable = temp
[]
[]
[Modules/TensorMechanics/Master]
[gps]
planar_formulation = GENERALIZED_PLANE_STRAIN
scalar_out_of_plane_strain = scalar_strain_yy
strain = SMALL
generate_output = 'strain_xx strain_yy strain_zz stress_xx stress_yy stress_zz'
eigenstrain_names = eigenstrain
temperature = temp
[]
[]
[BCs]
[no_x]
type = DirichletBC
boundary = 1000
value = 0
variable = disp_x
[]
[temp100]
type = FunctionDirichletBC
variable = temp
function = temp100
boundary = 2
[]
[temp300]
type = FunctionDirichletBC
variable = temp
function = temp300
boundary = 3
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3600
poissons_ratio = 0.2
[]
[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-08
nl_max_its = 15
nl_abs_tol = 1e-10
start_time = 0
end_time = 1
num_steps = 1
[]
[Outputs]
exodus = true
console = true
[]
(modules/porous_flow/test/tests/jacobian/mass_vol_exp03.i)
# Tests the PorousFlowMassVolumetricExpansion kernel
# Fluid with constant bulk modulus, van-Genuchten capillary, HM porosity, multiply_by_density = false
[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'
block = 0
PorousFlowDictator = dictator
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[ICs]
[disp_x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[]
[disp_y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[]
[disp_z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[]
[p]
type = RandomIC
min = -1
max = 1
variable = porepressure
[]
[]
[BCs]
# necessary otherwise volumetric strain rate will be zero
[disp_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[disp_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'left right'
[]
[disp_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'left right'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
displacements = 'disp_x disp_y disp_z'
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
displacements = 'disp_x disp_y disp_z'
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
displacements = 'disp_x disp_y disp_z'
component = 2
[]
[poro]
type = PorousFlowMassVolumetricExpansion
fluid_component = 0
variable = porepressure
multiply_by_density = false
[]
[]
[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
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[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.5
solid_bulk = 1
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[]
[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
dt = 1E-5
[]
[Outputs]
execute_on = 'timestep_end'
file_base = jacobian2
exodus = false
[]
(modules/tensor_mechanics/tutorials/introduction/mech_step01.i)
#
# Initial single block mechanics input
# https://mooseframework.inl.gov/modules/tensor_mechanics/tutorials/introduction/step01.html
#
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Modules/TensorMechanics/Master]
[all]
add_variables = true
[]
[]
[Materials]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e9
poissons_ratio = 0.3
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Executioner]
type = Transient
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(modules/porous_flow/test/tests/jacobian/mass01_fully_saturated.i)
# FullySaturatedMassTimeDerivative
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y disp_z'
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.5
bulk_modulus = 1.5
density0 = 1.0
[]
[]
[]
[Variables]
[pp]
[]
[T]
[]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[ICs]
[disp_x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[]
[disp_y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[]
[disp_z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[]
[pp]
type = RandomIC
variable = pp
min = 0
max = 1
[]
[T]
type = RandomIC
variable = T
min = 0
max = 1
[]
[]
[BCs]
# necessary otherwise volumetric strain rate will be zero
[disp_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[disp_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'left right'
[]
[disp_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'left right'
[]
[]
[Kernels]
[mass0]
type = PorousFlowFullySaturatedMassTimeDerivative
variable = pp
coupling_type = ThermoHydroMechanical
biot_coefficient = 0.9
[]
[dummyT]
type = TimeDerivative
variable = T
[]
[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
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp disp_x disp_y disp_z T'
number_fluid_phases = 1
number_fluid_components = 1
[]
[simple1]
type = TensorMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1E20
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 2.0
shear_modulus = 3.0
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[temperature]
type = PorousFlowTemperature
temperature = T
[]
[ppss]
type = PorousFlow1PhaseFullySaturated
porepressure = pp
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = the_simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosityConst # only the initial vaue of this is ever used
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
biot_coefficient = 0.9
fluid_bulk_modulus = 1.5
solid_bulk_compliance = 0.5
[]
[thermal_expansion]
type = PorousFlowConstantThermalExpansionCoefficient
biot_coefficient = 0.9
fluid_coefficient = 0.5
drained_coefficient = 0.4
[]
[]
[Preconditioning]
[check]
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
dt = 1
end_time = 2
[]
[Outputs]
exodus = false
[]
(modules/peridynamics/test/tests/jacobian_check/weak_planestress_thermomechanics_smallstrain_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[./temp]
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
eigenstrain_names = thermal_strain
[../]
[]
[Kernels]
[./strain_zz]
type = WeakPlaneStressNOSPD
variable = strain_zz
eigenstrain_names = thermal_strain
[../]
[./heat_conduction]
type = HeatConductionBPD
variable = temp
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.3
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
eigenstrain_names = thermal_strain
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0.5
eigenstrain_name = thermal_strain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./thermal]
type = ThermalConstantHorizonMaterialBPD
thermal_conductivity = 1.0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(modules/tensor_mechanics/test/tests/dynamics/time_integration/newmark_action.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
use_displaced_mesh = false
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/DynamicMaster]
[all]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
strain = SMALL
density = 7750
generate_output = 'stress_yy strain_yy'
[]
[]
[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
[]
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '210 0'
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[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/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/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/tensor_mechanics/test/tests/dynamics/linear_constraint/disp_mid.i)
# Constraining secondary nodes to move a linear combination of primary nodes
#
# The test consists of a 2D rectangular block divided into two Quad elements
# (along its height) which have different material properties.
# A displacement of 2 m is applied to the top surface of the block in x direction and the
# bottom surface is held fixed.
# The nodes of the interface between the two elements will tend to move as
# dictated by the material models of the two elements.
# LinearNodalConstraint forces the interface nodes to move as a linear combination
# of the nodes on the top and bottom of the block.
# primary node ids and the corresponding weights are taken as input by the LinearNodalConstraint
# along with the secondary node set or secondary node ids.
# The constraint can be applied using either penalty or kinematic formulation.
# In this example, the final x displacement of the top surface is 2m and bottom surface is 0m.
# Therefore, the final x displacement of the interface nodes would be 0.25*top+0.75*bottom = 0.5m
[Mesh]
file=rect_mid.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[BCs]
[./top_2x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 2.0
[../]
[./top_2y]
type = DirichletBC
variable = disp_y
boundary = 10
value = 0.0
[../]
[./bottom_1]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./bottom_2]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[]
[Materials]
[./Elasticity_tensor_1]
type = ComputeElasticityTensor
block = 1
fill_method = 'symmetric_isotropic'
C_ijkl = '400. 200.'
[../]
[./strain_1]
type = ComputeSmallStrain
block = 1
displacements = 'disp_x disp_y'
[../]
[./stress_1]
type = ComputeLinearElasticStress
block = 1
[../]
[./density_1]
type = GenericConstantMaterial
block = 1
prop_names = 'density'
prop_values = '10.'
[../]
[./Elasticity_tensor_2]
type = ComputeElasticityTensor
block = 2
fill_method = 'symmetric_isotropic'
C_ijkl = '1000. 500.'
[../]
[./strain_2]
type = ComputeSmallStrain
block = 2
displacements = 'disp_x disp_y'
[../]
[./stress_2]
type = ComputeLinearElasticStress
block = 2
[../]
[./density_2]
type = GenericConstantMaterial
block = 2
prop_names = 'density'
prop_values = '10.'
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = ''
petsc_options_value = ''
line_search = 'none'
[]
[Constraints]
[./disp_x_1]
type = LinearNodalConstraint
variable = disp_x
primary = '0 5'
weights = '0.25 0.75'
# secondary_node_set = '2'
secondary_node_ids = '2 3'
penalty = 1e8
formulation = kinematic
[../]
[./disp_y_1]
type = LinearNodalConstraint
variable = disp_y
primary = '0 5'
weights = '0.25 0.75'
# secondary_node_set = '2'
secondary_node_ids = '2 3'
penalty = 1e8
formulation = kinematic
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp_1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_3]
type = NodalVariableValue
nodeid = 2
variable = disp_x
[../]
[./disp_4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_5]
type = NodalVariableValue
nodeid = 4
variable = disp_x
[../]
[./disp_6]
type = NodalVariableValue
nodeid = 5
variable = disp_x
[../]
[]
[Outputs]
exodus = true
print_linear_residuals = true
perf_graph = true
[./console]
type = Console
output_linear = 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/tensor_mechanics/test/tests/check_error/num_constants.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = cube.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./2_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./2_y]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./2_z]
type = DirichletBC
variable = disp_z
boundary = 2
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 1e6
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
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
[]
[Outputs]
file_base = out
exodus = true
[]
(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
[]
[]
[Modules]
[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/tensor_mechanics/test/tests/check_error/shear_modulus.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./2_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./2_y]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./2_z]
type = DirichletBC
variable = disp_z
boundary = 2
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
shear_modulus = -10.0
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
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
[]
[Outputs]
file_base = out
exodus = true
[]
(modules/combined/examples/phase_field-mechanics/Pattern1.i)
#
# Pattern example 1
#
# Phase changes driven by a combination mechanical (elastic) and chemical
# driving forces. In this three phase system a matrix phase, an oversized and
# an undersized precipitate phase compete. The chemical free energy favors a
# phase separation into either precipitate phase. A mix of both precipitate
# emerges to balance lattice expansion and contraction.
#
# This example demonstrates the use of
# * ACMultiInterface
# * SwitchingFunctionConstraintEta and SwitchingFunctionConstraintLagrange
# * DerivativeParsedMaterial
# * ElasticEnergyMaterial
# * DerivativeMultiPhaseMaterial
# * MultiPhaseStressMaterial
# which are the components to se up a phase field model with an arbitrary number
# of phases
#
[Mesh]
type = GeneratedMesh
dim = 2
nx = 80
ny = 80
nz = 0
xmin = -20
xmax = 20
ymin = -20
ymax = 20
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[GlobalParams]
# CahnHilliard needs the third derivatives
derivative_order = 3
enable_jit = true
displacements = 'disp_x disp_y'
[]
# AuxVars to compute the free energy density for outputting
[AuxVariables]
[./local_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./cross_energy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./local_free_energy]
type = TotalFreeEnergy
variable = local_energy
interfacial_vars = 'c'
kappa_names = 'kappa_c'
additional_free_energy = cross_energy
[../]
[./cross_terms]
type = CrossTermGradientFreeEnergy
variable = cross_energy
interfacial_vars = 'eta1 eta2 eta3'
kappa_names = 'kappa11 kappa12 kappa13
kappa21 kappa22 kappa23
kappa31 kappa32 kappa33'
[../]
[]
[Variables]
# Solute concentration variable
[./c]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = RandomIC
min = 0
max = 0.8
seed = 1235
[../]
[../]
# Order parameter for the Matrix
[./eta1]
order = FIRST
family = LAGRANGE
initial_condition = 0.5
[../]
# Order parameters for the 2 different inclusion orientations
[./eta2]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
[./eta3]
order = FIRST
family = LAGRANGE
initial_condition = 0.1
[../]
# Mesh displacement
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
# Lagrange-multiplier
[./lambda]
order = FIRST
family = LAGRANGE
initial_condition = 1.0
[../]
[]
[Kernels]
# Set up stress divergence kernels
[./TensorMechanics]
[../]
# Cahn-Hilliard kernels
[./c_res]
type = CahnHilliard
variable = c
f_name = F
args = 'eta1 eta2 eta3'
[../]
[./time]
type = TimeDerivative
variable = c
[../]
# Allen-Cahn and Lagrange-multiplier constraint kernels for order parameter 1
[./deta1dt]
type = TimeDerivative
variable = eta1
[../]
[./ACBulk1]
type = AllenCahn
variable = eta1
args = 'eta2 eta3 c'
mob_name = L1
f_name = F
[../]
[./ACInterface1]
type = ACMultiInterface
variable = eta1
etas = 'eta1 eta2 eta3'
mob_name = L1
kappa_names = 'kappa11 kappa12 kappa13'
[../]
[./lagrange1]
type = SwitchingFunctionConstraintEta
variable = eta1
h_name = h1
lambda = lambda
[../]
# Allen-Cahn and Lagrange-multiplier constraint kernels for order parameter 2
[./deta2dt]
type = TimeDerivative
variable = eta2
[../]
[./ACBulk2]
type = AllenCahn
variable = eta2
args = 'eta1 eta3 c'
mob_name = L2
f_name = F
[../]
[./ACInterface2]
type = ACMultiInterface
variable = eta2
etas = 'eta1 eta2 eta3'
mob_name = L2
kappa_names = 'kappa21 kappa22 kappa23'
[../]
[./lagrange2]
type = SwitchingFunctionConstraintEta
variable = eta2
h_name = h2
lambda = lambda
[../]
# Allen-Cahn and Lagrange-multiplier constraint kernels for order parameter 3
[./deta3dt]
type = TimeDerivative
variable = eta3
[../]
[./ACBulk3]
type = AllenCahn
variable = eta3
args = 'eta1 eta2 c'
mob_name = L3
f_name = F
[../]
[./ACInterface3]
type = ACMultiInterface
variable = eta3
etas = 'eta1 eta2 eta3'
mob_name = L3
kappa_names = 'kappa31 kappa32 kappa33'
[../]
[./lagrange3]
type = SwitchingFunctionConstraintEta
variable = eta3
h_name = h3
lambda = lambda
[../]
# Lagrange-multiplier constraint kernel for lambda
[./lagrange]
type = SwitchingFunctionConstraintLagrange
variable = lambda
etas = 'eta1 eta2 eta3'
h_names = 'h1 h2 h3'
epsilon = 1e-6
[../]
[]
[Materials]
# declare a few constants, such as mobilities (L,M) and interface gradient prefactors (kappa*)
[./consts]
type = GenericConstantMaterial
prop_names = 'M kappa_c L1 L2 L3 kappa11 kappa12 kappa13 kappa21 kappa22 kappa23 kappa31 kappa32 kappa33'
prop_values = '0.2 0 1 1 1 2.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00 '
[../]
# We use this to output the level of constraint enforcement
# ideally it should be 0 everywhere, if the constraint is fully enforced
[./etasummat]
type = ParsedMaterial
f_name = etasum
args = 'eta1 eta2 eta3'
material_property_names = 'h1 h2 h3'
function = 'h1+h2+h3-1'
outputs = exodus
[../]
# This parsed material creates a single property for visualization purposes.
# It will be 0 for phase 1, -1 for phase 2, and 1 for phase 3
[./phasemap]
type = ParsedMaterial
f_name = phase
args = 'eta2 eta3'
function = 'if(eta3>0.5,1,0)-if(eta2>0.5,1,0)'
outputs = exodus
[../]
# matrix phase
[./elasticity_tensor_1]
type = ComputeElasticityTensor
base_name = phase1
C_ijkl = '3 3'
fill_method = symmetric_isotropic
[../]
[./strain_1]
type = ComputeSmallStrain
base_name = phase1
displacements = 'disp_x disp_y'
[../]
[./stress_1]
type = ComputeLinearElasticStress
base_name = phase1
[../]
# oversized phase
[./elasticity_tensor_2]
type = ComputeElasticityTensor
base_name = phase2
C_ijkl = '7 7'
fill_method = symmetric_isotropic
[../]
[./strain_2]
type = ComputeSmallStrain
base_name = phase2
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[./stress_2]
type = ComputeLinearElasticStress
base_name = phase2
[../]
[./eigenstrain_2]
type = ComputeEigenstrain
base_name = phase2
eigen_base = '0.02'
eigenstrain_name = eigenstrain
[../]
# undersized phase
[./elasticity_tensor_3]
type = ComputeElasticityTensor
base_name = phase3
C_ijkl = '7 7'
fill_method = symmetric_isotropic
[../]
[./strain_3]
type = ComputeSmallStrain
base_name = phase3
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[./stress_3]
type = ComputeLinearElasticStress
base_name = phase3
[../]
[./eigenstrain_3]
type = ComputeEigenstrain
base_name = phase3
eigen_base = '-0.05'
eigenstrain_name = eigenstrain
[../]
# switching functions
[./switching1]
type = SwitchingFunctionMaterial
function_name = h1
eta = eta1
h_order = SIMPLE
[../]
[./switching2]
type = SwitchingFunctionMaterial
function_name = h2
eta = eta2
h_order = SIMPLE
[../]
[./switching3]
type = SwitchingFunctionMaterial
function_name = h3
eta = eta3
h_order = SIMPLE
[../]
[./barrier]
type = MultiBarrierFunctionMaterial
etas = 'eta1 eta2 eta3'
[../]
# chemical free energies
[./chemical_free_energy_1]
type = DerivativeParsedMaterial
f_name = Fc1
function = '4*c^2'
args = 'c'
derivative_order = 2
[../]
[./chemical_free_energy_2]
type = DerivativeParsedMaterial
f_name = Fc2
function = '(c-0.9)^2-0.4'
args = 'c'
derivative_order = 2
[../]
[./chemical_free_energy_3]
type = DerivativeParsedMaterial
f_name = Fc3
function = '(c-0.9)^2-0.5'
args = 'c'
derivative_order = 2
[../]
# elastic free energies
[./elastic_free_energy_1]
type = ElasticEnergyMaterial
base_name = phase1
f_name = Fe1
derivative_order = 2
args = 'c' # should be empty
[../]
[./elastic_free_energy_2]
type = ElasticEnergyMaterial
base_name = phase2
f_name = Fe2
derivative_order = 2
args = 'c' # should be empty
[../]
[./elastic_free_energy_3]
type = ElasticEnergyMaterial
base_name = phase3
f_name = Fe3
derivative_order = 2
args = 'c' # should be empty
[../]
# phase free energies (chemical + elastic)
[./phase_free_energy_1]
type = DerivativeSumMaterial
f_name = F1
sum_materials = 'Fc1 Fe1'
args = 'c'
derivative_order = 2
[../]
[./phase_free_energy_2]
type = DerivativeSumMaterial
f_name = F2
sum_materials = 'Fc2 Fe2'
args = 'c'
derivative_order = 2
[../]
[./phase_free_energy_3]
type = DerivativeSumMaterial
f_name = F3
sum_materials = 'Fc3 Fe3'
args = 'c'
derivative_order = 2
[../]
# global free energy
[./free_energy]
type = DerivativeMultiPhaseMaterial
f_name = F
fi_names = 'F1 F2 F3'
hi_names = 'h1 h2 h3'
etas = 'eta1 eta2 eta3'
args = 'c'
W = 3
[../]
# Generate the global stress from the phase stresses
[./global_stress]
type = MultiPhaseStressMaterial
phase_base = 'phase1 phase2 phase3'
h = 'h1 h2 h3'
[../]
[]
[BCs]
# the boundary conditions on the displacement enforce periodicity
# at zero total shear and constant volume
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = 'top'
value = 0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 'right'
value = 0
[../]
[./Periodic]
[./disp_x]
auto_direction = 'y'
[../]
[./disp_y]
auto_direction = 'x'
[../]
# all other phase field variables are fully periodic
[./c]
auto_direction = 'x y'
[../]
[./eta1]
auto_direction = 'x y'
[../]
[./eta2]
auto_direction = 'x y'
[../]
[./eta3]
auto_direction = 'x y'
[../]
[./lambda]
auto_direction = 'x y'
[../]
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
# We monitor the total free energy and the total solute concentration (should be constant)
[Postprocessors]
[./total_free_energy]
type = ElementIntegralVariablePostprocessor
variable = local_energy
[../]
[./total_solute]
type = ElementIntegralVariablePostprocessor
variable = c
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm ilu'
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 = 0.1
[../]
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[./table]
type = CSV
delimiter = ' '
[../]
[]
[Debug]
# show_var_residual_norms = true
[]
(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
[]
[]
[Modules]
[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/porous_flow/test/tests/poro_elasticity/pp_generation_action.i)
# Same as pp_generation.i, but using an Action
#
# 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
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 13.0
viscosity = 1.0
density0 = 1.0
[]
[]
[]
[PorousFlowUnsaturated]
coupling_type = HydroMechanical
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
biot_coefficient = 0.3
gravity = '0 0 0'
fp = the_simple_fluid
van_genuchten_alpha = 1.0
van_genuchten_m = 0.8
relative_permeability_type = Corey
relative_permeability_exponent = 0.0
save_component_rate_in = nodal_kg_per_s
[]
[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]
[source]
type = BodyForce
function = 0.1
variable = porepressure
[]
[]
[AuxVariables]
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[nodal_kg_per_s]
[]
[]
[AuxKernels]
[porosity]
type = PorousFlowPropertyAux
variable = porosity
property = porosity
[]
[]
[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
[]
[stress]
type = ComputeLinearElasticStress
[]
[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
[]
[]
[Functions]
[porosity_analytic]
type = ParsedFunction
value = 'biot+(phi0-biot)*exp(pp*(biot-1)/bulk)'
vars = 'biot phi0 pp bulk'
vals = '0.3 0.1 p0 2'
[]
[]
[Postprocessors]
[nodal_kg_per_s]
type = PointValue
outputs = csv
point = '0 0 0'
variable = nodal_kg_per_s
[]
[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_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_action
csv = true
[]
(modules/tensor_mechanics/tutorials/introduction/mech_step03a.i)
#
# Added subdomains and subdomain-specific properties
# https://mooseframework.inl.gov/modules/tensor_mechanics/tutorials/introduction/step03.html
#
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 20
xmin = -0.25
xmax = 0.25
ymax = 5
[]
[block1]
type = SubdomainBoundingBoxGenerator
input = generated
block_id = 1
bottom_left = '-0.25 0 0'
top_right = '0 5 0'
[]
[block2]
type = SubdomainBoundingBoxGenerator
input = block1
block_id = 2
bottom_left = '0 0 0'
top_right = '0.25 5 0'
[]
# select a single node in the center of the bottom boundary
[pin]
type = ExtraNodesetGenerator
input = block2
new_boundary = pin
coord = '0 0 0'
[]
[]
[AuxVariables]
[T]
[]
[]
[AuxKernels]
[temperature_ramp]
type = FunctionAux
execute_on = TIMESTEP_BEGIN
variable = T
function = 300+5*t
[]
[]
[Modules/TensorMechanics/Master]
[all]
add_variables = true
automatic_eigenstrain_names = true
generate_output = 'vonmises_stress'
[]
[]
[BCs]
[pin_x]
type = DirichletBC
variable = disp_x
boundary = pin
value = 0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[]
[Materials]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e9
poissons_ratio = 0.3
[]
[expansion1]
type = ComputeThermalExpansionEigenstrain
temperature = T
thermal_expansion_coeff = 0.001
stress_free_temperature = 300
eigenstrain_name = thermal_expansion
block = 1
[]
[expansion2]
type = ComputeThermalExpansionEigenstrain
temperature = T
thermal_expansion_coeff = 0.002
stress_free_temperature = 300
eigenstrain_name = thermal_expansion
block = 2
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(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
function = '0.3*c^2'
f_name = weight1
args = c
[../]
[./weight2]
type = DerivativeParsedMaterial
function = '0.3*(1-c)^2'
f_name = weight2
args = c
[../]
[./weight3]
type = DerivativeParsedMaterial
function = '4*(0.5-c)^2'
f_name = weight3
args = 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
f_name = Fc
function = '4*c^2*(1-c)^2'
args = '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
f_name = F
sum_materials = 'Fc Fe'
args = '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/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/tensor_mechanics/test/tests/2D_different_planes/gps_jacobian_testing_yz.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = square_yz_plane.e
[]
[Variables]
[./disp_y]
[../]
[./disp_z]
[../]
[./scalar_strain_xx]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[]
[Modules/TensorMechanics/Master]
[./generalized_plane_strain]
block = 1
strain = SMALL
scalar_out_of_plane_strain = scalar_strain_xx
out_of_plane_direction = x
planar_formulation = GENERALIZED_PLANE_STRAIN
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.0
youngs_modulus = 1
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
end_time = 1.0
[]
(modules/combined/test/tests/thermo_mech/thermo_mech.i)
#Run with 4 procs
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
temperature = temp
volumetric_locking_correction = true
[]
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 10.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./strain]
type = ComputeSmallStrain
eigenstrain_names = eigenstrain
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 0.0
thermal_expansion_coeff = 1e-5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = Density
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-14
l_tol = 1e-3
l_max_its = 100
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/porous_flow/test/tests/thm_rehbinder/free_outer.i)
[Mesh]
[annular]
type = AnnularMeshGenerator
nr = 40
nt = 16
rmin = 0.1
rmax = 1
dmin = 0.0
dmax = 90
growth_r = 1.1
[]
[make3D]
input = annular
type = MeshExtruderGenerator
bottom_sideset = bottom
top_sideset = top
extrusion_vector = '0 0 1'
num_layers = 1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
biot_coefficient = 1.0
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[temperature]
[]
[]
[BCs]
# sideset 1 = outer
# sideset 2 = cavity
# sideset 3 = ymin
# sideset 4 = xmin
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'top bottom'
[]
[ymin]
type = DirichletBC
variable = disp_y
value = 0
boundary = dmin
[]
[xmin]
type = DirichletBC
variable = disp_x
value = 0
boundary = dmax
[]
[cavity_temperature]
type = DirichletBC
variable = temperature
value = 1000
boundary = rmin
[]
[cavity_porepressure]
type = DirichletBC
variable = porepressure
value = 1E6
boundary = rmin
[]
[cavity_zero_effective_stress_x]
type = Pressure
variable = disp_x
function = 1E6
boundary = rmin
use_displaced_mesh = false
[]
[cavity_zero_effective_stress_y]
type = Pressure
variable = disp_y
function = 1E6
boundary = rmin
use_displaced_mesh = false
[]
[outer_temperature]
type = DirichletBC
variable = temperature
value = 0
boundary = rmax
[]
[outer_pressure]
type = DirichletBC
variable = porepressure
value = 0
boundary = rmax
[]
[]
[AuxVariables]
[stress_rr]
family = MONOMIAL
order = CONSTANT
[]
[stress_pp]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[stress_rr]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_rr
scalar_type = RadialStress
point1 = '0 0 0'
point2 = '0 0 1'
[]
[stress_pp]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_pp
scalar_type = HoopStress
point1 = '0 0 0'
point2 = '0 0 1'
[]
[]
[Modules]
[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 = ComputeSmallStrain
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'
[]
[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'
[]
[]
[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_x
[]
[]
[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 = free_outer
execute_on = timestep_end
csv = true
[]
(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
[Modules/TensorMechanics/Master]
[./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/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
[Modules/TensorMechanics/Master]
[./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/tensor_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_ref_resid.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Variables]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[./saved_x]
order = FIRST
family = LAGRANGE
[../]
[./saved_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
displacements = 'disp_x disp_y'
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
planar_formulation = GENERALIZED_PLANE_STRAIN
eigenstrain_names = eigenstrain
scalar_out_of_plane_strain = scalar_strain_zz
temperature = temp
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./saved_x]
type = TagVectorAux
variable = 'saved_x'
vector_tag = 'ref'
v = 'disp_x'
execute_on = timestep_end
[../]
[./saved_y]
type = TagVectorAux
variable = 'saved_y'
vector_tag = 'ref'
execute_on = timestep_end
v = 'disp_y'
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(1-x)*t'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-5
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
num_steps = 5000
[]
[Outputs]
exodus = 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
[]
[]
[Modules]
[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
value = a/b
vars = 'a b'
vals = 'stress_xx zdisp'
[]
[stress_zz_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = 'stress_zz zdisp'
[]
[p_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = '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/combined/test/tests/thermo_mech/thermo_mech_smp.i)
[GlobalParams]
temperature = temp
volumetric_locking_correction = true
[]
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 10.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = eigenstrain
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 0.0
thermal_expansion_coeff = 1e-5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = Density
density = 1.0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-14
l_tol = 1e-3
l_max_its = 100
dt = 1.0
end_time = 1.0
[]
[Outputs]
file_base = thermo_mech_smp_out
[./exodus]
type = Exodus
execute_on = 'initial timestep_end nonlinear'
nonlinear_residual_dt_divisor = 100
[../]
[]
(modules/tensor_mechanics/tutorials/basics/part_2.1.i)
#Tensor Mechanics tutorial: the basics
#Step 2, part 1
#2D axisymmetric RZ simulation of uniaxial tension linear elasticity
[GlobalParams]
displacements = 'disp_r disp_z' #change the variable names for the coordinate system
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = necking_quad4.e
uniform_refine = 1
[]
[Modules/TensorMechanics/Master]
[./block1]
strain = SMALL #detects the change in coordinate system and automatically sets the correct strain class
add_variables = true
generate_output = 'stress_zz vonmises_stress' #use stress_zz to get stress_theta quantity
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_r #change the variable to reflect the new displacement names
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_z #change the variable to reflect the new displacement names
boundary = bottom
value = 0.0
[../]
[./top]
type = DirichletBC
variable = disp_z #change the variable to reflect the new displacement names
boundary = top
value = 0.0035
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'asm lu 1 101'
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/tensor_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]
[./TensorMechanics]
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
value = '0.5*z' # initial stress that should result from the weight force
[../]
[./kxx]
type = ParsedFunction
value = '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/tensor_mechanics/test/tests/check_error/youngs_modulus.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./2_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./2_y]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./2_z]
type = DirichletBC
variable = disp_z
boundary = 2
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = -1e6
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
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
[]
[Outputs]
file_base = out
exodus = 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
[../]
[]
[Modules]
[./TensorMechanics]
[./Master]
[./All]
add_variables = true
strain = SMALL
planar_formulation = PLANE_STRAIN
additional_generate_output = 'stress_yy'
strain_base_name = uncracked
[../]
[../]
[../]
[./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/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
[Modules/TensorMechanics/Master]
[./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/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/porous_flow/test/tests/jacobian/fflux08.i)
# 1phase, 1component, constant viscosity, Kozeny-Carman permeability
# density with constant bulk, Corey relative perm, nonzero gravity, unsaturated with vanGenuchten
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pp]
[]
[]
[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
[]
[pp]
type = RandomIC
variable = pp
min = -1
max = 1
[]
[]
[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
[]
[flux0]
type = PorousFlowAdvectiveFlux
fluid_component = 0
variable = pp
gravity = '-1 -0.1 0'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1.5
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
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
porosity_zero = 0.1
biot_coefficient = 0.5
solid_bulk = 1
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pp
capillary_pressure = pc
[]
[massfrac]
type = PorousFlowMassFraction
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[permeability]
type = PorousFlowPermeabilityKozenyCarman
poroperm_function = kozeny_carman_phi0
k_anisotropy = '1 0 0 0 2 0 0 0 3'
phi0 = 0.1
n = 1.0
m = 2.0
k0 = 2
[]
[relperm]
type = PorousFlowRelativePermeabilityCorey
n = 2
phase = 0
[]
[]
[Preconditioning]
active = check
[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-15 1E-10 10000'
[]
[check]
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
dt = 1
end_time = 1
[]
[Outputs]
exodus = false
[]
(modules/porous_flow/examples/tidal/barometric_fully_confined.i)
# A fully-confined aquifer is fully saturated with water
# Barometric loading is applied to the aquifer.
# Because the aquifer is assumed to be sandwiched between
# impermeable aquitards, the barometric pressure is not felt
# directly by the porepressure. Instead, the porepressure changes
# only because the barometric loading applies a total stress to
# the top surface of the aquifer.
#
# To replicate standard poroelasticity exactly:
# (1) the PorousFlowBasicTHM Action is used;
# (2) multiply_by_density = false;
# (3) PorousFlowConstantBiotModulus 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'
PorousFlowDictator = dictator
block = 0
biot_coefficient = 0.6
multiply_by_density = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[fix_x]
type = DirichletBC
variable = disp_x
value = 0.0
boundary = 'left right'
[]
[fix_y]
type = DirichletBC
variable = disp_y
value = 0.0
boundary = 'bottom top'
[]
[fix_z_bottom]
type = DirichletBC
variable = disp_z
value = 0.0
boundary = back
[]
[barometric_loading]
type = FunctionNeumannBC
variable = disp_z
function = -1000.0 # atmospheric pressure increase of 1kPa
boundary = front
[]
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
[]
[]
[]
[PorousFlowBasicTHM]
coupling_type = HydroMechanical
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
gravity = '0 0 0'
fp = the_simple_fluid
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 10.0E9 # drained bulk modulus
poissons_ratio = 0.25
[]
[strain]
type = ComputeSmallStrain
[]
[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 = 2E9
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-12 0 0 0 1E-12 0 0 0 1E-12'
[]
[]
[Postprocessors]
[pp]
type = PointValue
point = '0.5 0.5 0.5'
variable = porepressure
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1
end_time = 1
[]
[Outputs]
console = true
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
[]
[Problem]
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
[]
[]
[Modules]
[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/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
value = 'r:=sqrt(x^2+y^2+z^2);0.5*(1.0-tanh((r-r0)/delta_eta/sqrt(2.0)))'
vars = 'delta_eta r0'
vals = '6.431 100'
[../]
[./ic_func_c]
type = ParsedFunction
value = '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))'
vars = 'delta r0'
vals = '6.431 100'
[../]
[]
[Modules/TensorMechanics/Master]
[./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
f_name = fm
args = 'cm'
function = '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
f_name = f_total_matrix
sum_materials = 'fm fe_m'
args = 'cm'
[../]
# Free energy of the precipitate phase
[./fp]
type = DerivativeParsedMaterial
f_name = fp
args = 'cp'
function = '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
f_name = f_total_ppt
sum_materials = 'fp fe_p'
args = '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/combined/examples/phase_field-mechanics/EBSD_reconstruction_grain_growth_mech.i)
# This example reconstructs the grain structure from an EBSD data file
# Then, an isotropic grain model is run with linear elasticity and an anisotropic
# elasticity tensor that uses the measured EBSD angles.
[Mesh]
[ebsd_mesh]
type = EBSDMeshGenerator
uniform_refine = 2 #Mesh can go two levels coarser than the EBSD grid
filename = IN100_128x128.txt
[]
[]
[GlobalParams]
op_num = 8
var_name_base = gr
displacements = 'disp_x disp_y'
[]
[Variables]
[PolycrystalVariables] #Polycrystal variable generation (30 order parameters)
[]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[bnds]
[]
[gt_indices]
order = CONSTANT
family = MONOMIAL
[]
[unique_grains]
order = CONSTANT
family = MONOMIAL
[]
[vonmises_stress]
order = CONSTANT
family = MONOMIAL
[]
[C1111]
order = CONSTANT
family = MONOMIAL
[]
[phi1]
order = CONSTANT
family = MONOMIAL
[]
[Phi]
order = CONSTANT
family = MONOMIAL
[]
[phi2]
order = CONSTANT
family = MONOMIAL
[]
[EBSD_grain]
family = MONOMIAL
order = CONSTANT
[]
[]
[ICs]
[PolycrystalICs]
[ReconVarIC]
ebsd_reader = ebsd
coloring_algorithm = bt
[]
[]
[]
[Kernels]
[PolycrystalKernel]
[]
[PolycrystalElasticDrivingForce]
[]
[TensorMechanics]
[]
[]
[AuxKernels]
[BndsCalc]
type = BndsCalcAux
variable = bnds
execute_on = 'initial timestep_end'
[]
[gt_indices]
type = FeatureFloodCountAux
variable = gt_indices
execute_on = 'initial timestep_end'
flood_counter = grain_tracker
field_display = VARIABLE_COLORING
[]
[unique_grains]
type = FeatureFloodCountAux
variable = unique_grains
execute_on = 'initial timestep_end'
flood_counter = grain_tracker
field_display = UNIQUE_REGION
[]
[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
[]
[phi1]
type = OutputEulerAngles
variable = phi1
euler_angle_provider = ebsd
grain_tracker = grain_tracker
output_euler_angle = 'phi1'
execute_on = 'initial'
[]
[Phi]
type = OutputEulerAngles
variable = Phi
euler_angle_provider = ebsd
grain_tracker = grain_tracker
output_euler_angle = 'Phi'
execute_on = 'initial'
[]
[phi2]
type = OutputEulerAngles
variable = phi2
euler_angle_provider = ebsd
grain_tracker = grain_tracker
output_euler_angle = 'phi2'
execute_on = 'initial'
[]
[grain_aux]
type = EBSDReaderPointDataAux
variable = EBSD_grain
ebsd_reader = ebsd
data_name = 'feature_id'
execute_on = 'initial'
[]
[]
[BCs]
[top_displacement]
type = DirichletBC
variable = disp_y
boundary = top
value = -2.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
[]
[]
[Modules]
[PhaseField]
[EulerAngles2RGB]
crystal_structure = cubic
euler_angle_provider = ebsd
grain_tracker = grain_tracker
[]
[]
[]
[Materials]
[Copper]
# T = 500 # K
type = GBEvolution
block = 0
T = 500
wGB = 0.6 # um
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
molar_volume = 7.11e-6; # Molar volume in m^3/mol
length_scale = 1.0e-6
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
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[n_elements]
type = NumElems
execute_on = 'initial timestep_end'
[]
[n_nodes]
type = NumNodes
execute_on = 'initial timestep_end'
[]
[DOFs]
type = NumDOFs
[]
[]
[UserObjects]
[ebsd]
type = EBSDReader
[]
[grain_tracker]
type = GrainTrackerElasticity
compute_var_to_feature_map = true
ebsd_reader = ebsd
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 = ebsd
[]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type -pc_hypre_boomeramg_strong_threshold'
petsc_options_value = ' hypre boomeramg 0.7'
l_tol = 1.0e-4
l_max_its = 20
nl_max_its = 20
nl_rel_tol = 1.0e-8
start_time = 0.0
num_steps = 30
dt = 10
[Adaptivity]
initial_adaptivity = 0
refine_fraction = 0.7
coarsen_fraction = 0.1
max_h_level = 2
[]
[TimeStepper]
type = IterationAdaptiveDT
cutback_factor = 0.9
dt = 10.0
growth_factor = 1.1
optimal_iterations = 7
[]
[]
[Outputs]
csv = true
exodus = true
[]
(modules/porous_flow/test/tests/energy_conservation/heat05.i)
# Demonstrates that porosity is correctly initialised,
# since the residual should be zero in this example.
# If initQpStatefulProperties of the Porosity calculator
# is incorrect then the residual will be nonzero.
[Mesh]
type = GeneratedMesh
dim = 3
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.5
cv = 2
cp = 2
bulk_modulus = 2.0
density0 = 3.0
[]
[]
[]
[GlobalParams]
biot_coefficient = 0.7
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pp]
initial_condition = 0.5
[]
[temp]
initial_condition = 1.0
[]
[]
[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
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
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
[]
[]
[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
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]
[should_be_zero]
type = NumNonlinearIterations
[]
[]
[Executioner]
type = Transient
num_steps = 1
nl_abs_tol = 1e-16
[]
[Outputs]
file_base = heat05
csv = 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
args = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
function = '-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
[]
[]
[Modules]
[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]
interval = 3
type = CSV
[]
[]
(modules/porous_flow/test/tests/jacobian/mass_vol_exp02.i)
# Tests the PorousFlowMassVolumetricExpansion kernel
# Fluid with constant bulk modulus, van-Genuchten capillary, HM porosity
[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'
block = 0
PorousFlowDictator = dictator
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[ICs]
[disp_x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[]
[disp_y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[]
[disp_z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[]
[p]
type = RandomIC
min = -1
max = 1
variable = porepressure
[]
[]
[BCs]
# necessary otherwise volumetric strain rate will be zero
[disp_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[disp_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'left right'
[]
[disp_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'left right'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
displacements = 'disp_x disp_y disp_z'
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
displacements = 'disp_x disp_y disp_z'
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
displacements = 'disp_x disp_y disp_z'
component = 2
[]
[poro]
type = PorousFlowMassVolumetricExpansion
fluid_component = 0
variable = porepressure
[]
[]
[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
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[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.5
solid_bulk = 1
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[]
[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
dt = 1E-5
[]
[Outputs]
execute_on = 'timestep_end'
file_base = jacobian2
exodus = false
[]
(modules/tensor_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
[]
[Modules/TensorMechanics/Master]
[./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/tensor_mechanics/test/tests/thermal_expansion_function/small_linear.i)
# This tests the thermal expansion coefficient function using both
# options to specify that function: mean and instantaneous. There
# two blocks, each containing a single element, and these use the
# two variants of the function.
# In this test, the instantaneous CTE function is a linear function
# while the mean CTE function is an analytic function designed to
# give the same response. If \bar{alpha}(T) is the mean CTE function,
# and \alpha(T) is the instantaneous CTE function,
# \bar{\alpha}(T) = 1/(T-Tref) \intA^{T}_{Tsf} \alpha(T) dT
# where Tref is the reference temperature used to define the mean CTE
# function, and Tsf is the stress-free temperature.
# This version of the test uses small deformation theory. The results
# from the two models are identical.
[Mesh]
file = 'blocks.e'
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = 3
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
block = '1 2'
function = temp_func
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeLinearElasticStress
[../]
[./thermal_expansion_strain1]
type = ComputeMeanThermalExpansionFunctionEigenstrain
block = 1
thermal_expansion_function = cte_func_mean
thermal_expansion_function_reference_temperature = 0.5
stress_free_temperature = 0.0
temperature = temp
eigenstrain_name = eigenstrain
[../]
[./thermal_expansion_strain2]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = 2
thermal_expansion_function = cte_func_inst
stress_free_temperature = 0.0
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Functions]
[./cte_func_mean]
type = ParsedFunction
vars = 'tsf tref scale' #stress free temp, reference temp, scale factor
vals = '0.0 0.5 1e-4'
value = 'scale * (0.5 * t^2 - 0.5 * tsf^2) / (t - tref)'
[../]
[./cte_func_inst]
type = PiecewiseLinear
xy_data = '0 0.0
2 2.0'
scale_factor = 1e-4
[../]
[./temp_func]
type = PiecewiseLinear
xy_data = '0 1
1 2'
[../]
[]
[Postprocessors]
[./disp_1]
type = NodalExtremeValue
variable = disp_x
boundary = 101
[../]
[./disp_2]
type = NodalExtremeValue
variable = disp_x
boundary = 102
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_max_its = 100
l_tol = 1e-4
nl_abs_tol = 1e-8
nl_rel_tol = 1e-12
start_time = 0.0
end_time = 1.0
dt = 0.1
[]
[Outputs]
csv = true
[]
(modules/tensor_mechanics/test/tests/finite_strain_elastic/finite_strain_stress_errorcheck.i)
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
[../]
[]
[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.1
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0e10
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
dt = 0.05
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomeramg
dtmin = 0.05
num_steps = 1
[]
(modules/porous_flow/test/tests/jacobian/heat_vol_exp01.i)
# Tests the PorousFlowHeatVolumetricExpansion kernel
# Fluid with constant bulk modulus, van-Genuchten capillary, THM porosity
[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'
block = 0
PorousFlowDictator = dictator
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[temperature]
[]
[]
[ICs]
[disp_x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[]
[disp_y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[]
[disp_z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[]
[p]
type = RandomIC
min = -1
max = 0
variable = porepressure
[]
[t]
type = RandomIC
min = 1
max = 2
variable = temperature
[]
[]
[BCs]
# necessary otherwise volumetric strain rate will be zero
[disp_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[disp_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'left right'
[]
[disp_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'left right'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
displacements = 'disp_x disp_y disp_z'
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
displacements = 'disp_x disp_y disp_z'
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
displacements = 'disp_x disp_y disp_z'
component = 2
[]
[dummy]
type = TimeDerivative
variable = porepressure
[]
[temp]
type = PorousFlowHeatVolumetricExpansion
variable = temperature
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure temperature disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
cv = 1.3
[]
[]
[]
[Materials]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[temperature]
type = PorousFlowTemperature
temperature = temperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss_nodal]
type = PorousFlow1PhaseP
porepressure = porepressure
capillary_pressure = pc
[]
[simple_fluid]
type = PorousFlowSingleComponentFluid
fp = simple_fluid
phase = 0
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
thermal = true
porosity_zero = 0.1
biot_coefficient = 0.5
solid_bulk = 1
thermal_expansion_coeff = 0.1
reference_temperature = 0.1
reference_porepressure = 0.2
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1.1
density = 0.5
[]
[]
[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
dt = 1E-5
[]
[Outputs]
execute_on = 'timestep_end'
file_base = jacobian2
exodus = false
[]
(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
args = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
function = '-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
[]
[]
[Modules]
[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]
interval = 3
type = CSV
[]
[]
(modules/tensor_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
# DynamicTensorMechanics 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]
[./DynamicTensorMechanics] # 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
csv = true
perf_graph = true
[]
(modules/tensor_mechanics/test/tests/test_jacobian/jacobian_pressure_spherical.i)
[GlobalParams]
displacements = 'disp_x'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
nx = 2
xmin = 0.5
xmax = 1.5
[]
[]
[Problem]
coord_type = RSPHERICAL
[]
[Variables]
[disp_x]
[]
[]
[Modules/TensorMechanics/Master]
[all]
incremental = false
strain = SMALL
[]
[]
[BCs]
[disp_x]
type = Pressure
variable = disp_x
boundary = 'left right'
factor = 1e8
[]
[]
[Materials]
[stress]
type = ComputeLinearElasticStress
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3.7e11
poissons_ratio = 0.345
[]
[]
[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 4'
petsc_options = '-snes_test_jacobian -snes_test_jacobian_view'
line_search = 'none'
solve_type = NEWTON
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
dt = 1
[]
[Outputs]
exodus = true
[]
(modules/porous_flow/test/tests/jacobian/linear_por.i)
# Testing Jacobian resulting from PorousFlowPorosityLinear in a THM situation
[GlobalParams]
PorousFlowDictator = dictator
strain_at_nearest_qp = true
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
[]
[]
[Variables]
[pp]
initial_condition = 1
[]
[T]
initial_condition = 2
[]
[disp]
[]
[]
[ICs]
[disp]
type = FunctionIC
variable = disp
function = '3 * x'
[]
[]
[BCs]
[disp]
type = FunctionDirichletBC
boundary = 'left right top bottom front back'
variable = disp
function = '3 * x'
[]
[]
[PorousFlowFullySaturated]
coupling_type = ThermoHydroMechanical
fp = simple_fluid
porepressure = pp
temperature = T
displacements = 'disp disp disp'
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
[]
[]
[]
[Materials]
[porosity]
type = PorousFlowPorosityLinear
porosity_ref = 0.5
P_ref = 0.5
P_coeff = 1.0
T_ref = -3.0
T_coeff = 1.0
epv_ref = 2.5
epv_coeff = 1.0
[]
[perm]
type = PorousFlowPermeabilityConst
permeability = '0 0 0 0 0 0 0 0 0'
[]
[matrix_energy]
type = PorousFlowMatrixInternalEnergy
density = 0.0
specific_heat_capacity = 0.0
[]
[thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '0 0 0 0 0 0 0 0 0'
[]
[density]
type = GenericConstantMaterial
prop_names = density
prop_values = 0.0
[]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1E-99
poissons_ratio = 0
[]
[strain]
type = ComputeSmallStrain
displacements = 'disp disp disp'
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
num_steps = 1
# petsc_options = '-snes_test_jacobian -snes_force_iteration'
# petsc_options_iname = '-snes_type --ksp_type -pc_type -snes_convergence_test'
# petsc_options_value = ' ksponly preonly none skip'
[]
(modules/peridynamics/test/tests/plane_stress/weak_planestress_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
out_of_plane_strain = strain_zz
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 8
ny = 8
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1003
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 1001
value = 0.001
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[]
[Kernels]
[./strain_zz]
type = WeakPlaneStressNOSPD
variable = strain_zz
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e8
poissons_ratio = 0.3
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
start_time = 0
end_time = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
[Outputs]
file_base = weak_planestress_H1NOSPD
exodus = true
[]
(modules/tensor_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]
[./DynamicTensorMechanics]
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/porous_flow/test/tests/poro_elasticity/pp_generation_fullysat_action.i)
# Same as pp_generation.i, but using an Action
#
# 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
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 13.0
viscosity = 1.0
density0 = 1.0
[]
[]
[]
[PorousFlowFullySaturated]
coupling_type = HydroMechanical
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
biot_coefficient = 0.3
gravity = '0 0 0'
fp = the_simple_fluid
stabilization = none # not needed: there is no flow
save_component_rate_in = nodal_kg_per_s
[]
[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]
[source]
type = BodyForce
function = 0.1
variable = porepressure
[]
[]
[AuxVariables]
[nodal_kg_per_s]
[]
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[porosity]
type = PorousFlowPropertyAux
variable = porosity
property = porosity
[]
[]
[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
[]
[stress]
type = ComputeLinearElasticStress
[]
[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
[]
[]
[Functions]
[porosity_analytic]
type = ParsedFunction
value = 'biot+(phi0-biot)*exp(pp*(biot-1)/bulk)'
vars = 'biot phi0 pp bulk'
vals = '0.3 0.1 p0 2'
[]
[]
[Postprocessors]
[nodal_kg_per_s]
type = PointValue
point = ' 0 0 0'
variable = nodal_kg_per_s
outputs = csv
[]
[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_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_fullysat_action
csv = true
[]
(modules/tensor_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]
[TensorMechanics]
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/tensor_mechanics/test/tests/2D_different_planes/planestrain_jacobian_testing_yz.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = square_yz_plane.e
[]
[Variables]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[]
[Modules/TensorMechanics/Master]
[./plane_strain]
block = 1
strain = SMALL
out_of_plane_direction = x
planar_formulation = PLANE_STRAIN
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.0
youngs_modulus = 1
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
end_time = 1.0
[]
(modules/tensor_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]
[./TensorMechanics]
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/tensor_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]
[./DynamicTensorMechanics]
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/peridynamics/test/tests/jacobian_check/3D_mechanics_smallstrain_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 2
[./gmg]
type = GeneratedMeshGenerator
dim = 3
nx = 3
ny = 3
nz = 3
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(modules/combined/test/tests/reference_residual/group_variables.i)
[Mesh]
file = 2squares.e
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y;
scalar_strain_zz1 scalar_strain_zz2'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./scalar_strain_zz1]
order = FIRST
family = SCALAR
[../]
[./scalar_strain_zz2]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[./saved_x]
order = FIRST
family = LAGRANGE
[../]
[./saved_y]
order = FIRST
family = LAGRANGE
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./aux_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_scalar_strain_zz1]
order = FIRST
family = SCALAR
[../]
[./saved_scalar_strain_zz2]
order = FIRST
family = SCALAR
[../]
[]
[Postprocessors]
[./react_z1]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
block = 1
[../]
[./react_z2]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
block = 2
[../]
[]
[Modules]
[./TensorMechanics]
[./GeneralizedPlaneStrain]
[./gps1]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz1
block = '1'
[../]
[./gps2]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz2
block = '2'
[../]
[../]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = false
displacements = 'disp_x disp_y'
temperature = temp
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
block = '1 2'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./aux_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = aux_strain_zz
index_i = 2
index_j = 2
[../]
[]
[AuxScalarKernels]
[./saved_scalar_strain_zz1_ref_resid]
type = GeneralizedPlaneStrainReferenceResidual
variable = saved_scalar_strain_zz1
generalized_plane_strain = gps1_GeneralizedPlaneStrainUserObject
[../]
[./saved_scalar_strain_zz2_ref_resid]
type = GeneralizedPlaneStrainReferenceResidual
variable = saved_scalar_strain_zz2
generalized_plane_strain = gps2_GeneralizedPlaneStrainUserObject
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(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/tensor_mechanics/test/tests/thermal_expansion_function/dilatation.i)
# This test checks the thermal expansion calculated via an dilatation function.
# The coefficient is selected so as to result in a 1e-4 strain in the x-axis, and to cross over
# from positive to negative strain.
[Mesh]
[./gen]
type = GeneratedMeshGenerator
dim = 3
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
[../]
[]
[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
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
function = '1 + t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeDilatationThermalExpansionFunctionEigenstrain
dilatation_function = cte_dilatation
stress_free_temperature = 1.5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Functions]
[./cte_dilatation]
type = PiecewiseLinear
x = '1 2'
y = '-1e-4 1e-4'
[../]
[]
[Postprocessors]
[./disp_x_max]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./temp_avg]
type = ElementAverageValue
variable = temp
[../]
[]
[Executioner]
type = Transient
end_time = 1.0
dt = 0.1
[]
[Outputs]
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
args = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
function = '-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'
[]
[]
[Modules]
[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]
interval = 3
type = CSV
[]
[]
(modules/tensor_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
[]
[]
[Modules/TensorMechanics/DynamicMaster]
[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/tensor_mechanics/test/tests/check_error/bulk_modulus.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./2_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./2_y]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./2_z]
type = DirichletBC
variable = disp_z
boundary = 2
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = -1e6
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
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
[]
[Outputs]
exodus = true
[]
(modules/peridynamics/test/tests/jacobian_check/generalized_planestrain_smallstrain_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[Modules/Peridynamics/Mechanics]
[./Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[../]
[./GeneralizedPlaneStrain]
[./all]
formulation = NONORDINARY_STATE
[../]
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(modules/tensor_mechanics/test/tests/pressure/pressure_test.i)
#
# Pressure Test
#
# This test is designed to compute pressure loads on three faces of a unit cube.
#
# The mesh is composed of one block with a single element. Symmetry bcs are
# applied to the faces opposite the pressures. Poisson's ratio is zero,
# which makes it trivial to check displacements.
#
[Mesh]
type = FileMesh
file = pressure_test.e
displacements = 'disp_x disp_y disp_z'
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 1.0
[../]
[./zeroRamp]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 0. 1.'
scale_factor = 1.0
[../]
[./rampUnramp]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 0.'
scale_factor = 10.0
[../]
[]
[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'
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 5
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./Pressure]
[./Side1]
boundary = 1
function = rampConstant
displacements = 'disp_x disp_y disp_z'
[../]
[./Side2]
boundary = 2
function = zeroRamp
displacements = 'disp_x disp_y disp_z'
factor = 2.0
[../]
[./Side3]
boundary = 3
function = rampUnramp
displacements = 'disp_x disp_y disp_z'
[../]
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric_isotropic
C_ijkl = '0 0.5e6'
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
block = 1
[../]
[./stress]
type = ComputeLinearElasticStress
block = 1
[../]
[]
[Executioner]
type = Transient
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
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[]
(modules/porous_flow/test/tests/energy_conservation/heat03_rz.i)
# The sample is a single unit element in RZ coordinates
# A constant velocity is applied to the outer boundary: disp_r = -0.01*t.
# There is no fluid flow or heat flow.
# Heat energy conservation is checked.
# Mass conservation is checked
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmin = 1
xmax = 2
ymin = -0.5
ymax = 0.5
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
PorousFlowDictator = dictator
block = 0
biot_coefficient = 0.3
[]
[Variables]
[disp_r]
[]
[disp_z]
[]
[pp]
initial_condition = 0.1
[]
[temp]
initial_condition = 10
[]
[]
[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
[]
[]
[PorousFlowFullySaturated]
coupling_type = ThermoHydroMechanical
porepressure = pp
temperature = temp
fp = simple_fluid
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 1
viscosity = 1
thermal_expansion = 0
cv = 1.3
[]
[]
[]
[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 = ComputeAxisymmetricRZSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 2.2
density = 0.5
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0.5 0 0 0 0.5 0 0 0 0.5'
[]
[thermal_cond]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '1 0 0 0 1 0 0 0 1'
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '1 0 0'
variable = pp
[]
[t0]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '1 0 0'
variable = temp
[]
[rdisp]
type = PointValue
outputs = 'csv console'
point = '2 0 0'
use_displaced_mesh = false
variable = disp_r
[]
[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
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 2
end_time = 10
[]
[Outputs]
execute_on = 'initial timestep_end'
[csv]
type = CSV
[]
[]
(modules/tensor_mechanics/examples/piston/piston_params.i)
## This example is documented on YouTube at:
## https://www.youtube.com/watch?v=L9plLYkAbvQ
##
## Additional files (e.g. the CAD model, results)
## can be downloaded freely from Zenodo at:
## https://doi.org/10.5281/zenodo.3886965
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
# Read in mesh from file
type = FileMesh
file = piston_coarse.e
[]
# This is where mesh adaptivity magic happens
[Adaptivity]
steps = 1
max_h_level = 3
cycles_per_step = 1
initial_marker = uniform
marker = errorFraction
[Markers]
[uniform]
type = UniformMarker
mark = refine
[]
[errorFraction]
type = ErrorFractionMarker
coarsen = 0.5
indicator = gradientJump
refine = 0.5
[]
[]
[Indicators]
[gradientJump]
type = GradientJumpIndicator
variable = disp_y
[]
[]
[]
[Modules/TensorMechanics/Master]
# Parameters that apply to all subblocks are specified at this level.
# They can be overwritten in the subblocks.
add_variables = true
incremental = false
strain = SMALL
generate_output = 'vonmises_stress'
[block]
block = 1
[]
[]
[BCs]
[Pressure]
[load]
# Applies the pressure
boundary = load_surf
function = 't*550e5'
[]
[]
[symmetry_x]
# Applies symmetry on the xmin faces
type = DirichletBC
variable = disp_x
boundary = 'xmin'
value = 0.0
[]
[hold_y]
# Anchors the bottom against deformation in the y-direction
type = DirichletBC
variable = disp_y
boundary = 'ymin'
value = 0.0
[]
[symmetry_z]
# Applies symmetry on the zmin faces
type = DirichletBC
variable = disp_z
boundary = 'zmin'
value = 0.0
[]
[]
[Materials]
[elasticity_tensor_steel]
# Creates the elasticity tensor using steel parameters
youngs_modulus = 210e9 #Pa
poissons_ratio = 0.3
type = ComputeIsotropicElasticityTensor
block = 1
[]
[stress]
# Computes the stress, using linear elasticity
type = ComputeLinearElasticStress
block = 1
[]
[]
[Preconditioning]
[SMP]
# Creates the entire Jacobian, for the Newton solve
type = SMP
full = true
[]
[]
[Executioner]
# We solve a steady state problem using Newton's iteration
type = Transient
solve_type = NEWTON
nl_rel_tol = 1e-9
l_max_its = 30
l_tol = 1e-4
nl_max_its = 10
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 31'
dt = 0.1
num_steps = 10
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/tensor_mechanics/test/tests/ad_elastic/rspherical_small_elastic-noad.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 5
[]
[Problem]
coord_type = RSPHERICAL
[]
[GlobalParams]
displacements = 'disp_r'
[]
[Variables]
# scale with one over Young's modulus
[./disp_r]
scaling = 1e-10
[../]
[]
[Kernels]
[./stress_r]
type = StressDivergenceRSphericalTensors
component = 0
variable = disp_r
[../]
[]
[BCs]
[./center]
type = DirichletBC
variable = disp_r
boundary = left
value = 0
[../]
[./rdisp]
type = DirichletBC
variable = disp_r
boundary = right
value = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e10
[../]
[./strain]
type = ComputeRSphericalSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomeramg
dtmin = 0.05
num_steps = 1
nl_max_its = 200
[]
[Outputs]
exodus = true
file_base = rspherical_small_elastic_out
[]
(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
args = c
f_name = prefactor
constant_names = 'epsilon0 c0'
constant_expressions = '0.05 0'
function = '(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/combined/test/tests/poro_mechanics/jacobian1.i)
[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'
porepressure = porepressure
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./porepressure]
[../]
[]
[ICs]
[./disp_x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./disp_y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./disp_z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[./p]
type = RandomIC
min = -1
max = 1
variable = porepressure
[../]
[]
[Kernels]
[./grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
displacements = 'disp_x disp_y disp_z'
component = 0
[../]
[./grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
displacements = 'disp_x disp_y disp_z'
component = 1
[../]
[./grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
displacements = 'disp_x disp_y disp_z'
component = 2
[../]
[./poro]
type = PoroFullSatTimeDerivative
variable = porepressure
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
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 = 0.25
fluid_bulk_compliance = 0.125
[../]
[]
[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]
execute_on = 'timestep_end'
file_base = jacobian1
exodus = false
[]
(modules/tensor_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/tensor_mechanics/test/tests/2D_geometries/planestrain.i)
# This test uses the strain calculator ComputePlaneSmallStrain,
# which is generated through the use of the TensorMechanics MasterAction.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
planar_formulation = PLANE_STRAIN
add_variables = true
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
[../]
[]
[Functions]
[./pull]
type = ParsedFunction
value ='0.01 * t'
[../]
[]
[BCs]
[./rightx]
type = DirichletBC
boundary = 1
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./pull]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = pull
[../]
[]
[Materials]
[./linear_stress]
type = ComputeLinearElasticStress
block = 0
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
poissons_ratio = 0.3
youngs_modulus = 1e10
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
l_max_its = 100
l_tol = 1e-10
nl_max_its = 15
nl_rel_tol = 1e-12
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 5.0
[]
[Outputs]
exodus = true
[]
(modules/tensor_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]
[./DynamicTensorMechanics] # 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
csv = true
perf_graph = true
[]
(modules/tensor_mechanics/test/tests/2D_different_planes/gps_xy.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
file = square_xy_plane.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
[./generalized_plane_strain]
block = 1
strain = SMALL
scalar_out_of_plane_strain = scalar_strain_zz
out_of_plane_direction = z
planar_formulation = GENERALIZED_PLANE_STRAIN
eigenstrain_names = 'eigenstrain'
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(1-x)*t'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 3
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elastic_stress]
type = ComputeLinearElasticStress
block = 1
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
use_displaced_mesh = false
rank_two_tensor = stress
index_i = 2
index_j = 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 = 10
nl_rel_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
file_base = gps_xy_small_out
[./exodus]
type = Exodus
[../]
[]
(modules/peridynamics/test/tests/failure_tests/2D_singular_shape_tensor_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
cracks_start = '0.25 0.5 0'
cracks_end = '0.75 0.5 0'
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 8
ny = 8
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./critical_stress]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./bond_status]
type = RankTwoBasedFailureCriteriaNOSPD
variable = bond_status
rank_two_tensor = stress
critical_variable = critical_stress
failure_criterion = VonMisesStress
[../]
[]
[UserObjects]
[./singular_shape_tensor]
type = SingularShapeTensorEliminatorUserObjectPD
[../]
[]
[ICs]
[./critical_stretch]
type = ConstantIC
variable = critical_stress
value = 150
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[../]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = 1002
value = 0.0
[../]
[./bottom_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1000
function = '-0.002*t'
[../]
[./rbm_x]
type = RBMPresetOldValuePD
variable = disp_x
boundary = 999
[../]
[./rbm_y]
type = RBMPresetOldValuePD
variable = disp_y
boundary = 999
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.33
[../]
[./strain]
type = ComputeSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
start_time = 0
dt = 1
end_time = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
[Outputs]
file_base = 2D_singular_shape_tensor_H1NOSPD
exodus = true
[]
(modules/tensor_mechanics/test/tests/2D_different_planes/gps_jacobian_testing_xy.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
file = square_xy_plane.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[Modules/TensorMechanics/Master]
[./generalized_plane_strain]
block = 1
strain = SMALL
scalar_out_of_plane_strain = scalar_strain_zz
out_of_plane_direction = z
planar_formulation = GENERALIZED_PLANE_STRAIN
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.0
youngs_modulus = 1
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
end_time = 1.0
[]
(modules/porous_flow/test/tests/jacobian/denergy02.i)
# 2phase, 1 component, with solid displacements, time derivative of energy-density
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
xmin = 0
xmax = 1
ny = 1
ymin = 0
ymax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pgas]
[]
[pwater]
[]
[temp]
[]
[]
[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
[]
[pgas]
type = RandomIC
variable = pgas
max = 1.0
min = 0.0
[]
[pwater]
type = RandomIC
variable = pwater
max = 0.0
min = -1.0
[]
[temp]
type = RandomIC
variable = temp
max = 1.0
min = 0.0
[]
[]
[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
[]
[dummy_pgas]
type = Diffusion
variable = pgas
[]
[dummy_pwater]
type = Diffusion
variable = pwater
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pgas temp pwater disp_x disp_y disp_z'
number_fluid_phases = 2
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid0]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
cv = 1.3
[]
[simple_fluid1]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 0.5
thermal_expansion = 0
cv = 0.7
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[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
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
porosity_zero = 0.7
biot_coefficient = 0.9
solid_bulk = 1
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1.1
density = 0.5
[]
[ppss]
type = PorousFlow2PhasePP
phase0_porepressure = pwater
phase1_porepressure = pgas
capillary_pressure = pc
[]
[simple_fluid0]
type = PorousFlowSingleComponentFluid
fp = simple_fluid0
phase = 0
[]
[simple_fluid1]
type = PorousFlowSingleComponentFluid
fp = simple_fluid1
phase = 1
[]
[]
[Preconditioning]
active = check
[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-15 1E-10 10000'
[]
[check]
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
dt = 1
end_time = 1
[]
[Outputs]
exodus = false
[]
(modules/porous_flow/test/tests/poro_elasticity/terzaghi_basicthm.i)
# Using a BasicTHM action
# Terzaghi's problem of consolodation of a drained medium
# The FullySaturated Kernels are used, with multiply_by_density = false
# so that this becomes a linear problem with constant Biot Modulus
#
# A saturated soil sample sits in a bath of water.
# It is constrained on its sides, and bottom.
# Its sides and bottom are also impermeable.
# Initially it is unstressed.
# A normal stress, q, is applied to the soil's top.
# The soil then slowly compresses as water is squeezed
# out from the sample from its top (the top BC for
# the porepressure is porepressure = 0).
#
# See, for example. Section 2.2 of the online manuscript
# Arnold Verruijt "Theory and Problems of Poroelasticity" Delft University of Technology 2013
# but note that the "sigma" in that paper is the negative
# of the stress in TensorMechanics
#
# Here are the problem's parameters, and their values:
# Soil height. h = 10
# Soil's Lame lambda. la = 2
# Soil's Lame mu, which is also the Soil's shear modulus. mu = 3
# Soil bulk modulus. K = la + 2*mu/3 = 4
# Soil confined compressibility. m = 1/(K + 4mu/3) = 0.125
# Soil bulk compliance. 1/K = 0.25
# Fluid bulk modulus. Kf = 8
# Fluid bulk compliance. 1/Kf = 0.125
# Fluid mobility (soil permeability/fluid viscosity). k = 1.5
# Soil initial porosity. phi0 = 0.1
# Biot coefficient. alpha = 0.6
# Soil initial storativity, which is the reciprocal of the initial Biot modulus. S = phi0/Kf + (alpha - phi0)(1 - alpha)/K = 0.0625
# Consolidation coefficient. c = k/(S + alpha^2 m) = 13.95348837
# Normal stress on top. q = 1
# Initial porepressure, resulting from instantaneous application of q, assuming corresponding instantaneous increase of porepressure (Note that this is calculated by MOOSE: we only need it for the analytical solution). p0 = alpha*m*q/(S + alpha^2 m) = 0.69767442
# Initial vertical displacement (down is positive), resulting from instantaneous application of q (Note this is calculated by MOOSE: we only need it for the analytical solution). uz0 = q*m*h*S/(S + alpha^2 m)
# Final vertical displacement (down in positive) (Note this is calculated by MOOSE: we only need it for the analytical solution). uzinf = q*m*h
#
# The solution for porepressure is
# P = 4*p0/\pi \sum_{k=1}^{\infty} \frac{(-1)^{k-1}}{2k-1} \cos ((2k-1)\pi z/(2h)) \exp(-(2k-1)^2 \pi^2 ct/(4 h^2))
# This series converges very slowly for ct/h^2 small, so in that domain
# P = p0 erf( (1-(z/h))/(2 \sqrt(ct/h^2)) )
#
# The degree of consolidation is defined as
# U = (uz - uz0)/(uzinf - uz0)
# where uz0 and uzinf are defined above, and
# uz = the vertical displacement of the top (down is positive)
# U = 1 - (8/\pi^2)\sum_{k=1}^{\infty} \frac{1}{(2k-1)^2} \exp(-(2k-1)^2 \pi^2 ct/(4 h^2))
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 10
xmin = -1
xmax = 1
ymin = -1
ymax = 1
zmin = 0
zmax = 10
[]
[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
[]
[topdrained]
type = DirichletBC
variable = porepressure
value = 0
boundary = front
[]
[topload]
type = NeumannBC
variable = disp_z
value = -1
boundary = front
[]
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 8.0
viscosity = 0.96
density0 = 1.0
[]
[]
[]
[PorousFlowBasicTHM]
coupling_type = HydroMechanical
displacements = 'disp_x disp_y disp_z'
multiply_by_density = false
porepressure = porepressure
biot_coefficient = 0.6
gravity = '0 0 0'
fp = the_simple_fluid
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
# bulk modulus is lambda + 2*mu/3 = 2 + 2*3/3 = 4
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[porosity]
type = PorousFlowPorosityConst # only the initial value of this is used
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
biot_coefficient = 0.6
fluid_bulk_modulus = 8
solid_bulk_compliance = 0.25
[]
[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'
variable = porepressure
use_displaced_mesh = false
[]
[p1]
type = PointValue
outputs = csv
point = '0 0 1'
variable = porepressure
use_displaced_mesh = false
[]
[p2]
type = PointValue
outputs = csv
point = '0 0 2'
variable = porepressure
use_displaced_mesh = false
[]
[p3]
type = PointValue
outputs = csv
point = '0 0 3'
variable = porepressure
use_displaced_mesh = false
[]
[p4]
type = PointValue
outputs = csv
point = '0 0 4'
variable = porepressure
use_displaced_mesh = false
[]
[p5]
type = PointValue
outputs = csv
point = '0 0 5'
variable = porepressure
use_displaced_mesh = false
[]
[p6]
type = PointValue
outputs = csv
point = '0 0 6'
variable = porepressure
use_displaced_mesh = false
[]
[p7]
type = PointValue
outputs = csv
point = '0 0 7'
variable = porepressure
use_displaced_mesh = false
[]
[p8]
type = PointValue
outputs = csv
point = '0 0 8'
variable = porepressure
use_displaced_mesh = false
[]
[p9]
type = PointValue
outputs = csv
point = '0 0 9'
variable = porepressure
use_displaced_mesh = false
[]
[p99]
type = PointValue
outputs = csv
point = '0 0 10'
variable = porepressure
use_displaced_mesh = false
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 10'
variable = disp_z
use_displaced_mesh = false
[]
[dt]
type = FunctionValuePostprocessor
outputs = console
function = if(0.5*t<0.1,0.5*t,0.1)
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
[TimeStepper]
type = PostprocessorDT
postprocessor = dt
dt = 0.0001
[]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = terzaghi_basicthm
[csv]
type = CSV
[]
[]
(modules/xfem/test/tests/solid_mechanics_basic/square_branch_quad_2d.i)
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo0]
type = LineSegmentCutUserObject
cut_data = '-1.0000e-10 6.6340e-01 6.6340e-01 -1.0000e-10'
time_start_cut = 0.0
time_end_cut = 1.0
[../]
[./line_seg_cut_uo1]
type = LineSegmentCutUserObject
cut_data = '3.3120e-01 3.3200e-01 1.0001e+00 3.3200e-01'
time_start_cut = 1.0
time_end_cut = 2.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
planar_formulation = PLANE_STRAIN
add_variables = true
[../]
[]
[Functions]
[./right_disp_x]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[./top_disp_y]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[]
[BCs]
[./right_x]
type = FunctionDirichletBC
boundary = 1
variable = disp_x
function = right_disp_x
[../]
[./top_y]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = top_disp_y
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 2.2
num_steps = 5000
[]
[Outputs]
file_base = square_branch_quad_2d_out
exodus = true
[./console]
type = Console
output_linear = 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/tensor_mechanics/test/tests/ad_elastic/rz_small_elastic-noad.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 3
ny = 3
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Variables]
# scale with one over Young's modulus
[./disp_r]
scaling = 1e-10
[../]
[./disp_z]
scaling = 1e-10
[../]
[]
[Kernels]
[./stress_r]
type = StressDivergenceRZTensors
component = 0
variable = disp_r
[../]
[./stress_z]
type = StressDivergenceRZTensors
component = 1
variable = disp_z
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0
[../]
[./axial]
type = DirichletBC
variable = disp_r
boundary = left
value = 0
[../]
[./rdisp]
type = DirichletBC
variable = disp_r
boundary = right
value = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e10
[../]
[./strain]
type = ComputeAxisymmetricRZSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomeramg
dtmin = 0.05
num_steps = 1
[]
[Outputs]
exodus = true
file_base = rz_small_elastic_out
[]
(modules/porous_flow/test/tests/jacobian/denergy04.i)
# 2phase, 1 component, with solid displacements, time derivative of energy-density, THM porosity
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
xmin = 0
xmax = 1
ny = 1
ymin = 0
ymax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pgas]
[]
[pwater]
[]
[temp]
[]
[]
[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
[]
[pgas]
type = RandomIC
variable = pgas
max = 1.0
min = 0.0
[]
[pwater]
type = RandomIC
variable = pwater
max = 0.0
min = -1.0
[]
[temp]
type = RandomIC
variable = temp
max = 1.0
min = 0.0
[]
[]
[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
[]
[dummy_pgas]
type = Diffusion
variable = pgas
[]
[dummy_pwater]
type = Diffusion
variable = pwater
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pgas temp pwater disp_x disp_y disp_z'
number_fluid_phases = 2
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid0]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
cv = 1.3
[]
[simple_fluid1]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 0.5
thermal_expansion = 0
cv = 0.7
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[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
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
thermal = true
ensure_positive = false
porosity_zero = 0.7
thermal_expansion_coeff = 0.7
biot_coefficient = 0.9
solid_bulk = 1
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1.1
density = 0.5
[]
[ppss]
type = PorousFlow2PhasePP
phase0_porepressure = pwater
phase1_porepressure = pgas
capillary_pressure = pc
[]
[simple_fluid0]
type = PorousFlowSingleComponentFluid
fp = simple_fluid0
phase = 0
[]
[simple_fluid1]
type = PorousFlowSingleComponentFluid
fp = simple_fluid1
phase = 1
[]
[]
[Preconditioning]
active = check
[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-15 1E-10 10000'
[]
[check]
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
dt = 1
end_time = 1
[]
[Outputs]
exodus = false
[]
(modules/porous_flow/test/tests/jacobian/mass10.i)
# 1phase
# vanGenuchten, constant-bulk density, HM porosity, 1component, unsaturated
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -1
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pp]
[]
[]
[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
[]
[pp]
type = RandomIC
variable = pp
min = -1
max = 1
[]
[]
[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
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
strain_at_nearest_qp = true
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
[]
[]
[]
[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
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pp
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.5
solid_bulk = 1
strain_at_nearest_qp = true
[]
[nearest_qp]
type = PorousFlowNearestQp
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[]
[Preconditioning]
active = check
[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-15 1E-10 10000'
[]
[check]
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
dt = 1
end_time = 1
[]
[Outputs]
exodus = false
[]
(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
value = '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
csv = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/tensor_mechanics/tutorials/basics/part_1.2.i)
#Tensor Mechanics tutorial: the basics
#Step 1, part 2
#2D simulation of uniaxial tension with linear elasticity with visualized stress
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
file = necking_quad4.e
uniform_refine = 1
[]
[Modules/TensorMechanics/Master]
[./block1]
strain = SMALL
add_variables = true
generate_output = 'stress_xx vonmises_stress' #automatically creates the auxvariables and auxkernels
#needed to output these stress quanities
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.0035
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'asm lu 1 101'
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/tensor_mechanics/test/tests/torque_reaction/torque_reaction.i)
# Scalar torque reaction
# This test computes the sum of the torques acting on a ten element 2D bar mesh
# and is intended to replicate the classical wrench problem from statics.
# A displacement in the y along the right face is applied to the bar end to create
# a shear force along the bar end. The rotation origin default (the global origin)
# and the axis of rotation direction vector used to compute the torque reaction
# is set to (0, 0, 1) out of the plane.
# Torque is calculated for the two nodes on the left of the bar. For the bottom
# node on the right, the torque/ moment lever is the x coordinate value, and for
# the top node on the right the torque lever is the hypotenuse of the x and y
# coordinates. The expected sum of the torque reaction is just over 37.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 1
[]
[Problem]
extra_tag_vectors = 'ref'
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[]
[AuxKernels]
[saved_x]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_x'
variable = 'saved_x'
[]
[saved_y]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_y'
variable = 'saved_y'
[]
[]
[Modules/TensorMechanics/Master]
[master]
strain = SMALL
generate_output = 'stress_xx stress_yy'
add_variables = true
extra_vector_tags = 'ref'
[]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./right_shear_y]
type = FunctionDirichletBC
variable = disp_y
boundary = right
function = '0.001*t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./elastic_stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
line_search = 'none'
l_max_its = 30
nl_max_its = 20
nl_abs_tol = 1e-12
nl_rel_tol = 1e-10
l_tol = 1e-8
start_time = 0.0
dt = 0.5
end_time = 1
num_steps = 2
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./torque]
type = TorqueReaction
boundary = right
reaction_force_variables = 'saved_x saved_y'
direction_vector = '0. 0. 1.'
[../]
[]
[Outputs]
exodus = true
[]
(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
f_name = Fc
args = 'c'
constant_names = 'barr_height cv_eq'
constant_expressions = '0.1 1.0e-2'
function = 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
function = 0.1*c
args = 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
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
f_name = F
sum_materials = 'Fc Fe'
args = '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/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
args = temp
function = '(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
value = '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
[]
[]
[Modules]
[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/surface_tension_KKS/surface_tension_VDWgas.i)
# Test for ComputeExtraStressVDWGas
# Gas bubble with r = 15 nm in a solid matrix
# The gas pressure is counterbalanced by the surface tension of the solid-gas interface,
# which is included with ComputeSurfaceTensionKKS
[Mesh]
type = GeneratedMesh
dim = 1
nx = 300
xmin = 0
xmax = 30
[]
[Problem]
coord_type = RSPHERICAL
[]
[GlobalParams]
displacements = 'disp_x'
[]
[Variables]
# order parameter
[./eta]
order = FIRST
family = LAGRANGE
[../]
# gas concentration
[./cg]
order = FIRST
family = LAGRANGE
[../]
# vacancy concentration
[./cv]
order = FIRST
family = LAGRANGE
[../]
# gas chemical potential
[./wg]
order = FIRST
family = LAGRANGE
[../]
# vacancy chemical potential
[./wv]
order = FIRST
family = LAGRANGE
[../]
# Matrix phase gas concentration
[./cgm]
order = FIRST
family = LAGRANGE
initial_condition = 1.01e-31
[../]
# Matrix phase vacancy concentration
[./cvm]
order = FIRST
family = LAGRANGE
initial_condition = 2.25e-11
[../]
# Bubble phase gas concentration
[./cgb]
order = FIRST
family = LAGRANGE
initial_condition = 0.2714
[../]
# Bubble phase vacancy concentration
[./cvb]
order = FIRST
family = LAGRANGE
initial_condition = 0.7286
[../]
[]
[ICs]
[./eta_ic]
variable = eta
type = FunctionIC
function = ic_func_eta
[../]
[./cv_ic]
variable = cv
type = FunctionIC
function = ic_func_cv
[../]
[./cg_ic]
variable = cg
type = FunctionIC
function = ic_func_cg
[../]
[]
[Functions]
[./ic_func_eta]
type = ParsedFunction
value = 'r:=sqrt(x^2+y^2+z^2);0.5*(1.0-tanh((r-r0)/delta_eta/sqrt(2.0)))'
vars = 'delta_eta r0'
vals = '0.321 15'
[../]
[./ic_func_cv]
type = ParsedFunction
value = 'r:=sqrt(x^2+y^2+z^2);eta_an:=0.5*(1.0-tanh((r-r0)/delta/sqrt(2.0)));cvbubinit*eta_an^3*(6*eta_an^2-15*eta_an+10)+cvmatrixinit*(1-eta_an^3*(6*eta_an^2-15*eta_an+10))'
vars = 'delta r0 cvbubinit cvmatrixinit'
vals = '0.321 15 0.7286 2.25e-11'
[../]
[./ic_func_cg]
type = ParsedFunction
value = 'r:=sqrt(x^2+y^2+z^2);eta_an:=0.5*(1.0-tanh((r-r0)/delta/sqrt(2.0)));cgbubinit*eta_an^3*(6*eta_an^2-15*eta_an+10)+cgmatrixinit*(1-eta_an^3*(6*eta_an^2-15*eta_an+10))'
vars = 'delta r0 cgbubinit cgmatrixinit'
vals = '0.321 15 0.2714 1.01e-31'
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz'
[../]
[]
[Kernels]
# enforce cg = (1-h(eta))*cgm + h(eta)*cgb
[./PhaseConc_g]
type = KKSPhaseConcentration
ca = cgm
variable = cgb
c = cg
eta = eta
[../]
# enforce cv = (1-h(eta))*cvm + h(eta)*cvb
[./PhaseConc_v]
type = KKSPhaseConcentration
ca = cvm
variable = cvb
c = cv
eta = eta
[../]
# enforce pointwise equality of chemical potentials
[./ChemPotVacancies]
type = KKSPhaseChemicalPotential
variable = cvm
cb = cvb
fa_name = f_total_matrix
fb_name = f_total_bub
args_a = 'cgm'
args_b = 'cgb'
[../]
[./ChemPotGas]
type = KKSPhaseChemicalPotential
variable = cgm
cb = cgb
fa_name = f_total_matrix
fb_name = f_total_bub
args_a = 'cvm'
args_b = 'cvb'
[../]
#
# Cahn-Hilliard Equations
#
[./CHBulk_g]
type = KKSSplitCHCRes
variable = cg
ca = cgm
fa_name = f_total_matrix
w = wg
args_a = 'cvm'
[../]
[./CHBulk_v]
type = KKSSplitCHCRes
variable = cv
ca = cvm
fa_name = f_total_matrix
w = wv
args_a = 'cgm'
[../]
[./dcgdt]
type = CoupledTimeDerivative
variable = wg
v = cg
[../]
[./dcvdt]
type = CoupledTimeDerivative
variable = wv
v = cv
[../]
[./wgkernel]
type = SplitCHWRes
mob_name = M
variable = wg
[../]
[./wvkernel]
type = SplitCHWRes
mob_name = M
variable = wv
[../]
#
# Allen-Cahn Equation
#
[./ACBulkF]
type = KKSACBulkF
variable = eta
fa_name = f_total_matrix
fb_name = f_total_bub
w = 0.356
args = 'cvm cvb cgm cgb'
[../]
[./ACBulkCv]
type = KKSACBulkC
variable = eta
ca = cvm
cb = cvb
fa_name = f_total_matrix
args = 'cgm'
[../]
[./ACBulkCg]
type = KKSACBulkC
variable = eta
ca = cgm
cb = cgb
fa_name = f_total_matrix
args = 'cvm'
[../]
[./ACInterface]
type = ACInterface
variable = eta
kappa_name = kappa
[../]
[./detadt]
type = TimeDerivative
variable = eta
[../]
[]
[Materials]
# Chemical free energy of the matrix
[./fm]
type = DerivativeParsedMaterial
f_name = fm
args = 'cvm cgm'
material_property_names = 'kvmatrix kgmatrix cvmatrixeq cgmatrixeq'
function = '0.5*kvmatrix*(cvm-cvmatrixeq)^2 + 0.5*kgmatrix*(cgm-cgmatrixeq)^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
f_name = f_total_matrix
sum_materials = 'fm fe_m'
args = 'cvm cgm'
[../]
# Free energy of the bubble phase
[./fb]
type = DerivativeParsedMaterial
f_name = fb
args = 'cvb cgb'
material_property_names = 'kToverV nQ Va b f0 kpen kgbub kvbub cvbubeq cgbubeq'
function = '0.5*kgbub*(cvb-cvbubeq)^2 + 0.5*kvbub*(cgb-cgbubeq)^2'
[../]
# Elastic energy of the bubble
[./elastic_free_energy_p]
type = ElasticEnergyMaterial
base_name = bub
f_name = fe_b
args = ' '
[../]
# Total free energy of the bubble
[./Total_energy_bub]
type = DerivativeSumMaterial
f_name = f_total_bub
sum_materials = 'fb fe_b'
# sum_materials = 'fb'
args = 'cvb cgb'
[../]
# 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 Va kvmatrix kgmatrix kgbub kvbub f0 kpen cvbubeq cgbubeq b T'
prop_values = '0.7 0.7 0.0368 0.03629 223.16 223.16 2.23 2.23 0.0224 1.0 0.6076 0.3924 0.085 800'
[../]
[./cvmatrixeq]
type = ParsedMaterial
f_name = cvmatrixeq
material_property_names = 'T'
constant_names = 'kB Efv'
constant_expressions = '8.6173324e-5 1.69'
function = 'exp(-Efv/(kB*T))'
[../]
[./cgmatrixeq]
type = ParsedMaterial
f_name = cgmatrixeq
material_property_names = 'T'
constant_names = 'kB Efg'
constant_expressions = '8.6173324e-5 4.92'
function = 'exp(-Efg/(kB*T))'
[../]
[./kToverV]
type = ParsedMaterial
f_name = kToverV
material_property_names = 'T Va'
constant_names = 'k C44dim' #k in J/K and dimensional C44 in J/m^3
constant_expressions = '1.38e-23 63e9'
function = 'k*T*1e27/Va/C44dim'
[../]
[./nQ]
type = ParsedMaterial
f_name = nQ
material_property_names = 'T'
constant_names = 'k Pi M hbar' #k in J/K, M is Xe atomic mass in kg, hbar in J s
constant_expressions = '1.38e-23 3.14159 2.18e-25 1.05459e-34'
function = '(M*k*T/2/Pi/hbar^2)^1.5 * 1e-27' #1e-27 converts from #/m^3 to #/nm^3
[../]
#Mechanical properties
[./Stiffness_matrix]
type = ComputeElasticityTensor
C_ijkl = '0.778 0.7935'
fill_method = symmetric_isotropic
base_name = matrix
[../]
[./Stiffness_bub]
type = ComputeElasticityTensor
C_ijkl = '0.0778 0.07935'
fill_method = symmetric_isotropic
base_name = bub
[../]
[./strain_matrix]
type = ComputeRSphericalSmallStrain
base_name = matrix
[../]
[./strain_bub]
type = ComputeRSphericalSmallStrain
base_name = bub
[../]
[./stress_matrix]
type = ComputeLinearElasticStress
base_name = matrix
[../]
[./stress_bub]
type = ComputeLinearElasticStress
base_name = bub
[../]
[./global_stress]
type = TwoPhaseStressMaterial
base_A = matrix
base_B = bub
[../]
[./surface_tension]
type = ComputeSurfaceTensionKKS
v = eta
kappa_name = kappa
w = 0.356
[../]
[./gas_pressure]
type = ComputeExtraStressVDWGas
T = T
b = b
cg = cgb
Va = Va
nondim_factor = 63e9
base_name = bub
outputs = exodus
[../]
[]
[BCs]
[./left_r]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[]
[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 = 15
l_tol = 1.0e-4
nl_rel_tol = 1.0e-10
nl_abs_tol = 1e-11
num_steps = 2
dt = 0.5
[]
[Outputs]
exodus = true
[]
(modules/tensor_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]
[TensorMechanics]
#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/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/combined/examples/phase_field-mechanics/SimplePhaseTrans.i)
#
# Martensitic transformation
# One structural order parameter (SOP) governed by AllenCahn Eqn.
# Chemical driving force described by Landau Polynomial
# Coupled with elasticity (Mechanics)
# Eigenstrain as a function of SOP
#
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 100
ny = 100
xmin = 0
xmax = 100
ymin = 0
ymax = 100
elem_type = QUAD4
[]
[Variables]
[./eta]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = SmoothCircleIC
x1 = 50
y1 = 50
radius = 10.0
invalue = 1.0
outvalue = 0.0
int_width = 5.0
[../]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
generate_output = 'stress_xx stress_yy'
eigenstrain_names = 'eigenstrain'
[../]
[]
[Kernels]
[./eta_bulk]
type = AllenCahn
variable = eta
f_name = F
[../]
[./eta_interface]
type = ACInterface
variable = eta
kappa_name = kappa_eta
[../]
[./time]
type = TimeDerivative
variable = eta
[../]
[]
[Materials]
[./consts]
type = GenericConstantMaterial
prop_names = 'L kappa_eta'
prop_values = '1 1'
[../]
[./chemical_free_energy]
type = DerivativeParsedMaterial
f_name = Fc
args = 'eta'
constant_names = 'A2 A3 A4'
constant_expressions = '0.2 -12.6 12.4'
function = A2/2*eta^2+A3/3*eta^3+A4/4*eta^4
enable_jit = true
derivative_order = 2
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '70 30 30 70 30 70 30 30 30'
fill_method = symmetric9
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./var_dependence]
type = DerivativeParsedMaterial
function = eta
args = 'eta'
f_name = var_dep
enable_jit = true
derivative_order = 2
[../]
[./eigenstrain]
type = ComputeVariableEigenstrain
eigen_base = '0.1 0.1 0 0 0 0'
prefactor = var_dep
#outputs = exodus
args = 'eta'
eigenstrain_name = eigenstrain
[../]
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
args = 'eta'
derivative_order = 2
[../]
[./free_energy]
type = DerivativeSumMaterial
f_name = F
sum_materials = 'Fc Fe'
args = 'eta'
derivative_order = 2
[../]
[]
[BCs]
[./all_y]
type = DirichletBC
variable = disp_y
boundary = 'top bottom left right'
value = 0
[../]
[./all_x]
type = DirichletBC
variable = disp_x
boundary = 'top bottom left right'
value = 0
[../]
[]
[Preconditioning]
# active = ' '
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
# this gives best performance on 4 cores
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 = 10
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 9
iteration_window = 2
growth_factor = 1.1
cutback_factor = 0.75
dt = 0.3
[../]
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[]
(modules/combined/test/tests/linear_elasticity/thermal_expansion.i)
# This input file is designed to test the RankTwoAux and RankFourAux
# auxkernels, which report values out of the Tensors used in materials
# properties.
# Materials properties into AuxVariables - these are elemental variables, not nodal variables.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
nz = 0
xmin = 0
xmax = 2
ymin = 0
ymax = 2
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
eigenstrain_names = eigenstrain
add_variables = true
generate_output = 'stress_xx stress_yy stress_xy'
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '1e6 0 0 1e6 0 1e6 .5e6 .5e6 .5e6'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./eigenstrain]
type = ComputeEigenstrain
eigen_base = '1e-4'
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
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
nl_rel_tol = 1e-14
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/anisotropic_patch/anisotropic_patch_test.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 = anisotropic_patch_test.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]
[./elastic_energy]
order = CONSTANT
family = MONOMIAL
[../]
[] # AuxVariables
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx vonmises_stress hydrostatic_stress firstinv_stress secondinv_stress thirdinv_stress'
[../]
[]
[AuxKernels]
[./elastic_energy]
type = ElasticEnergyAux
variable = elastic_energy
[../]
[] # 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]
[./elastic_tensor]
type = ComputeElasticityTensor
C_ijkl = '1e6 0.0 0.0 1e6 0.0 1e6 0.5e6 0.5e6 0.5e6'
fill_method = symmetric9
euler_angle_1 = 18.0
euler_angle_2 = 43.0
euler_angle_3 = 177.0
# Isotropic material constants
# The three euler angles do not matter
# youngs_modulus = 1e6
# poissons_ratio = 0.0
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[] # Materials
[Executioner]
type = Transient
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]
file_base = anisotropic_patch_test_out
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[] # Outputs
(modules/tensor_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
[]
[]
[Modules/TensorMechanics/DynamicMaster]
[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/porous_flow/test/tests/jacobian/mass08.i)
# 1phase
# vanGenuchten, constant-bulk density, HM porosity, 1component, unsaturated
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -1
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pp]
[]
[]
[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
[]
[pp]
type = RandomIC
variable = pp
min = -1
max = 1
[]
[]
[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
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
[]
[]
[]
[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
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pp
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.5
solid_bulk = 1
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[]
[Preconditioning]
active = check
[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-15 1E-10 10000'
[]
[check]
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
dt = 1
end_time = 1
[]
[Outputs]
exodus = false
[]
(modules/combined/examples/publications/rapid_dev/fig8.i)
#
# Fig. 8 input for 10.1016/j.commatsci.2017.02.017
# D. Schwen et al./Computational Materials Science 132 (2017) 36-45
# Two growing particles with differnet anisotropic Eigenstrains
#
[Mesh]
[./gen]
type = GeneratedMeshGenerator
dim = 2
nx = 80
ny = 40
xmin = -20
xmax = 20
ymin = 0
ymax = 20
elem_type = QUAD4
[../]
[./cnode]
type = ExtraNodesetGenerator
input = gen
coord = '0.0 0.0'
new_boundary = 100
tolerance = 0.1
[../]
[]
[GlobalParams]
# CahnHilliard needs the third derivatives
derivative_order = 3
enable_jit = true
displacements = 'disp_x disp_y'
int_width = 1
[]
# AuxVars to compute the free energy density for outputting
[AuxVariables]
[./local_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./cross_energy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./local_free_energy]
type = TotalFreeEnergy
variable = local_energy
interfacial_vars = 'c'
kappa_names = 'kappa_c'
additional_free_energy = cross_energy
execute_on = 'INITIAL TIMESTEP_END'
[../]
[./cross_terms]
type = CrossTermGradientFreeEnergy
variable = cross_energy
interfacial_vars = 'eta1 eta2 eta3'
kappa_names = 'kappa11 kappa12 kappa13
kappa21 kappa22 kappa23
kappa31 kappa32 kappa33'
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
# particle x positions and radius
P1X=8
P2X=-4
PR=2
[Variables]
# Solute concentration variable
[./c]
[./InitialCondition]
type = SpecifiedSmoothCircleIC
x_positions = '${P1X} ${P2X}'
y_positions = '0 0'
z_positions = '0 0'
radii = '${PR} ${PR}'
outvalue = 0.5
invalue = 0.9
[../]
[../]
[./w]
[../]
# Order parameter for the Matrix
[./eta1]
[./InitialCondition]
type = SpecifiedSmoothCircleIC
x_positions = '${P1X} ${P2X}'
y_positions = '0 0'
z_positions = '0 0'
radii = '${PR} ${PR}'
outvalue = 1.0
invalue = 0.0
[../]
[../]
# Order parameters for the 2 different inclusion orientations
[./eta2]
[./InitialCondition]
type = SmoothCircleIC
x1 = ${P2X}
y1 = 0
radius = ${PR}
invalue = 1.0
outvalue = 0.0
[../]
[../]
[./eta3]
[./InitialCondition]
type = SmoothCircleIC
x1 = ${P1X}
y1 = 0
radius = ${PR}
invalue = 1.0
outvalue = 0.0
[../]
[../]
# Lagrange-multiplier
[./lambda]
initial_condition = 1.0
[../]
[]
[Modules]
[./TensorMechanics]
[./Master]
[./all]
add_variables = true
strain = SMALL
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[Kernels]
# Split Cahn-Hilliard kernels
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
args = 'eta1 eta2 eta3'
kappa_name = kappa_c
w = w
[../]
[./wres]
type = SplitCHWRes
variable = w
mob_name = M
[../]
[./time]
type = CoupledTimeDerivative
variable = w
v = c
[../]
# Allen-Cahn and Lagrange-multiplier constraint kernels for order parameter 1
[./deta1dt]
type = TimeDerivative
variable = eta1
[../]
[./ACBulk1]
type = AllenCahn
variable = eta1
args = 'eta2 eta3 c'
mob_name = L1
f_name = F
[../]
[./ACInterface1]
type = ACMultiInterface
variable = eta1
etas = 'eta1 eta2 eta3'
mob_name = L1
kappa_names = 'kappa11 kappa12 kappa13'
[../]
[./lagrange1]
type = SwitchingFunctionConstraintEta
variable = eta1
h_name = h1
lambda = lambda
[../]
# Allen-Cahn and Lagrange-multiplier constraint kernels for order parameter 2
[./deta2dt]
type = TimeDerivative
variable = eta2
[../]
[./ACBulk2]
type = AllenCahn
variable = eta2
args = 'eta1 eta3 c'
mob_name = L2
f_name = F
[../]
[./ACInterface2]
type = ACMultiInterface
variable = eta2
etas = 'eta1 eta2 eta3'
mob_name = L2
kappa_names = 'kappa21 kappa22 kappa23'
[../]
[./lagrange2]
type = SwitchingFunctionConstraintEta
variable = eta2
h_name = h2
lambda = lambda
[../]
# Allen-Cahn and Lagrange-multiplier constraint kernels for order parameter 3
[./deta3dt]
type = TimeDerivative
variable = eta3
[../]
[./ACBulk3]
type = AllenCahn
variable = eta3
args = 'eta1 eta2 c'
mob_name = L3
f_name = F
[../]
[./ACInterface3]
type = ACMultiInterface
variable = eta3
etas = 'eta1 eta2 eta3'
mob_name = L3
kappa_names = 'kappa31 kappa32 kappa33'
[../]
[./lagrange3]
type = SwitchingFunctionConstraintEta
variable = eta3
h_name = h3
lambda = lambda
[../]
# Lagrange-multiplier constraint kernel for lambda
[./lagrange]
type = SwitchingFunctionConstraintLagrange
variable = lambda
etas = 'eta1 eta2 eta3'
h_names = 'h1 h2 h3'
epsilon = 1e-6
[../]
[]
[Materials]
# declare a few constants, such as mobilities (L,M) and interface gradient prefactors (kappa*)
[./consts]
type = GenericConstantMaterial
block = 0
prop_names = 'M kappa_c L1 L2 L3 kappa11 kappa12 kappa13 kappa21 kappa22 kappa23 kappa31 kappa32 kappa33'
prop_values = '0.2 0.5 1 1 1 2.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00 '
[../]
# We use this to output the level of constraint enforcement
# ideally it should be 0 everywhere, if the constraint is fully enforced
[./etasummat]
type = ParsedMaterial
f_name = etasum
args = 'eta1 eta2 eta3'
material_property_names = 'h1 h2 h3'
function = 'h1+h2+h3-1'
outputs = exodus
[../]
# This parsed material creates a single property for visualization purposes.
# It will be 0 for phase 1, -1 for phase 2, and 1 for phase 3
[./phasemap]
type = ParsedMaterial
f_name = phase
args = 'eta2 eta3'
function = 'if(eta3>0.5,1,0)-if(eta2>0.5,1,0)'
outputs = exodus
[../]
# global mechanical properties
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '400 400'
fill_method = symmetric_isotropic
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
# eigenstrain
[./eigenstrain_2]
type = GenericConstantRankTwoTensor
tensor_name = s2
tensor_values = '0 -0.05 0 0 0 0'
[../]
[./eigenstrain_3]
type = GenericConstantRankTwoTensor
tensor_name = s3
tensor_values = '-0.05 0 0 0 0 0'
[../]
[./eigenstrain]
type = CompositeEigenstrain
weights = 'h2 h3'
tensors = 's2 s3'
args = 'eta2 eta3'
eigenstrain_name = eigenstrain
[../]
# switching functions
[./switching1]
type = SwitchingFunctionMaterial
function_name = h1
eta = eta1
h_order = SIMPLE
[../]
[./switching2]
type = SwitchingFunctionMaterial
function_name = h2
eta = eta2
h_order = SIMPLE
[../]
[./switching3]
type = SwitchingFunctionMaterial
function_name = h3
eta = eta3
h_order = SIMPLE
[../]
[./barrier]
type = MultiBarrierFunctionMaterial
etas = 'eta1 eta2 eta3'
[../]
# chemical free energies
[./chemical_free_energy_1]
type = DerivativeParsedMaterial
f_name = Fc1
function = '4*c^2'
args = 'c'
derivative_order = 2
[../]
[./chemical_free_energy_2]
type = DerivativeParsedMaterial
f_name = Fc2
function = '(c-0.9)^2-0.4'
args = 'c'
derivative_order = 2
[../]
[./chemical_free_energy_3]
type = DerivativeParsedMaterial
f_name = Fc3
function = '(c-0.9)^2-0.5'
args = 'c'
derivative_order = 2
[../]
# global chemical free energy
[./chemical_free_energy]
type = DerivativeMultiPhaseMaterial
f_name = Fc
fi_names = 'Fc1 Fc2 Fc3'
hi_names = 'h1 h2 h3'
etas = 'eta1 eta2 eta3'
args = 'c'
W = 3
[../]
# global elastic free energy
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
args = 'eta2 eta3'
outputs = exodus
output_properties = Fe
derivative_order = 2
[../]
# Penalize phase 2 and 3 coexistence
[./multi_phase_penalty]
type = DerivativeParsedMaterial
f_name = Fp
function = '50*(eta2*eta3)^2'
args = 'eta2 eta3'
derivative_order = 2
outputs = exodus
output_properties = Fp
[../]
# free energy
[./free_energy]
type = DerivativeSumMaterial
f_name = F
sum_materials = 'Fc Fe Fp'
args = 'c eta1 eta2 eta3'
derivative_order = 2
[../]
[]
[BCs]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = disp_x
value = 0
[../]
# fix side point x coordinate to inhibit rotation
[./angularfix]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
# We monitor the total free energy and the total solute concentration (should be constant)
[Postprocessors]
[./total_free_energy]
type = ElementIntegralVariablePostprocessor
variable = local_energy
execute_on = 'INITIAL TIMESTEP_END'
[../]
[./total_solute]
type = ElementIntegralVariablePostprocessor
variable = c
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[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
end_time = 12.0
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 8
iteration_window = 1
dt = 0.01
[../]
[]
[Outputs]
print_linear_residuals = false
execute_on = 'INITIAL TIMESTEP_END'
exodus = true
[./table]
type = CSV
delimiter = ' '
[../]
[]
[Debug]
# show_var_residual_norms = true
[]
(modules/xfem/test/tests/corner_nodes_cut/corner_node_cut.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.0 0.5 0.5 0.5'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 4
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[BCs]
[./top_x]
type = DirichletBC
boundary = 2
variable = disp_x
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.1
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# max_xfem_update = 1
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = 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
value = '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
csv = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/tensor_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'
[]
[Modules/TensorMechanics/Master]
[./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/tensor_mechanics/test/tests/2D_different_planes/planestrain_xy.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
file = square_xy_plane.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
[./plane_strain]
block = 1
strain = SMALL
out_of_plane_direction = z
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'eigenstrain'
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(1-x)*t'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 3
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elastic_stress]
type = ComputeLinearElasticStress
block = 1
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[]
[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 = 10
nl_rel_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
file_base = planestrain_xy_small_out
[./exodus]
type = Exodus
[../]
[]
(modules/porous_flow/test/tests/jacobian/mass10_nodens.i)
# 1phase
# vanGenuchten, constant-bulk density, HM porosity, 1component, unsaturated
# multiply_by_density = false
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -1
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pp]
[]
[]
[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
[]
[pp]
type = RandomIC
variable = pp
min = -1
max = 1
[]
[]
[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
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
strain_at_nearest_qp = true
multiply_by_density = false
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
[]
[]
[]
[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
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pp
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.5
solid_bulk = 1
strain_at_nearest_qp = true
[]
[nearest_qp]
type = PorousFlowNearestQp
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[]
[Preconditioning]
active = check
[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-15 1E-10 10000'
[]
[check]
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
dt = 1
end_time = 1
[]
[Outputs]
exodus = false
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_second/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'small'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = 0
ymax = 10
nx = 2
ny = 33
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[block]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'block'
[]
[plank]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ComputeLinearElasticStress
block = 'plank block'
[]
[swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[]
[swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 3
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
exodus = true
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/porous_flow/test/tests/jacobian/desorped_mass_vol_exp01.i)
# Tests the PorousFlowDesorpedMassVolumetricExpansion kernel
# Fluid with constant bulk modulus, van-Genuchten capillary, HM porosity
[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'
block = 0
PorousFlowDictator = dictator
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[conc]
family = MONOMIAL
order = CONSTANT
[]
[]
[ICs]
[disp_x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[]
[disp_y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[]
[disp_z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[]
[p]
type = RandomIC
min = -1
max = 1
variable = porepressure
[]
[conc]
type = RandomIC
min = 0
max = 1
variable = conc
[]
[]
[BCs]
# necessary otherwise volumetric strain rate will be zero
[disp_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[disp_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'left right'
[]
[disp_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'left right'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
displacements = 'disp_x disp_y disp_z'
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
displacements = 'disp_x disp_y disp_z'
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
displacements = 'disp_x disp_y disp_z'
component = 2
[]
[poro]
type = PorousFlowMassVolumetricExpansion
fluid_component = 0
variable = porepressure
[]
[conc_in_poro]
type = PorousFlowDesorpedMassVolumetricExpansion
conc_var = conc
variable = porepressure
[]
[conc]
type = PorousFlowDesorpedMassVolumetricExpansion
conc_var = conc
variable = conc
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z conc'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[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.5
solid_bulk = 1
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[]
[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
dt = 1E-5
[]
[Outputs]
execute_on = 'timestep_end'
file_base = jacobian2
exodus = false
[]
(modules/tensor_mechanics/test/tests/generalized_plane_strain/plane_strain_prescribed.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
block = 0
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[AuxVariables]
[./temp]
[../]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[]
[AuxScalarKernels]
[./strain_zz]
type = FunctionScalarAux
variable = scalar_strain_zz
function = scalar_strain_zz_func
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(1-x)*t'
[../]
[./scalar_strain_zz_func]
type = PiecewiseLinear
xy_data = '0 0
1 7.901e-5
2 1.103021e-2'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
temperature = temp
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
planar_formulation = PLANE_STRAIN
eigenstrain_names = eigenstrain
save_in = 'saved_x saved_y'
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[]
[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-10
nl_abs_tol = 1e-5
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
num_steps = 5000
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/multiphase_mechanics/nonsplit_gradderiv_action.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 5
xmax = 10
ymax = 10
[]
[GlobalParams]
displacements = 'disp_x disp_y'
displacement_gradients = 'gxx gxy gyx gyy'
[]
[Modules]
[./PhaseField]
[./DisplacementGradients]
[../]
[../]
[]
[AuxVariables]
[./disp_x]
[./InitialCondition]
type = FunctionIC
function = '0.1*sin(2*x/10*3.14159265359)'
[../]
[../]
[./disp_y]
[./InitialCondition]
type = FunctionIC
function = '0.1*sin(1*y/10*3.14159265359)'
[../]
[../]
[]
[Variables]
[./c]
order = THIRD
family = HERMITE
initial_condition = 0
[../]
[]
[Kernels]
[./dt]
type = TimeDerivative
variable = c
[../]
[./bulk]
type = CahnHilliard
variable = c
mob_name = M
f_name = F
[../]
[./int]
type = CHInterface
variable = c
mob_name = M
kappa_name = kappa_c
[../]
[]
[BCs]
[./Periodic]
[./All]
auto_direction = 'x y'
[../]
[../]
[]
[Materials]
[./consts]
type = GenericConstantMaterial
prop_names = 'M kappa_c'
prop_values = '1 0.1'
[../]
[./elasticity_tensor]
type = ComputeConcentrationDependentElasticityTensor
c = c
C0_ijkl = '1.0 1.0'
C1_ijkl = '3.0 3.0'
fill_method0 = symmetric_isotropic
fill_method1 = symmetric_isotropic
[../]
[./smallstrain]
type = ComputeSmallStrain
[../]
[./linearelastic_a]
type = ComputeLinearElasticStress
[../]
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = F
args = 'c'
derivative_order = 3
[../]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
solve_type = NEWTON
l_max_its = 30
l_tol = 1.0e-6
nl_max_its = 15
nl_rel_tol = 1.0e-7
nl_abs_tol = 1.0e-10
num_steps = 2
dt = 1
[]
[Outputs]
perf_graph = true
file_base = nonsplit_gradderiv_out
exodus = true
[]
(modules/tensor_mechanics/tutorials/introduction/mech_step03.i)
#
# Added subdomains and subdomain-specific properties
# https://mooseframework.inl.gov/modules/tensor_mechanics/tutorials/introduction/step03.html
#
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 40
ny = 20
xmax = 2
ymax = 1
[]
# assign two subdomains
[block1]
type = SubdomainBoundingBoxGenerator
input = generated
block_id = 1
bottom_left = '0 0 0'
top_right = '1 1 0'
[]
[block2]
type = SubdomainBoundingBoxGenerator
input = block1
block_id = 2
bottom_left = '1 0 0'
top_right = '2 1 0'
[]
[]
[Modules/TensorMechanics/Master]
[all]
add_variables = true
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[Pressure]
[top]
boundary = top
function = 1e7*t
[]
[]
[]
[Materials]
[elasticity1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e9
poissons_ratio = 0.3
block = 1
[]
[elasticity2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 5e8
poissons_ratio = 0.3
block = 2
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(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
function = 0.5*c^2
args = 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/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_hht_ti.i)
# Wave propogation in 1D using HHT 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.
# alpha, beta and gamma are HHT 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)*((1+alpha)*vel-alpha*vel_old)
# +(1+alpha)*K*disp-alpha*K*disp_old = 0
#
# Here M is the mass matrix, K is the stiffness matrix
#
# The displacement at the first, second, third and fourth node at t = 0.1 are
# -7.787499960311491942e-02, 1.955566679096475483e-02 and -4.634888180231294501e-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]
[../]
[]
[Kernels]
[./DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
hht_alpha = -0.3
stiffness_damping_coefficient = 0.1
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
eta=0.1
alpha = -0.3
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
eta=0.1
alpha = -0.3
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
eta = 0.1
alpha = -0.3
[../]
[]
[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
[../]
[]
[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
[./TimeIntegrator]
type = NewmarkBeta
beta = 0.422
gamma = 0.8
[../]
[]
[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]
file_base = 'wave_rayleigh_hht_out'
exodus = true
perf_graph = true
[]
(modules/tensor_mechanics/test/tests/action/two_coord.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 16
ny = 8
xmin = -1
xmax = 1
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '-1 0 0'
top_right = '0 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[Problem]
coord_type = 'XYZ RZ'
block = '1 2'
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Modules/TensorMechanics/Master]
active = 'block1 block2'
[./error]
strain = SMALL
add_variables = true
[../]
[./block1]
strain = SMALL
add_variables = true
block = 1
[../]
[./block2]
strain = SMALL
add_variables = true
block = 2
[../]
[]
[AuxVariables]
[./vmstress]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./vmstress]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = vmstress
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[]
[BCs]
[./topx]
type = DirichletBC
boundary = 'top'
variable = disp_x
value = 0.0
[../]
[./topy]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./bottomx]
type = DirichletBC
boundary = 'bottom'
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.05
[../]
[]
[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/combined/test/tests/multiphase_mechanics/nonsplit_gradderiv.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 5
xmax = 10
ymax = 10
[]
[GlobalParams]
displacements = 'disp_x disp_y'
displacement_gradients = 'gxx gxy gyx gyy'
[]
[AuxVariables]
[./disp_x]
[./InitialCondition]
type = FunctionIC
function = '0.1*sin(2*x/10*3.14159265359)'
[../]
[../]
[./disp_y]
[./InitialCondition]
type = FunctionIC
function = '0.1*sin(1*y/10*3.14159265359)'
[../]
[../]
[]
[Variables]
[./c]
order = THIRD
family = HERMITE
initial_condition = 0
[../]
[./gxx]
[../]
[./gxy]
[../]
[./gyx]
[../]
[./gyy]
[../]
[]
[Kernels]
[./dt]
type = TimeDerivative
variable = c
[../]
[./bulk]
type = CahnHilliard
variable = c
mob_name = M
f_name = F
[../]
[./int]
type = CHInterface
variable = c
mob_name = M
kappa_name = kappa_c
[../]
[./gxx]
type = GradientComponent
variable = gxx
v = disp_x
component = 0
[../]
[./gxy]
type = GradientComponent
variable = gxy
v = disp_x
component = 1
[../]
[./gyx]
type = GradientComponent
variable = gyx
v = disp_y
component = 0
[../]
[./gyy]
type = GradientComponent
variable = gyy
v = disp_y
component = 1
[../]
[]
[BCs]
[./Periodic]
[./All]
auto_direction = 'x y'
[../]
[../]
[]
[Materials]
[./consts]
type = GenericConstantMaterial
prop_names = 'M kappa_c'
prop_values = '1 0.1'
[../]
[./straingradderiv]
type = StrainGradDispDerivatives
[../]
[./elasticity_tensor]
type = ComputeConcentrationDependentElasticityTensor
c = c
C0_ijkl = '1.0 1.0'
C1_ijkl = '3.0 3.0'
fill_method0 = symmetric_isotropic
fill_method1 = symmetric_isotropic
[../]
[./smallstrain]
type = ComputeSmallStrain
[../]
[./linearelastic_a]
type = ComputeLinearElasticStress
[../]
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = F
args = 'c'
derivative_order = 3
[../]
[]
[Executioner]
type = Transient
scheme = 'bdf2'
solve_type = NEWTON
l_max_its = 30
l_tol = 1.0e-6
nl_max_its = 15
nl_rel_tol = 1.0e-7
nl_abs_tol = 1.0e-10
num_steps = 2
dt = 1
[]
[Outputs]
perf_graph = true
exodus = true
[]
(modules/combined/test/tests/evolving_mass_density/rz_tensors.i)
# Constant mass in RZ using Tensor Mechanics
#
# This test forces an RZ mesh to move through a series of displacements
# in order to test whether the mass is constant. The density is chosen
# such that the mass is 2.5.
# This test is a duplicate of the rz.i test for solid mechanics, and the
# output of this tensor mechanics test is compared to the original
# solid mechanics output. The duplication is necessary to test the
# migrated tensor mechanics version while maintaining tests for solid mechanics.
[Mesh]
file = elastic_patch_rz.e
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
coord_type = RZ
[]
[Functions]
[./x101]
type = PiecewiseLinear
x = '0 5 6'
y = '0 0 0.24'
[../]
[./y101]
type = PiecewiseLinear
x = '0 6'
y = '0 0'
[../]
[./x102]
type = PiecewiseLinear
x = '0 4 5'
y = '0 0 0.24'
[../]
[./y102]
type = PiecewiseLinear
x = '0 1 2 3'
y = '0 0 0.12 0'
[../]
[./x103]
type = PiecewiseLinear
x = '0 4 5'
y = '0 0 0.24'
[../]
[./y103]
type = PiecewiseLinear
x = '0 1 3 4'
y = '0 0.12 0.12 0'
[../]
[./x104]
type = PiecewiseLinear
x = '0 5 6'
y = '0 0 0.24'
[../]
[./y104]
type = PiecewiseLinear
x = '0 2 3 4'
y = '0 0 0.12 0'
[../]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[]
[BCs]
[./101x]
type = FunctionDirichletBC
variable = disp_x
boundary = 101
function = x101
[../]
[./101y]
type = FunctionDirichletBC
variable = disp_y
boundary = 101
function = y101
[../]
[./102x]
type = FunctionDirichletBC
variable = disp_x
boundary = 102
function = x102
[../]
[./102y]
type = FunctionDirichletBC
variable = disp_y
boundary = 102
function = y102
[../]
[./103x]
type = FunctionDirichletBC
variable = disp_x
boundary = 103
function = x103
[../]
[./103y]
type = FunctionDirichletBC
variable = disp_y
boundary = 103
function = y103
[../]
[./104x]
type = FunctionDirichletBC
variable = disp_x
boundary = 104
function = x104
[../]
[./104y]
type = FunctionDirichletBC
variable = disp_y
boundary = 104
function = y104
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = PATCH
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./small_strain_rz]
type = ComputeAxisymmetricRZSmallStrain
block = PATCH
[../]
[./elastic_stress]
type = ComputeLinearElasticStress
block = PATCH
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
# Two sets of linesearch options are for petsc 3.1 and 3.3 respectively
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 1
num_steps = 6
end_time = 6.0
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
file_base = rz_out
[../]
[]
[Postprocessors]
[./mass]
type = Mass
variable = disp_x
execute_on = 'initial timestep_end'
[../]
[]
(modules/combined/examples/phase_field-mechanics/interface_stress.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 50
ny = 50
nz = 50
xmax = 10
ymax = 10
zmax = 10
xmin = -10
ymin = -10
zmin = -10
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Functions]
[./sphere]
type = ParsedFunction
value = 'r:=sqrt(x^2+y^2+z^2); R:=(4.0-r)/2.0; if(R>1,1,if(R<0,0,3*R^2-2*R^3))'
[../]
[]
[AuxVariables]
[./eta]
[./InitialCondition]
type = FunctionIC
function = sphere
[../]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
generate_output = 'hydrostatic_stress stress_xx'
[../]
[]
[Materials]
[./ym]
type = DerivativeParsedMaterial
f_name = ym
function = (1-eta)*7+0.5
args = eta
[../]
[./elasticity]
type = ComputeVariableIsotropicElasticityTensor
poissons_ratio = 0.45
youngs_modulus = ym
args = eta
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./interface]
type = ComputeInterfaceStress
v = eta
stress = 1.0
[../]
[]
[VectorPostprocessors]
[./line]
type = SphericalAverage
variable = 'hydrostatic_stress'
radius = 10
bin_number = 40
[../]
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
csv = true
[]
(modules/tensor_mechanics/test/tests/critical_time_step/crit_time_solid_variable.i)
[GlobalParams]
displacements = 'disp_x'
[]
[Mesh]
type = GeneratedMesh
dim = 1
nx = 50
xmin = 0
xmax = 5
[]
[Variables]
[./disp_x]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./2_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[]
[Functions]
[./prefac]
type = ParsedFunction
value = '1+2*x'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.1
youngs_modulus = 1e6
elasticity_tensor_prefactor = prefac
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = '8050.0'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-4
l_max_its = 3
start_time = 0.0
dt = 0.1
num_steps = 1
end_time = 1.0
[]
[Postprocessors]
[./time_step]
type = CriticalTimeStep
[../]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/tensor_mechanics/test/tests/j_integral/j_integral_2d_small_strain.i)
#This tests the J-Integral evaluation capability.
#This is a 2d plane strain model
#The analytic solution for J1 is 2.434. This model
#converges to that solution with a refined mesh.
#Reference: National Agency for Finite Element Methods and Standards (U.K.):
#Test 1.1 from NAFEMS publication "Test Cases in Linear Elastic Fracture
#Mechanics" R0020.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Mesh]
file = crack2d.e
[]
[AuxVariables]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1.'
y = '0. 1.'
scale_factor = -1e2
[../]
[]
[DomainIntegral]
integrals = JIntegral
boundary = 800
crack_direction_method = CrackDirectionVector
crack_direction_vector = '1 0 0'
2d = true
axis_2d = 2
radius_inner = '4.0 4.5 5.0 5.5 6.0'
radius_outer = '4.5 5.0 5.5 6.0 6.5'
output_q = false
incremental = false
[]
[Modules/TensorMechanics/Master]
[./master]
strain = SMALL
add_variables = true
incremental = false
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
planar_formulation = PLANE_STRAIN
[../]
[]
[AuxKernels]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[../]
[]
[BCs]
[./crack_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[../]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 700
value = 0.0
[../]
[./Pressure]
[./Side1]
boundary = 400
function = rampConstant
[../]
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./elastic_stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
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 = 20
nl_rel_tol = 1e-12
nl_abs_tol = 1e-5
l_tol = 1e-2
start_time = 0.0
dt = 1
end_time = 1
num_steps = 1
[]
[Outputs]
file_base = j_integral_2d_small_strain_out
exodus = true
csv = true
[]
(modules/tensor_mechanics/test/tests/critical_time_step/crit_time_solid_uniform.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 10
nz = 15
xmin = 0
xmax = 2
ymin = 0
ymax = 2
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./2_x]
type = DirichletBC
variable = disp_x
boundary = 3
value = 0.0
[../]
[./2_y]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[../]
[./2_z]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.1
youngs_modulus = 1e6
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = '8050.0'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-4
l_max_its = 3
start_time = 0.0
dt = 0.1
num_steps = 1
end_time = 1.0
[]
[Postprocessors]
[./time_step]
type = CriticalTimeStep
[../]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/contact/test/tests/pressure/pressurePenalty_mechanical_constraint.i)
# This is a mechanical constraint (contact formulation) version of pressurePenalty.i
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = pressure.e
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = SMALL
generate_output = 'stress_yy'
[]
[]
[Contact]
[./m20_s10]
primary = 20
secondary = 10
penalty = 1e8
formulation = penalty
tangential_tolerance = 1e-3
tension_release = -1
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 3
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./z]
type = DirichletBC
variable = disp_z
boundary = 5
value = 0.0
[../]
[./Pressure]
[./press]
boundary = 7
factor = 1e3
[../]
[../]
[./down]
type = DirichletBC
variable = disp_y
boundary = 8
value = -2e-3
[../]
[]
[Materials]
[./stiffStuff1]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1.0e6
poissons_ratio = 0.0
[../]
[./stiffStuff1_stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_rel_tol = 1e-9
nl_abs_tol = 1e-9
l_max_its = 100
nl_max_its = 10
dt = 1.0
num_steps = 1
[]
[Outputs]
exodus = true
[]
(modules/combined/examples/phase_field-mechanics/kks_mechanics_KHS.i)
# KKS phase-field model coupled with elasticity using Khachaturyan's scheme as
# described in L.K. Aagesen et al., Computational Materials Science, 140, 10-21 (2017)
# Original run #170403a
[Mesh]
type = GeneratedMesh
dim = 3
nx = 640
ny = 1
nz = 1
xmin = -10
xmax = 10
ymin = 0
ymax = 0.03125
zmin = 0
zmax = 0.03125
elem_type = HEX8
[]
[Variables]
# order parameter
[./eta]
order = FIRST
family = LAGRANGE
[../]
# solute concentration
[./c]
order = FIRST
family = LAGRANGE
[../]
# chemical potential
[./w]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (matrix)
[./cm]
order = FIRST
family = LAGRANGE
[../]
# solute phase concentration (precipitate)
[./cp]
order = FIRST
family = LAGRANGE
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[ICs]
[./eta_ic]
variable = eta
type = FunctionIC
function = ic_func_eta
block = 0
[../]
[./c_ic]
variable = c
type = FunctionIC
function = ic_func_c
block = 0
[../]
[./w_ic]
variable = w
type = ConstantIC
value = 0.00991
block = 0
[../]
[./cm_ic]
variable = cm
type = ConstantIC
value = 0.131
block = 0
[../]
[./cp_ic]
variable = cp
type = ConstantIC
value = 0.236
block = 0
[../]
[]
[Functions]
[./ic_func_eta]
type = ParsedFunction
value = '0.5*(1.0+tanh((x)/delta_eta/sqrt(2.0)))'
vars = 'delta_eta'
vals = '0.8034'
[../]
[./ic_func_c]
type = ParsedFunction
value = '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))'
vars = 'delta'
vals = '0.8034'
[../]
[./psi_eq_int]
type = ParsedFunction
value = 'volume*psi_alpha'
vars = 'volume psi_alpha'
vals = 'volume psi_alpha'
[../]
[./gamma]
type = ParsedFunction
value = '(psi_int - psi_eq_int) / dy / dz'
vars = 'psi_int psi_eq_int dy dz'
vals = '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
args = 'Fglobal w c f_el sigma11 e11'
function = '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
f_name = fm
args = 'cm'
function = '6.55*(cm-0.13)^2'
[../]
# Chemical Free energy of the precipitate phase
[./fp]
type = DerivativeParsedMaterial
f_name = fp
args = 'cp'
function = '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
f_name = one_minus_h_explicit
args = eta
function = 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
interval = 20
[../]
checkpoint = true
[./csv]
type = CSV
execute_on = 'final'
[../]
[]
(modules/porous_flow/test/tests/energy_conservation/heat04_action_KT.i)
# heat04, but using an action with KT stabilization.
# See heat04.i for a full discussion of the results.
# The KT stabilization should have no impact as there is no flow, but this input file checks that MOOSE runs.
[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
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.5
cv = 2
cp = 2
bulk_modulus = 2.0
density0 = 3.0
[]
[]
[]
[PorousFlowUnsaturated]
coupling_type = ThermoHydroMechanical
displacements = 'disp_x disp_y disp_z'
porepressure = pp
temperature = temp
dictator_name = Sir
biot_coefficient = 1.0
gravity = '0 0 0'
fp = the_simple_fluid
van_genuchten_alpha = 1.0E-12
van_genuchten_m = 0.5
relative_permeability_type = Corey
relative_permeability_exponent = 0.0
stabilization = KT
flux_limiter_type = superbee
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = Sir
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]
[heat_source]
type = BodyForce
function = 1
variable = temp
[]
[]
[Functions]
[err_T_fcn]
type = ParsedFunction
vars = 'por0 rte temp rd rhc m0 fhc source'
vals = '0.5 0.25 t0 5 0.2 1.5 2 1'
value = '((1-por0)*exp(rte*temp)*rd*rhc*temp+m0*fhc*temp-source*t)/(source*t)'
[]
[err_pp_fcn]
type = ParsedFunction
vars = 'por0 rte temp rd rhc m0 fhc source bulk pp fte'
vals = '0.5 0.25 t0 5 0.2 1.5 2 1 2 p0 0.5'
value = '(bulk*(fte*temp-log(1+(por0-1)*exp(rte*temp))+log(por0))-pp)/pp'
[]
[]
[AuxVariables]
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[porosity]
type = PorousFlowPropertyAux
property = porosity
variable = porosity
[]
[]
[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
[]
[stress]
type = ComputeLinearElasticStress
[]
[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
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0 0 0 0 0 0 0 0 0'
[]
[thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '0 0 0 0 0 0 0 0 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_action
csv = true
[]
(modules/contact/test/tests/hertz_spherical/hertz_contact_hex20.i)
# Hertz Contact: Sphere on sphere
# Spheres have the same radius, Young's modulus, and Poisson's ratio.
# Define E:
# 1/E = (1-nu1^2)/E1 + (1-nu2^2)/E2
#
# Effective radius R:
# 1/R = 1/R1 + 1/R2
#
# F is the applied compressive load.
#
# Area of contact a::
# a^3 = 3FR/4E
#
# Depth of indentation d:
# d = a^2/R
#
#
# Let R1 = R2 = 2. Then R = 1.
#
# Let nu1 = nu2 = 0.25, E1 = E2 = 1.40625e7. Then E = 7.5e6.
#
# Let F = 10000. Then a = 0.1, d = 0.01.
#
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y disp_z'
order = SECOND
[]
[Mesh]#Comment
file = hertz_contact_hex20.e
allow_renumbering = false
[] # Mesh
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 795.77471545947674 # 10000/pi/2^2
[../]
[./disp_y]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. -0.01 -0.01'
[../]
[] # Functions
[Variables]
[./disp_x]
order = SECOND
family = LAGRANGE
[../]
[./disp_y]
order = SECOND
family = LAGRANGE
[../]
[./disp_z]
order = SECOND
family = LAGRANGE
[../]
[] # Variables
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./hydrostatic]
order = CONSTANT
family = MONOMIAL
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[] # AuxVariables
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = SMALL
extra_vector_tags = 'ref'
save_in = 'saved_x saved_y saved_z'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_xx
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_yy
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 2
variable = stress_yz
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 0
variable = stress_zx
[../]
# [./vonmises]
# type = RankTwoScalarAux
# rank_two_tensor = stress
# variable = vonmises
# scalar_type = VonMisesStress
# [../]
[] # AuxKernels
[BCs]
[./base_x]
type = DirichletBC
variable = disp_x
boundary = 1000
value = 0.0
[../]
[./base_y]
type = DirichletBC
variable = disp_y
boundary = 1000
value = 0.0
[../]
[./base_z]
type = DirichletBC
variable = disp_z
boundary = 1000
value = 0.0
[../]
[./symm_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./symm_z]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[../]
[./disp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = disp_y
[../]
[] # BCs
[Contact]
[./dummy_name]
primary = 1000
secondary = 100
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+10
[../]
[]
#[Dampers]
# [./contact_slip]
# type = ContactSlipDamper
# primary = 1000
# secondary = 100
# [../]
#[]
[Materials]
[./tensor]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1.40625e7
poissons_ratio = 0.25
[../]
[./stress]
type = ComputeLinearElasticStress
block = '1'
[../]
[./tensor_1000]
type = ComputeIsotropicElasticityTensor
block = '1000'
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./stress_1000]
type = ComputeLinearElasticStress
block = '1000'
[../]
[] # Materials
[Preconditioning]
[./SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-7
l_max_its = 10
start_time = 0.0
dt = 0.05
end_time = 2.0
[./Quadrature]
order = THIRD
[../]
[] # Executioner
[Postprocessors]
[./maxdisp]
type = NodalVariableValue
nodeid = 386 # 387-1 where 387 is the exodus node number of the top-center node
variable = disp_y
[../]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 2
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 2
[../]
[./bot_react_z]
type = NodalSum
variable = saved_z
boundary = 2
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[] # Outputs
(modules/combined/examples/phase_field-mechanics/LandauPhaseTrans.i)
#
# Martensitic transformation
# Chemical driving force described by Landau Polynomial
# Coupled with elasticity (Mechanics)
#
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 100
ny = 100
xmin = 0
xmax = 100
ymin = 0
ymax = 100
elem_type = QUAD4
[]
[Variables]
[./eta1]
[./InitialCondition]
type = RandomIC
min = 0
max = 0.1
[../]
[../]
[./eta2]
[./InitialCondition]
type = RandomIC
min = 0
max = 0.1
[../]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
generate_output = 'stress_xx stress_yy'
eigenstrain_names = 'eigenstrain1 eigenstrain2'
[../]
[]
[Kernels]
[./eta_bulk1]
type = AllenCahn
variable = eta1
args = 'eta2'
f_name = F
[../]
[./eta_bulk2]
type = AllenCahn
variable = eta2
args = 'eta1'
f_name = F
[../]
[./eta_interface1]
type = ACInterface
variable = eta1
kappa_name = kappa_eta
[../]
[./eta_interface2]
type = ACInterface
variable = eta2
kappa_name = kappa_eta
[../]
[./deta1dt]
type = TimeDerivative
variable = eta1
[../]
[./deta2dt]
type = TimeDerivative
variable = eta2
[../]
[]
[Materials]
[./consts]
type = GenericConstantMaterial
prop_names = 'L kappa_eta'
prop_values = '1 1'
[../]
[./chemical_free_energy]
type = DerivativeParsedMaterial
f_name = Fc
args = 'eta1 eta2'
constant_names = 'A2 A3 A4'
constant_expressions = '0.2 -12.6 12.4'
function = 'A2/2*(eta1^2+eta2^2) + A3/3*(eta1^3+eta2^3) + A4/4*(eta1^2+eta2^2)^2'
enable_jit = true
derivative_order = 2
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '700 300 300 700 300 700 300 300 300'
fill_method = symmetric9
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./var_dependence1]
type = DerivativeParsedMaterial
f_name = var_dep1
args = 'eta1'
function = eta1
enable_jit = true
derivative_order = 2
[../]
[./var_dependence2]
type = DerivativeParsedMaterial
f_name = var_dep2
args = 'eta2'
function = eta2
enable_jit = true
derivative_order = 2
[../]
[./eigenstrain1]
type = ComputeVariableEigenstrain
eigen_base = '0.1 -0.1 0 0 0 0'
prefactor = var_dep1
args = 'eta1'
eigenstrain_name = eigenstrain1
[../]
[./eigenstrain2]
type = ComputeVariableEigenstrain
eigen_base = '-0.1 0.1 0 0 0 0'
prefactor = var_dep2
args = 'eta2'
eigenstrain_name = eigenstrain2
[../]
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
args = 'eta1 eta2'
derivative_order = 2
[../]
[./totol_free_energy]
type = DerivativeSumMaterial
f_name = F
sum_materials = 'Fc Fe'
args = 'eta1 eta2'
derivative_order = 2
[../]
[]
[BCs]
[./all_y]
type = DirichletBC
variable = disp_y
boundary = 'top bottom left right'
value = 0
[../]
[./all_x]
type = DirichletBC
variable = disp_x
boundary = 'top bottom left right'
value = 0
[../]
[]
[Preconditioning]
# active = ' '
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
# this gives best performance on 4 cores
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 = 10
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 9
iteration_window = 2
growth_factor = 1.1
cutback_factor = 0.75
dt = 0.3
[../]
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[]
(modules/combined/examples/phase_field-mechanics/Nonconserved.i)
#
# Example 2
# Phase change driven by a mechanical (elastic) driving force.
# An oversized phase inclusion grows under a uniaxial tensile 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]
[./eta]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = SmoothCircleIC
x1 = 0
y1 = 0
radius = 30.0
invalue = 1.0
outvalue = 0.0
int_width = 10.0
[../]
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[./eta_bulk]
type = AllenCahn
variable = eta
f_name = F
[../]
[./eta_interface]
type = ACInterface
variable = eta
kappa_name = 1
[../]
[./time]
type = TimeDerivative
variable = eta
[../]
[]
#
# Try visualizing the stress tensor components as done in Conserved.i
#
[Materials]
[./consts]
type = GenericConstantMaterial
block = 0
prop_names = 'L'
prop_values = '1'
[../]
# matrix phase
[./stiffness_a]
type = ComputeElasticityTensor
base_name = phasea
block = 0
# lambda, mu values
C_ijkl = '7 7'
# Stiffness tensor is created from lambda=7, mu=7 for symmetric_isotropic fill method
fill_method = symmetric_isotropic
# See RankFourTensor.h for details on fill methods
[../]
[./strain_a]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
base_name = phasea
[../]
[./stress_a]
type = ComputeLinearElasticStress
block = 0
base_name = phasea
[../]
[./elastic_free_energy_a]
type = ElasticEnergyMaterial
base_name = phasea
f_name = Fea
block = 0
args = ''
[../]
# oversized precipitate phase (simulated using thermal expansion)
[./stiffness_b]
type = ComputeElasticityTensor
base_name = phaseb
block = 0
# Stiffness tensor lambda, mu values
# Note that the two phases could have different stiffnesses.
# Try reducing the precipitate stiffness (to '1 1') rather than making it oversized
C_ijkl = '7 7'
fill_method = symmetric_isotropic
[../]
[./strain_b]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
base_name = phaseb
eigenstrain_names = eigenstrain
[../]
[./eigenstrain_b]
type = ComputeEigenstrain
base_name = phaseb
eigen_base = '0.1 0.1 0.1'
eigenstrain_name = eigenstrain
[../]
[./stress_b]
type = ComputeLinearElasticStress
block = 0
base_name = phaseb
[../]
[./elastic_free_energy_b]
type = ElasticEnergyMaterial
base_name = phaseb
f_name = Feb
block = 0
args = ''
[../]
# Generate the global free energy from the phase free energies
[./switching]
type = SwitchingFunctionMaterial
block = 0
eta = eta
h_order = SIMPLE
[../]
[./barrier]
type = BarrierFunctionMaterial
block = 0
eta = eta
g_order = SIMPLE
[../]
[./free_energy]
type = DerivativeTwoPhaseMaterial
block = 0
f_name = F
fa_name = Fea
fb_name = Feb
eta = eta
args = ''
W = 0.1
derivative_order = 2
[../]
# Generate the global stress from the phase stresses
[./global_stress]
type = TwoPhaseStressMaterial
block = 0
base_A = phasea
base_B = phaseb
[../]
[]
[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]
# active = ' '
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
# this gives best performance on 4 cores
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 = 0.2
[../]
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[]
(modules/porous_flow/examples/tidal/earth_tide_fullsat.i)
# A confined aquifer is fully saturated with water
# Earth tides apply strain to the aquifer and the resulting porepressure changes are recorded
#
# To replicate standard poroelasticity exactly:
# (1) the PorousFlowBasicTHM Action is used;
# (2) multiply_by_density = false;
# (3) PorousFlowConstantBiotModulus 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'
PorousFlowDictator = dictator
block = 0
biot_coefficient = 0.6
multiply_by_density = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[BCs]
[strain_x]
type = FunctionDirichletBC
variable = disp_x
function = earth_tide_x
boundary = 'left right'
[]
[strain_y]
type = FunctionDirichletBC
variable = disp_y
function = earth_tide_y
boundary = 'bottom top'
[]
[strain_z]
type = FunctionDirichletBC
variable = disp_z
function = earth_tide_z
boundary = 'back front'
[]
[]
[Functions]
[earth_tide_x]
type = ParsedFunction
value = 'x*1E-8*(5*cos(t*2*pi) + 2*cos((t-0.5)*2*pi) + 1*cos((t+0.3)*0.5*pi))'
[]
[earth_tide_y]
type = ParsedFunction
value = 'y*1E-8*(7*cos(t*2*pi) + 4*cos((t-0.3)*2*pi) + 7*cos((t+0.6)*0.5*pi))'
[]
[earth_tide_z]
type = ParsedFunction
value = 'z*1E-8*(7*cos((t-0.5)*2*pi) + 4*cos((t-0.8)*2*pi) + 7*cos((t+0.1)*4*pi))'
[]
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
[]
[]
[]
[PorousFlowBasicTHM]
coupling_type = HydroMechanical
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
gravity = '0 0 0'
fp = the_simple_fluid
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 10.0E9 # drained bulk modulus
poissons_ratio = 0.25
[]
[strain]
type = ComputeSmallStrain
[]
[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 = 2E9
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-12 0 0 0 1E-12 0 0 0 1E-12'
[]
[]
[Postprocessors]
[pp]
type = PointValue
point = '0.5 0.5 0.5'
variable = porepressure
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 0.01
end_time = 2
[]
[Outputs]
console = true
csv = true
[]
(modules/xfem/test/tests/moving_interface/cut_mesh_3d.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
[]
[XFEM]
geometric_cut_userobjects = 'cut_mesh'
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 11
ny = 11
nz = 1
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.1
elem_type = HEX8
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0.1'
input = gen
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0.1'
input = block1
[]
[]
[UserObjects]
[cut_mesh]
type = InterfaceMeshCut3DUserObject
mesh_file = cylinder_surface.e
interface_velocity_function = vel_func
heal_always = true
block = 2
[]
[]
[Functions]
[vel_func]
type = ConstantFunction
value = 0.011
[]
[]
[Modules/TensorMechanics/Master]
displacements = 'disp_x disp_y disp_z'
[all]
strain = SMALL
add_variables = true
incremental = false
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
displacements = 'disp_x disp_y disp_z'
[]
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[ls]
[]
[]
[AuxKernels]
[ls]
type = MeshCutLevelSetAux
mesh_cut_user_object = cut_mesh
variable = ls
[]
[]
[Kernels]
[diff]
type = MatDiffusion
variable = u
diffusivity = 1
[]
[time_deriv]
type = TimeDerivative
variable = u
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[BCs]
[front_u]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[back_u]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[box1_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = left
[]
[box1_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = left
[]
[box1_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = left
[]
[box2_x]
type = FunctionDirichletBC
variable = disp_x
function = '0.01*t'
boundary = right
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 20
l_tol = 1e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
start_time = 0.0
dt = 2
end_time = 2
max_xfem_update = 1
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/ad_simple_linear/linear-hand-coded.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
[../]
[]
[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.1
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0e10
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
#Preconditioned JFNK (default)
solve_type = 'NEWTON'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomeramg
dtmin = 0.05
num_steps = 1
[]
[Outputs]
exodus = true
file_base = "linear-out"
[]
(modules/peridynamics/test/tests/jacobian_check/2D_mechanics_smallstrain_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.0
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(modules/tensor_mechanics/test/tests/jacobian/thermal_coupling.i)
# Thermal eigenstrain coupling
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temperature]
[../]
[]
[Kernels]
[./cx_elastic]
type = StressDivergenceTensors
variable = disp_x
temperature = temperature
eigenstrain_names = thermal_contribution
component = 0
[../]
[./cy_elastic]
type = StressDivergenceTensors
variable = disp_y
temperature = temperature
eigenstrain_names = thermal_contribution
component = 1
[../]
[./cz_elastic]
type = StressDivergenceTensors
variable = disp_z
temperature = temperature
eigenstrain_names = thermal_contribution
component = 2
[../]
[./temperature]
type = Diffusion
variable = temperature
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 10.0
poissons_ratio = 0.25
[../]
[./strain]
type = ComputeSmallStrain
eigenstrain_names = thermal_contribution
[../]
[./thermal_expansion]
type = ComputeThermalExpansionEigenstrain
temperature = temperature
thermal_expansion_coeff = 1.0E2
eigenstrain_name = thermal_contribution
stress_free_temperature = 0.0
[../]
[./admissible]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-snes_type'
petsc_options_value = 'test'
[../]
[]
[Executioner]
solve_type = NEWTON
end_time = 1
dt = 1
type = Transient
[]
(modules/combined/test/tests/poro_mechanics/selected_qp.i)
# A sample is unconstrained and its boundaries are
# also impermeable. Fluid is pumped into the sample via specifying
# the porepressure at all points, and the
# mean stress is monitored at quadpoints in the sample
# This is just to check that the selected_qp in RankTwoScalarAux is working
[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'
porepressure = porepressure
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./porepressure]
[../]
[]
[BCs]
[./pbdy]
type = FunctionDirichletBC
variable = porepressure
function = 'x*t'
boundary = 'left right'
[../]
[]
[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]
[./mean_stress0]
order = CONSTANT
family = MONOMIAL
[../]
[./mean_stress1]
order = CONSTANT
family = MONOMIAL
[../]
[./mean_stress2]
order = CONSTANT
family = MONOMIAL
[../]
[./mean_stress3]
order = CONSTANT
family = MONOMIAL
[../]
[./mean_stress4]
order = CONSTANT
family = MONOMIAL
[../]
[./mean_stress5]
order = CONSTANT
family = MONOMIAL
[../]
[./mean_stress6]
order = CONSTANT
family = MONOMIAL
[../]
[./mean_stress7]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./mean_stress0]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = mean_stress0
scalar_type = Hydrostatic
selected_qp = 0
[../]
[./mean_stress1]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = mean_stress1
scalar_type = Hydrostatic
selected_qp = 1
[../]
[./mean_stress2]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = mean_stress2
scalar_type = Hydrostatic
selected_qp = 2
[../]
[./mean_stress3]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = mean_stress3
scalar_type = Hydrostatic
selected_qp = 3
[../]
[./mean_stress4]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = mean_stress4
scalar_type = Hydrostatic
selected_qp = 4
[../]
[./mean_stress5]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = mean_stress5
scalar_type = Hydrostatic
selected_qp = 5
[../]
[./mean_stress6]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = mean_stress6
scalar_type = Hydrostatic
selected_qp = 6
[../]
[./mean_stress7]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = mean_stress7
scalar_type = Hydrostatic
selected_qp = 7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '0.0 1.0'
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 = 1.0
solid_bulk_compliance = 0.5
fluid_bulk_compliance = 0.3
constant_porosity = false
[../]
[]
[Postprocessors]
[./mean0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = mean_stress0
[../]
[./mean1]
type = PointValue
outputs = csv
point = '0 0 0'
variable = mean_stress1
[../]
[./mean2]
type = PointValue
outputs = csv
point = '0 0 0'
variable = mean_stress2
[../]
[./mean3]
type = PointValue
outputs = csv
point = '0 0 0'
variable = mean_stress3
[../]
[./mean4]
type = PointValue
outputs = csv
point = '0 0 0'
variable = mean_stress4
[../]
[./mean5]
type = PointValue
outputs = csv
point = '0 0 0'
variable = mean_stress5
[../]
[./mean6]
type = PointValue
outputs = csv
point = '0 0 0'
variable = mean_stress6
[../]
[./mean7]
type = PointValue
outputs = csv
point = '0 0 0'
variable = mean_stress7
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -sub_pc_type -sub_pc_factor_shift_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'gmres asm lu NONZERO 1E-14 1E-10 10000'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 1
dt = 1
[]
[Outputs]
execute_on = 'timestep_end'
exodus = false
file_base = selected_qp
[./csv]
type = CSV
[../]
[]
(modules/xfem/test/tests/moment_fitting/solid_mechanics_moment_fitting.i)
# Test for a mechanics problem which uses four points moment_fitting approach.
# See this paper (https://doi.org/10.1007/s00466-018-1544-2) for more details about moment_fitting approach.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = moment_fitting
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo0]
type = LineSegmentCutUserObject
cut_data = '0.0000e+00 6.3330e-01 3.9000e-01 6.3330e-01'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[./line_seg_cut_uo1]
type = LineSegmentCutUserObject
cut_data = '3.9000e-01 6.3330e-01 6.8000e-01 6.3330e-01'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[Functions]
[./right_trac_x]
type = ParsedFunction
value = '-(t*M*y)/I'
vars = 'M E I'
vals = '2e4 1e6 0.666666667'
[../]
[./bottom_disp_y]
type = ParsedFunction
value = '((t*M)/(2*E*I))*(1-nu*nu)*(x*x-0.25*l*l)'
vars = 'M E I l nu'
vals = '2e4 1e6 0.666666667 2.0 0.3'
[../]
[./soln_x]
type = ParsedFunction
value = '-(M/(E*I))*(1-nu*nu)*x*y'
vars = 'M E I nu'
vals = '2e4 1e6 0.666666667 0.3'
[../]
[./soln_y]
type = ParsedFunction
value = '(M/(2*E*I))*(1-nu*nu)*(x*x-0.25*l*l+(nu/(1-nu))*y*y)'
vars = 'M E I l nu'
vals = '2e4 1e6 0.666666667 2.0 0.3'
[../]
[]
[BCs]
[./right_x]
type = FunctionNeumannBC
boundary = 1
variable = disp_x
function = right_trac_x
[../]
[./bottom_y]
type = FunctionDirichletBC
boundary = 0
variable = disp_y
function = bottom_disp_y
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
# [./Quadrature]
# order = FOURTH
# type = MONOMIAL
# [../]
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 0.5
end_time = 1.0
num_steps = 5000
[]
[Postprocessors]
[./numel]
type = NumElems
execute_on = timestep_end
[../]
[./integral]
type = ElementVectorL2Error
var_x = disp_x
var_y = disp_y
function_x = soln_x
function_y = soln_y
execute_on = timestep_end
[../]
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/porous_flow/examples/tutorial/04.i)
# Darcy flow with heat advection and conduction, and elasticity
[Mesh]
[annular]
type = AnnularMeshGenerator
nr = 10
rmin = 1.0
rmax = 10
growth_r = 1.4
nt = 4
dmin = 0
dmax = 90
[]
[make3D]
type = MeshExtruderGenerator
extrusion_vector = '0 0 12'
num_layers = 3
bottom_sideset = 'bottom'
top_sideset = 'top'
input = annular
[]
[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_subdomain_ids = 1
new_sideset_name = 'injection_area'
input = 'aquifer'
[]
[rename]
type = RenameBlockGenerator
old_block = '0 1'
new_block = 'caps aquifer'
input = 'injection_area'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
biot_coefficient = 1.0
[]
[Variables]
[porepressure]
[]
[temperature]
initial_condition = 293
scaling = 1E-8
[]
[disp_x]
scaling = 1E-10
[]
[disp_y]
scaling = 1E-10
[]
[disp_z]
scaling = 1E-10
[]
[]
[PorousFlowBasicTHM]
porepressure = porepressure
temperature = temperature
coupling_type = ThermoHydroMechanical
gravity = '0 0 0'
fp = the_simple_fluid
eigenstrain_names = thermal_contribution
use_displaced_mesh = false
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1E6
boundary = injection_area
[]
[constant_injection_temperature]
type = DirichletBC
variable = temperature
value = 313
boundary = injection_area
[]
[roller_tmax]
type = DirichletBC
variable = disp_x
value = 0
boundary = dmax
[]
[roller_tmin]
type = DirichletBC
variable = disp_y
value = 0
boundary = dmin
[]
[roller_top_bottom]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'top bottom'
[]
[cavity_pressure_x]
type = Pressure
boundary = injection_area
variable = disp_x
component = 0
factor = 1E6
use_displaced_mesh = false
[]
[cavity_pressure_y]
type = Pressure
boundary = injection_area
variable = disp_y
component = 1
factor = 1E6
use_displaced_mesh = false
[]
[]
[AuxVariables]
[stress_rr]
family = MONOMIAL
order = CONSTANT
[]
[stress_pp]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[stress_rr]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_rr
scalar_type = RadialStress
point1 = '0 0 0'
point2 = '0 0 1'
[]
[stress_pp]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_pp
scalar_type = HoopStress
point1 = '0 0 0'
point2 = '0 0 1'
[]
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 2E9
viscosity = 1.0E-3
density0 = 1000.0
thermal_expansion = 0.0002
cp = 4194
cv = 4186
porepressure_coefficient = 0
[]
[]
[]
[Materials]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
solid_bulk_compliance = 2E-7
fluid_bulk_modulus = 1E7
[]
[permeability_aquifer]
type = PorousFlowPermeabilityConst
block = aquifer
permeability = '1E-14 0 0 0 1E-14 0 0 0 1E-14'
[]
[permeability_caps]
type = PorousFlowPermeabilityConst
block = caps
permeability = '1E-15 0 0 0 1E-15 0 0 0 1E-16'
[]
[thermal_expansion]
type = PorousFlowConstantThermalExpansionCoefficient
drained_coefficient = 0.003
fluid_coefficient = 0.0002
[]
[rock_internal_energy]
type = PorousFlowMatrixInternalEnergy
density = 2500.0
specific_heat_capacity = 1200.0
[]
[thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '10 0 0 0 10 0 0 0 10'
block = 'caps aquifer'
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 5E9
poissons_ratio = 0.0
[]
[strain]
type = ComputeSmallStrain
eigenstrain_names = thermal_contribution
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = temperature
thermal_expansion_coeff = 0.001 # this is the linear thermal expansion coefficient
eigenstrain_name = thermal_contribution
stress_free_temperature = 293
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[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 = 1E6
dt = 1E5
nl_abs_tol = 1E-15
nl_rel_tol = 1E-14
[]
[Outputs]
exodus = true
[]
(modules/xfem/test/tests/second_order_elements/square_branch_quad9_2d.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD9
[]
[UserObjects]
[./line_seg_cut_set_uo]
type = LineSegmentCutSetUserObject
cut_data = '-1.0000e-10 6.6340e-01 6.6340e-01 -1.0000e-10 0.0 1.0
3.3120e-01 3.3200e-01 1.0001e+00 3.3200e-01 1.0 2.0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[Functions]
[./right_disp_x]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[./top_disp_y]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[]
[BCs]
[./right_x]
type = FunctionDirichletBC
boundary = 1
variable = disp_x
function = right_disp_x
[../]
[./top_y]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = top_disp_y
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 2.2
num_steps = 5000
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/peridynamics/test/tests/failure_tests/2D_stress_failure_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
cracks_start = '0.25 0.5 0'
cracks_end = '0.75 0.5 0'
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 8
ny = 8
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./damage]
[../]
[./intact_bonds_num]
[../]
[./critical_stress]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./bond_status]
type = RankTwoBasedFailureCriteriaNOSPD
variable = bond_status
rank_two_tensor = stress
critical_variable = critical_stress
failure_criterion = VonMisesStress
[../]
[]
[UserObjects]
[./damage]
type = NodalDamageIndexPD
variable = damage
[../]
[./intact_bonds]
type = NodalNumIntactBondsPD
variable = intact_bonds_num
[../]
[]
[ICs]
[./critical_stretch]
type = ConstantIC
variable = critical_stress
value = 150
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[../]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = 1002
value = 0.0
[../]
[./bottom_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1000
function = '-0.001*t'
[../]
[./rbm_x]
type = RBMPresetOldValuePD
variable = disp_x
boundary = 999
[../]
[./rbm_y]
type = RBMPresetOldValuePD
variable = disp_y
boundary = 999
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.33
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
start_time = 0
dt = 0.5
end_time = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
[Outputs]
file_base = 2D_stress_failure_H1NOSPD
exodus = 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_subdomain_ids = 1
new_sideset_name = 'injection_area'
input = 'aquifer'
[]
[rename]
type = RenameBlockGenerator
old_block = '0 1'
new_block = 'caps aquifer'
input = 'injection_area'
[]
[]
[Problem]
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
args = 'pwater pgas swater sgas'
function = '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
[]
[]
[Modules]
[FluidProperties]
[true_water]
type = Water97FluidProperties
[]
[tabulated_water]
type = TabulatedFluidProperties
fp = true_water
temperature_min = 275
pressure_max = 1E8
fluid_property_file = water97_tabulated_11.csv
[]
[true_co2]
type = CO2FluidProperties
[]
[tabulated_co2]
type = TabulatedFluidProperties
fp = true_co2
temperature_min = 275
pressure_max = 1E8
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
vars = effective_fluid_pressure_at_wellbore
vals = effective_fluid_pressure_at_wellbore
value = '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/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_subdomain_ids = 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
args = 'pwater pgas swater sgas'
function = '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
[]
[]
[Modules]
[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_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_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
vars = effective_fluid_pressure_at_wellbore
vals = effective_fluid_pressure_at_wellbore
value = '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/combined/test/tests/multiphase_mechanics/elasticenergymaterial.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 25
ny = 25
nz = 0
xmax = 250
ymax = 250
zmax = 0
elem_type = QUAD4
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./c]
[./InitialCondition]
type = SmoothCircleIC
x1 = 125.0
y1 = 125.0
radius = 60.0
invalue = 1.0
outvalue = 0.1
int_width = 50.0
[../]
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./left]
type = DirichletBC
boundary = left
variable = disp_x
value = 0.0
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[./dummy]
type = MatDiffusion
variable = c
diffusivity = 0
[../]
[]
[Materials]
[./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
args = c
f_name = prefactor
constant_names = 'epsilon0 c0'
constant_expressions = '0.05 0'
function = '(c - c0) * epsilon0'
[../]
[./eigenstrain]
type = ComputeVariableEigenstrain
eigen_base = '1'
args = c
prefactor = prefactor
eigenstrain_name = eigenstrain
[../]
[./elasticenergy]
type = ElasticEnergyMaterial
args = 'c'
outputs = exodus
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-10
num_steps = 1
petsc_options_iname = '-pc_factor_shift_type'
petsc_options_value = 'nonzero'
[]
[Outputs]
exodus = true
[]
(modules/porous_flow/test/tests/poro_elasticity/terzaghi.i)
# Terzaghi's problem of consolodation of a drained medium
#
# A saturated soil sample sits in a bath of water.
# It is constrained on its sides, and bottom.
# Its sides and bottom are also impermeable.
# Initially it is unstressed.
# A normal stress, q, is applied to the soil's top.
# The soil then slowly compresses as water is squeezed
# out from the sample from its top (the top BC for
# the porepressure is porepressure = 0).
#
# See, for example. Section 2.2 of the online manuscript
# Arnold Verruijt "Theory and Problems of Poroelasticity" Delft University of Technology 2013
# but note that the "sigma" in that paper is the negative
# of the stress in TensorMechanics
#
# Here are the problem's parameters, and their values:
# Soil height. h = 10
# Soil's Lame lambda. la = 2
# Soil's Lame mu, which is also the Soil's shear modulus. mu = 3
# Soil bulk modulus. K = la + 2*mu/3 = 4
# Soil confined compressibility. m = 1/(K + 4mu/3) = 0.125
# Soil bulk compliance. 1/K = 0.25
# Fluid bulk modulus. Kf = 8
# Fluid bulk compliance. 1/Kf = 0.125
# Fluid mobility (soil permeability/fluid viscosity). k = 1.5
# Soil initial porosity. phi0 = 0.1
# Biot coefficient. alpha = 0.6
# Soil initial storativity, which is the reciprocal of the initial Biot modulus. S = phi0/Kf + (alpha - phi0)(1 - alpha)/K = 0.0625
# Consolidation coefficient. c = k/(S + alpha^2 m) = 13.95348837
# Normal stress on top. q = 1
# Initial porepressure, resulting from instantaneous application of q, assuming corresponding instantaneous increase of porepressure (Note that this is calculated by MOOSE: we only need it for the analytical solution). p0 = alpha*m*q/(S + alpha^2 m) = 0.69767442
# Initial vertical displacement (down is positive), resulting from instantaneous application of q (Note this is calculated by MOOSE: we only need it for the analytical solution). uz0 = q*m*h*S/(S + alpha^2 m)
# Final vertical displacement (down in positive) (Note this is calculated by MOOSE: we only need it for the analytical solution). uzinf = q*m*h
#
# The solution for porepressure is
# P = 4*p0/\pi \sum_{k=1}^{\infty} \frac{(-1)^{k-1}}{2k-1} \cos ((2k-1)\pi z/(2h)) \exp(-(2k-1)^2 \pi^2 ct/(4 h^2))
# This series converges very slowly for ct/h^2 small, so in that domain
# P = p0 erf( (1-(z/h))/(2 \sqrt(ct/h^2)) )
#
# The degree of consolidation is defined as
# U = (uz - uz0)/(uzinf - uz0)
# where uz0 and uzinf are defined above, and
# uz = the vertical displacement of the top (down is positive)
# U = 1 - (8/\pi^2)\sum_{k=1}^{\infty} \frac{1}{(2k-1)^2} \exp(-(2k-1)^2 \pi^2 ct/(4 h^2))
#
# 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 = 1
ny = 1
nz = 10
xmin = -1
xmax = 1
ymin = -1
ymax = 1
zmin = 0
zmax = 10
[]
[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 = 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'
[]
[basefixed]
type = DirichletBC
variable = disp_z
value = 0
boundary = back
[]
[topdrained]
type = DirichletBC
variable = porepressure
value = 0
boundary = front
[]
[topload]
type = NeumannBC
variable = disp_z
value = -1
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.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
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 8
density0 = 1
thermal_expansion = 0
viscosity = 0.96
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
# bulk modulus is lambda + 2*mu/3 = 2 + 2*3/3 = 4
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[eff_fluid_pressure_qp]
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 = 4
[]
[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'
variable = porepressure
use_displaced_mesh = false
[]
[p1]
type = PointValue
outputs = csv
point = '0 0 1'
variable = porepressure
use_displaced_mesh = false
[]
[p2]
type = PointValue
outputs = csv
point = '0 0 2'
variable = porepressure
use_displaced_mesh = false
[]
[p3]
type = PointValue
outputs = csv
point = '0 0 3'
variable = porepressure
use_displaced_mesh = false
[]
[p4]
type = PointValue
outputs = csv
point = '0 0 4'
variable = porepressure
use_displaced_mesh = false
[]
[p5]
type = PointValue
outputs = csv
point = '0 0 5'
variable = porepressure
use_displaced_mesh = false
[]
[p6]
type = PointValue
outputs = csv
point = '0 0 6'
variable = porepressure
use_displaced_mesh = false
[]
[p7]
type = PointValue
outputs = csv
point = '0 0 7'
variable = porepressure
use_displaced_mesh = false
[]
[p8]
type = PointValue
outputs = csv
point = '0 0 8'
variable = porepressure
use_displaced_mesh = false
[]
[p9]
type = PointValue
outputs = csv
point = '0 0 9'
variable = porepressure
use_displaced_mesh = false
[]
[p99]
type = PointValue
outputs = csv
point = '0 0 10'
variable = porepressure
use_displaced_mesh = false
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 10'
variable = disp_z
use_displaced_mesh = false
[]
[dt]
type = FunctionValuePostprocessor
outputs = console
function = if(0.5*t<0.1,0.5*t,0.1)
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
[TimeStepper]
type = PostprocessorDT
postprocessor = dt
dt = 0.0001
[]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = terzaghi
[csv]
type = CSV
[]
[]
(modules/combined/test/tests/poro_mechanics/terzaghi.i)
# Terzaghi's problem of consolodation of a drained medium
#
# A saturated soil sample sits in a bath of water.
# It is constrained on its sides, and bottom.
# Its sides and bottom are also impermeable.
# Initially it is unstressed.
# A normal stress, q, is applied to the soil's top.
# The soil then slowly compresses as water is squeezed
# out from the sample from its top (the top BC for
# the porepressure is porepressure = 0).
#
# See, for example. Section 2.2 of the online manuscript
# Arnold Verruijt "Theory and Problems of Poroelasticity" Delft University of Technology 2013
# but note that the "sigma" in that paper is the negative
# of the stress in TensorMechanics
#
# Here are the problem's parameters, and their values:
# Soil height. h = 10
# Soil's Lame lambda. la = 2
# Soil's Lame mu, which is also the Soil's shear modulus. mu = 3
# Soil bulk modulus. K = la + 2*mu/3 = 4
# Soil confined compressibility. m = 1/(K + 4mu/3) = 0.125
# Soil bulk compliance. 1/K = 0.25
# Fluid bulk modulus. Kf = 8
# Fluid bulk compliance. 1/Kf = 0.125
# Fluid mobility (soil permeability/fluid viscosity). k = 1.5
# Soil initial porosity. phi0 = 0.1
# Biot coefficient. alpha = 0.6
# Soil initial storativity, which is the reciprocal of the initial Biot modulus. S = phi0/Kf + (alpha - phi0)(1 - alpha)/K = 0.0625
# Consolidation coefficient. c = k/(S + alpha^2 m) = 13.95348837
# Normal stress on top. q = 1
# Initial porepressure, resulting from instantaneous application of q, assuming corresponding instantaneous increase of porepressure (Note that this is calculated by MOOSE: we only need it for the analytical solution). p0 = alpha*m*q/(S + alpha^2 m) = 0.69767442
# Initial vertical displacement (down is positive), resulting from instantaneous application of q (Note this is calculated by MOOSE: we only need it for the analytical solution). uz0 = q*m*h*S/(S + alpha^2 m)
# Final vertical displacement (down in positive) (Note this is calculated by MOOSE: we only need it for the analytical solution). uzinf = q*m*h
#
# The solution for porepressure is
# P = 4*p0/\pi \sum_{k=1}^{\infty} \frac{(-1)^{k-1}}{2k-1} \cos ((2k-1)\pi z/(2h)) \exp(-(2k-1)^2 \pi^2 ct/(4 h^2))
# This series converges very slowly for ct/h^2 small, so in that domain
# P = p0 erf( (1-(z/h))/(2 \sqrt(ct/h^2)) )
#
# The degree of consolidation is defined as
# U = (uz - uz0)/(uzinf - uz0)
# where uz0 and uzinf are defined above, and
# uz = the vertical displacement of the top (down is positive)
# U = 1 - (8/\pi^2)\sum_{k=1}^{\infty} \frac{1}{(2k-1)^2} \exp(-(2k-1)^2 \pi^2 ct/(4 h^2))
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 10
xmin = -1
xmax = 1
ymin = -1
ymax = 1
zmin = 0
zmax = 10
[]
[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
[../]
[./topdrained]
type = DirichletBC
variable = porepressure
value = 0
boundary = front
[../]
[./topload]
type = NeumannBC
variable = disp_z
value = -1
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
[../]
[./darcy_flow]
type = CoefDiffusion
variable = porepressure
coef = 1.5
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
# bulk modulus is lambda + 2*mu/3 = 2 + 2*3/3 = 4
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 = 0.25
fluid_bulk_compliance = 0.125
constant_porosity = true
[../]
[]
[Postprocessors]
[./p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[../]
[./p1]
type = PointValue
outputs = csv
point = '0 0 1'
variable = porepressure
[../]
[./p2]
type = PointValue
outputs = csv
point = '0 0 2'
variable = porepressure
[../]
[./p3]
type = PointValue
outputs = csv
point = '0 0 3'
variable = porepressure
[../]
[./p4]
type = PointValue
outputs = csv
point = '0 0 4'
variable = porepressure
[../]
[./p5]
type = PointValue
outputs = csv
point = '0 0 5'
variable = porepressure
[../]
[./p6]
type = PointValue
outputs = csv
point = '0 0 6'
variable = porepressure
[../]
[./p7]
type = PointValue
outputs = csv
point = '0 0 7'
variable = porepressure
[../]
[./p8]
type = PointValue
outputs = csv
point = '0 0 8'
variable = porepressure
[../]
[./p9]
type = PointValue
outputs = csv
point = '0 0 9'
variable = porepressure
[../]
[./p99]
type = PointValue
outputs = csv
point = '0 0 10'
variable = porepressure
[../]
[./zdisp]
type = PointValue
outputs = csv
point = '0 0 10'
variable = disp_z
[../]
[./dt]
type = FunctionValuePostprocessor
outputs = console
function = if(0.5*t<0.1,0.5*t,0.1)
[../]
[]
[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
[./TimeStepper]
type = PostprocessorDT
postprocessor = dt
dt = 0.0001
[../]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = terzaghi
[./csv]
type = CSV
[../]
[]
(modules/combined/examples/thermomechanics/circle_thermal_expansion_stress.i)
# This example problem demonstrates coupling heat conduction with mechanics.
# A circular domain has as uniform heat source that increases with time
# and a fixed temperature on the outer boundary, resulting in a temperature gradient.
# This results in heterogeneous thermal expansion, where it is pinned in the center.
# Looking at the hoop stress demonstrates why fuel pellets have radial cracks
# that extend from the outer boundary to about halfway through the radius.
# The problem is run with length units of microns.
[Mesh]
#Circle mesh has a radius of 1000 units
type = FileMesh
file = circle.e
uniform_refine = 1
[]
[Variables]
# We solve for the temperature and the displacements
[./T]
initial_condition = 800
scaling = 1e7
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./radial_stress]
order = CONSTANT
family = MONOMIAL
[../]
[./hoop_stress]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
active = 'TensorMechanics htcond Q_function'
[./htcond] #Heat conduction equation
type = HeatConduction
variable = T
[../]
[./TensorMechanics] #Action that creates equations for disp_x and disp_y
displacements = 'disp_x disp_y'
[../]
[./Q_function] #Heat generation term
type = BodyForce
variable = T
value = 1
function = 0.8e-9*t
[../]
[]
[AuxKernels]
[./radial_stress] #Calculates radial stress from cartesian
type = CylindricalRankTwoAux
variable = radial_stress
rank_two_tensor = stress
index_j = 0
index_i = 0
center_point = '0 0 0'
[../]
[./hoop_stress] #Calculates hoop stress from cartesian
type = CylindricalRankTwoAux
variable = hoop_stress
rank_two_tensor = stress
index_j = 1
index_i = 1
center_point = '0 0 0'
[../]
[]
[BCs]
[./outer_T] #Temperature on outer edge is fixed at 800K
type = DirichletBC
variable = T
boundary = 1
value = 800
[../]
[./outer_x] #Displacements in the x-direction are fixed in the center
type = DirichletBC
variable = disp_x
boundary = 2
value = 0
[../]
[./outer_y] #Displacements in the y-direction are fixed in the center
type = DirichletBC
variable = disp_y
boundary = 2
value = 0
[../]
[]
[Materials]
[./thcond] #Thermal conductivity is set to 5 W/mK
type = GenericConstantMaterial
block = 1
prop_names = 'thermal_conductivity'
prop_values = '5e-6'
[../]
[./iso_C] #Sets isotropic elastic constants
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '2.15e5 0.74e5'
block = 1
[../]
[./strain] #We use small deformation mechanics
type = ComputeSmallStrain
displacements = 'disp_x disp_y'
block = 1
eigenstrain_names = eigenstrain
[../]
[./stress] #We use linear elasticity
type = ComputeLinearElasticStress
block = 1
[../]
[./thermal_strain]
type= ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
temperature = T
stress_free_temperature = 273
block = 1
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
num_steps = 10
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
l_max_its = 30
nl_max_its = 10
nl_abs_tol = 1e-9
l_tol = 1e-04
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/tensor_mechanics/test/tests/action/material_output_order.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
origin = '0 0 2'
direction = '0 0 1'
polar_moment_of_inertia = pmi
factor = t
[]
[Mesh]
[ring]
type = AnnularMeshGenerator
nr = 1
nt = 30
rmin = 0.95
rmax = 1
[]
[extrude]
type = MeshExtruderGenerator
input = ring
extrusion_vector = '0 0 2'
bottom_sideset = 'bottom'
top_sideset = 'top'
num_layers = 5
[]
[]
[AuxVariables]
[alpha_var]
[]
[shear_stress_var]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[alpha]
type = RotationAngle
variable = alpha_var
[]
[shear_stress]
type = ParsedAux
variable = shear_stress_var
args = 'stress_yz stress_xz'
function = 'sqrt(stress_yz^2 + stress_xz^2)'
[]
[]
[BCs]
# fix bottom
[fix_x]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0
[]
[fix_y]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
[]
[fix_z]
type = DirichletBC
boundary = bottom
variable = disp_z
value = 0
[]
# twist top
[twist_x]
type = Torque
boundary = top
variable = disp_x
[]
[twist_y]
type = Torque
boundary = top
variable = disp_y
[]
[twist_z]
type = Torque
boundary = top
variable = disp_z
[]
[]
[Modules/TensorMechanics/Master]
[all]
add_variables = true
strain = SMALL
generate_output = 'vonmises_stress stress_yz stress_xz'
[]
[]
[Postprocessors]
[pmi]
type = PolarMomentOfInertia
boundary = top
# execute_on = 'INITIAL NONLINEAR'
execute_on = 'INITIAL'
[]
[alpha]
type = SideAverageValue
variable = alpha_var
boundary = top
[]
[shear_stress]
type = ElementAverageValue
variable = shear_stress_var
[]
[]
[Materials]
[stress]
type = ComputeLinearElasticStress
[]
[elastic]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 0.3
shear_modulus = 100
[]
[]
[Executioner]
# type = Steady
type = Transient
num_steps = 1
solve_type = PJFNK
petsc_options_iname = '-pctype'
petsc_options_value = 'lu'
nl_max_its = 150
[]
[Outputs]
exodus = true
print_linear_residuals = false
perf_graph = true
[]
(modules/tensor_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]
[./TensorMechanics]
[../]
[]
[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/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
value = '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/porous_flow/test/tests/actions/basicthm_hm.i)
# PorousFlowBasicTHM action with coupling_type = HydroMechanical
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 3
xmax = 10
ymax = 3
[]
[aquifer]
input = gen
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 1 0'
top_right = '10 2 0'
[]
[injection_area]
type = SideSetsAroundSubdomainGenerator
block = 1
new_boundary = 'injection_area'
normal = '-1 0 0'
input = 'aquifer'
[]
[outflow_area]
type = SideSetsAroundSubdomainGenerator
block = 1
new_boundary = 'outflow_area'
normal = '1 0 0'
input = 'injection_area'
[]
[rename]
type = RenameBlockGenerator
old_block = '0 1'
new_block = 'caprock aquifer'
input = 'outflow_area'
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y'
biot_coefficient = 1.0
[]
[Variables]
[porepressure]
initial_condition = 1e6
[]
[disp_x]
scaling = 1e-10
[]
[disp_y]
scaling = 1e-10
[]
[]
[AuxVariables]
[temperature]
initial_condition = 293
[]
[]
[PorousFlowBasicTHM]
porepressure = porepressure
temperature = temperature
coupling_type = HydroMechanical
gravity = '0 0 0'
fp = simple_fluid
use_displaced_mesh = false
add_stress_aux = false
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1.5e6
boundary = injection_area
[]
[constant_outflow_porepressure]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = outflow_area
pt_vals = '0 1e9'
multipliers = '0 1e9'
flux_function = 1e-6
PT_shift = 1e6
[]
[top_bottom]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'top bottom'
[]
[right]
type = DirichletBC
variable = disp_x
value = 0
boundary = right
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
[]
[]
[]
[Materials]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
solid_bulk_compliance = 2e-7
fluid_bulk_modulus = 1e7
[]
[permeability_aquifer]
type = PorousFlowPermeabilityConst
block = aquifer
permeability = '1e-13 0 0 0 1e-13 0 0 0 1e-13'
[]
[permeability_caprock]
type = PorousFlowPermeabilityConst
block = caprock
permeability = '1e-15 0 0 0 1e-15 0 0 0 1e-15'
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 5e9
poissons_ratio = 0.0
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Preconditioning]
[basic]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1e4
dt = 1e3
nl_abs_tol = 1e-14
nl_rel_tol = 1e-14
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/gravity/gravity_test.i)
#
# Gravity Test
#
# This test is designed to apply a gravity body force.
#
# The mesh is composed of one block with a single element.
# The bottom is fixed in all three directions. Poisson's ratio
# is zero and the density is 20/9.81
# which makes it trivial to check displacements.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
[]
[Modules/TensorMechanics/Master]
[all]
add_variables = true
[]
[]
[Kernels]
[gravity_y]
type = Gravity
variable = disp_y
value = -9.81
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 0.5e6'
[]
[stress]
type = ComputeLinearElasticStress
[]
[density]
type = GenericConstantMaterial
prop_names = density
prop_values = 2.0387
[]
[]
[Executioner]
type = Steady
nl_abs_tol = 1e-10
l_max_its = 20
[]
[Outputs]
[out]
type = Exodus
elemental_as_nodal = true
[]
[]
(modules/combined/examples/publications/rapid_dev/fig7b.i)
#
# Fig. 7 input for 10.1016/j.commatsci.2017.02.017
# D. Schwen et al./Computational Materials Science 132 (2017) 36-45
# Dashed black curve (2)
# Eigenstrain is globally applied. Single global elastic free energies.
# Supply the RADIUS parameter (10-35) on the command line to generate data
# for all curves in the plot.
#
[Mesh]
type = GeneratedMesh
dim = 1
nx = 32
xmin = 0
xmax = 100
second_order = true
[]
[Problem]
coord_type = RSPHERICAL
[]
[GlobalParams]
displacements = 'disp_r'
[]
[Functions]
[./diff]
type = ParsedFunction
value = '${RADIUS}-pos_c'
vars = pos_c
vals = pos_c
[../]
[]
# AuxVars to compute the free energy density for outputting
[AuxVariables]
[./local_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./cross_energy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./local_free_energy]
type = TotalFreeEnergy
variable = local_energy
interfacial_vars = 'c'
kappa_names = 'kappa_c'
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[Variables]
# Solute concentration variable
[./c]
[./InitialCondition]
type = SmoothCircleIC
invalue = 1
outvalue = 0
x1 = 0
y1 = 0
radius = ${RADIUS}
int_width = 3
[../]
[../]
[./w]
[../]
# Phase order parameter
[./eta]
[./InitialCondition]
type = SmoothCircleIC
invalue = 1
outvalue = 0
x1 = 0
y1 = 0
radius = ${RADIUS}
int_width = 3
[../]
[../]
[./Fe_fit]
order = SECOND
[../]
[]
[Modules/TensorMechanics/Master/all]
add_variables = true
eigenstrain_names = eigenstrain
[]
[Kernels]
# Split Cahn-Hilliard kernels
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
args = 'eta'
kappa_name = kappa_c
w = w
[../]
[./wres]
type = SplitCHWRes
variable = w
mob_name = M
[../]
[./time]
type = CoupledTimeDerivative
variable = w
v = c
[../]
# Allen-Cahn and Lagrange-multiplier constraint kernels for order parameter 1
[./detadt]
type = TimeDerivative
variable = eta
[../]
[./ACBulk1]
type = AllenCahn
variable = eta
args = 'c'
mob_name = L
f_name = F
[../]
[./ACInterface]
type = ACInterface
variable = eta
mob_name = L
kappa_name = kappa_eta
[../]
[./Fe]
type = MaterialPropertyValue
prop_name = Fe
variable = Fe_fit
[../]
[./autoadjust]
type = MaskedBodyForce
variable = w
function = diff
mask = mask
[../]
[]
[Materials]
# declare a few constants, such as mobilities (L,M) and interface gradient prefactors (kappa*)
[./consts]
type = GenericConstantMaterial
prop_names = 'M L kappa_c kappa_eta'
prop_values = '1.0 1.0 0.5 1'
[../]
# forcing function mask
[./mask]
type = ParsedMaterial
f_name = mask
function = grad/dt
material_property_names = 'grad dt'
[../]
[./grad]
type = VariableGradientMaterial
variable = c
prop = grad
[../]
[./time]
type = TimeStepMaterial
[../]
# global mechanical properties
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
# eigenstrain as a function of phase
[./eigenstrain]
type = ComputeVariableEigenstrain
eigen_base = '0.05 0.05 0.05 0 0 0'
prefactor = h
args = eta
eigenstrain_name = eigenstrain
[../]
# switching functions
[./switching]
type = SwitchingFunctionMaterial
function_name = h
eta = eta
h_order = SIMPLE
[../]
[./barrier]
type = BarrierFunctionMaterial
eta = eta
[../]
# chemical free energies
[./chemical_free_energy_1]
type = DerivativeParsedMaterial
f_name = Fc1
function = 'c^2'
args = 'c'
derivative_order = 2
[../]
[./chemical_free_energy_2]
type = DerivativeParsedMaterial
f_name = Fc2
function = '(1-c)^2'
args = 'c'
derivative_order = 2
[../]
# global chemical free energy
[./chemical_free_energy]
type = DerivativeTwoPhaseMaterial
f_name = Fc
fa_name = Fc1
fb_name = Fc2
eta = eta
args = 'c'
W = 4
[../]
# global elastic free energy
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
args = 'eta'
output_properties = Fe
derivative_order = 2
[../]
# free energy
[./free_energy]
type = DerivativeSumMaterial
f_name = F
sum_materials = 'Fc Fe'
args = 'c eta'
derivative_order = 2
[../]
[]
[BCs]
[./left_r]
type = DirichletBC
variable = disp_r
boundary = 'left'
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
# We monitor the total free energy and the total solute concentration (should be constant)
[Postprocessors]
[./total_free_energy]
type = ElementIntegralVariablePostprocessor
variable = local_energy
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./total_solute]
type = ElementIntegralVariablePostprocessor
variable = c
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./pos_c]
type = FindValueOnLine
start_point = '0 0 0'
end_point = '100 0 0'
v = c
target = 0.582
tol = 1e-8
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./pos_eta]
type = FindValueOnLine
start_point = '0 0 0'
end_point = '100 0 0'
v = eta
target = 0.5
tol = 1e-8
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./c_min]
type = ElementExtremeValue
value_type = min
variable = c
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[]
[VectorPostprocessors]
[./line]
type = LineValueSampler
variable = 'Fe_fit c w'
start_point = '0 0 0'
end_point = '100 0 0'
num_points = 5000
sort_by = x
outputs = vpp
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[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 = 15
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 2.0e-9
start_time = 0.0
end_time = 100000.0
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 8
iteration_window = 1
dt = 1
[../]
[./Adaptivity]
initial_adaptivity = 5
interval = 10
max_h_level = 5
refine_fraction = 0.9
coarsen_fraction = 0.1
[../]
[]
[Outputs]
print_linear_residuals = false
perf_graph = true
execute_on = 'INITIAL TIMESTEP_END'
[./table]
type = CSV
delimiter = ' '
file_base = radius_${RADIUS}/eigenstrain_pp
[../]
[./vpp]
type = CSV
delimiter = ' '
sync_times = '10 50 100 500 1000 5000 10000 50000 100000'
sync_only = true
time_data = true
file_base = radius_${RADIUS}/eigenstrain_vpp
[../]
[]
(modules/tensor_mechanics/test/tests/torque_reaction/torque_reaction_3D.i)
# Scalar torque reaction
# This test computes the sum of the torques acting on a single element cube mesh.
# Equal displacements in the x and the z are applied along the cube top to
# create a shear force along the (1, 0, 1) direction. The rotation origin is
# set to the middle of the bottom face of the cube (0.5, 0, 0.5), and the axis of
# rotation direction vector used to compute the torque reaction is set to (-1, 0, 1).
# Torque is calculated for the four nodes on the top of the cube. The projection
# of the node coordinates is zero for nodes 3 and 6, +1 for node 7, and -1 for
# node 2 from the selection of the direction vector and the rotation axis origin.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[Problem]
extra_tag_vectors = 'ref'
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[]
[AuxKernels]
[saved_x]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_x'
variable = 'saved_x'
[]
[saved_y]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_y'
variable = 'saved_y'
[]
[saved_z]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_z'
variable = 'saved_z'
[]
[]
[Modules/TensorMechanics/Master]
[master]
strain = SMALL
generate_output = 'stress_xx stress_yy stress_zz'
add_variables = true
extra_vector_tags = 'ref'
[]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./top_shear_z]
type = FunctionDirichletBC
variable = disp_z
boundary = top
function = '0.01*t'
[../]
[./top_shear_x]
type = FunctionDirichletBC
variable = disp_x
boundary = top
function = '0.01*t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./elastic_stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 30
nl_max_its = 20
nl_abs_tol = 1e-14
nl_rel_tol = 1e-12
l_tol = 1e-8
start_time = 0.0
dt = 0.5
end_time = 1
num_steps = 2
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./torque]
type = TorqueReaction
boundary = top
reaction_force_variables = 'saved_x saved_y saved_z'
axis_origin = '0.5 0. 0.5'
direction_vector = '-1. 0. 1.'
[../]
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/truss/truss_hex_action.i)
# This test is designed to check
# whether truss element works well with other multi-dimensional element
# e.g. the hex element in this case, by assigning different block number
# to different types of elements.
[Mesh]
type = FileMesh
file = truss_hex.e
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]
[./axial_stress]
order = CONSTANT
family = MONOMIAL
[../]
[./e_over_l]
order = CONSTANT
family = MONOMIAL
[../]
[./area]
order = CONSTANT
family = MONOMIAL
[../]
[./react_x]
order = FIRST
family = LAGRANGE
[../]
[./react_y]
order = FIRST
family = LAGRANGE
[../]
[./react_z]
order = FIRST
family = LAGRANGE
[../]
[]
[Functions]
[./x2]
type = PiecewiseLinear
x = '0 1 2 3'
y = '0 .5 1 1'
[../]
[./y2]
type = PiecewiseLinear
x = '0 1 2 3'
y = '0 0 .5 1'
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0
[../]
[./fixx2]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0
[../]
[./fixz2]
type = DirichletBC
variable = disp_z
boundary = 2
value = 0
[../]
[./fixDummyHex_x]
type = DirichletBC
variable = disp_x
boundary = 1000
value = 0
[../]
[./fixDummyHex_y]
type = DirichletBC
variable = disp_y
boundary = 1000
value = 0
[../]
[./fixDummyHex_z]
type = DirichletBC
variable = disp_z
boundary = 1000
value = 0
[../]
[]
[DiracKernels]
[./pull]
type = ConstantPointSource
value = -25
point = '0 -2 0'
variable = disp_y
[../]
[]
[AuxKernels]
[./axial_stress]
type = MaterialRealAux
block = '1 2'
property = axial_stress
variable = axial_stress
[../]
[./e_over_l]
type = MaterialRealAux
block = '1 2'
property = e_over_l
variable = e_over_l
[../]
[./area1]
type = ConstantAux
block = 1
variable = area
value = 1.0
execute_on = 'initial timestep_begin'
[../]
[./area2]
type = ConstantAux
block = 2
variable = area
value = 0.25
execute_on = 'initial timestep_begin'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'jacobi 101'
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dt = 1
num_steps = 1
end_time = 1
[]
[Kernels]
[./TensorMechanics]
block = 1000
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Modules/TensorMechanics/LineElementMaster]
[./block]
truss = true
displacements = 'disp_x disp_y disp_z'
area = area
block = '1 2'
save_in = 'react_x react_y react_z'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1000
youngs_modulus = 1e6
poissons_ratio = 0
[../]
[./strain]
type = ComputeSmallStrain
block = 1000
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
block = 1000
[../]
[./linelast]
type = LinearElasticTruss
block = '1 2'
displacements = 'disp_x disp_y disp_z'
youngs_modulus = 1e6
[../]
[]
[Outputs]
file_base = 'truss_hex_out'
exodus = true
[]
(modules/tensor_mechanics/test/tests/line_material_rank_two_sampler/rank_two_scalar_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]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
[../]
[]
[VectorPostprocessors]
[./vonmises]
type = LineMaterialRankTwoScalarSampler
start = '0.1667 0.4 0.45'
end = '0.8333 0.6 0.55'
property = stress
scalar_type = VonMisesStress
sort_by = id
[../]
[]
[Kernels]
[./TensorMechanics]
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_scalar_sampler_out
exodus = true
csv = true
[]
(modules/combined/test/tests/evolving_mass_density/uniform_expand_compress_test_tensors.i)
# Element mass tests
# This series of tests is designed to compute the mass of elements based on
# an evolving mass density calculation. The tests consist of expansion and compression
# of the elastic patch test model along each axis, uniform expansion and compression,
# and shear in each direction. The expansion and compression tests change the volume of
# the elements. The corresponding change in density should compensate for this so the
# mass remains constant. The shear tests should not result in a volume change, and this
# is checked too. The mass calculation is done with the post processor called Mass.
# The tests/file names are as follows:
# Expansion and compression along a single axis
# expand_compress_x_test_out.e
# expand_compress_y_test_out.e
# expand_compress_z_test_out.e
# Volumetric expansion and compression
# uniform_expand_compress_test.i
# Zero volume change shear along each axis
# shear_x_test_out.e
# shear_y_test_out.e
# shear_z_test_out.e
# The resulting mass calculation for these tests should always be = 1.
# This test is a duplicate of the uniform_expand_compress_test.i test for solid mechanics, and the
# output of this tensor mechanics test is compared to the original
# solid mechanics output. The duplication is necessary to test the
# migrated tensor mechanics version while maintaining tests for solid mechanics.
[Mesh]
file = elastic_patch.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Functions]
[./rampConstant2]
type = PiecewiseLinear
x = '0.00 1.00 2.0 3.00'
y = '0.00 0.25 0.0 -0.25'
scale_factor = 1
[../]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./9_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0
[../]
[./10_y]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0
[../]
[./14_y]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0
[../]
[./top]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = 11
function = rampConstant2
[../]
[./front]
type = FunctionDirichletBC
variable = disp_z
preset = false
boundary = 13
function = rampConstant2
[../]
[./side]
type = FunctionDirichletBC
variable = disp_x
preset = false
boundary = 12
function = rampConstant2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./small_strain]
type = ComputeSmallStrain
block = ' 1 2 3 4 5 6 7'
[../]
[./elastic_stress]
type = ComputeLinearElasticStress
block = '1 2 3 4 5 6 7'
[../]
[]
[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 = 3
end_time =3.0
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
file_base = uniform_expand_compress_test_out
[../]
[]
[Postprocessors]
[./Mass]
type = Mass
variable = disp_x
execute_on = 'initial timestep_end'
[../]
[]
(modules/tensor_mechanics/test/tests/jacobian/poro01.i)
# tests of the poroelasticity kernel, PoroMechanicsCoupling
# in conjunction with the usual StressDivergenceTensors Kernel
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./p]
[../]
[]
[ICs]
[./disp_x]
type = RandomIC
variable = disp_x
min = -1
max = 1
[../]
[./disp_y]
type = RandomIC
variable = disp_y
min = -1
max = 1
[../]
[./disp_z]
type = RandomIC
variable = disp_z
min = -1
max = 1
[../]
[./p]
type = RandomIC
variable = p
min = -1
max = 1
[../]
[]
[Kernels]
[./unimportant_p]
type = TimeDerivative
variable = p
[../]
[./grad_stress_x]
type = StressDivergenceTensors
displacements = 'disp_x disp_y disp_z'
variable = disp_x
component = 0
[../]
[./grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
displacements = 'disp_x disp_y disp_z'
component = 1
[../]
[./grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
displacements = 'disp_x disp_y disp_z'
component = 2
[../]
[./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
[../]
[./This_is_not_poroelasticity._It_is_checking_diagonal_jacobian]
type = PoroMechanicsCoupling
variable = disp_x
porepressure = disp_x
component = 0
[../]
[./This_is_not_poroelasticity._It_is_checking_diagonal_jacobian_again]
type = PoroMechanicsCoupling
variable = disp_x
porepressure = disp_x
component = 1
[../]
[./This_is_not_poroelasticity._It_is_checking_offdiagonal_jacobian_for_disps]
type = PoroMechanicsCoupling
variable = disp_x
porepressure = disp_y
component = 2
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1 1'
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 = 0.54
[../]
[]
[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
[]
(modules/combined/test/tests/linear_elasticity/applied_strain.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
nz = 0
xmin = 0
xmax = 2
ymin = 0
ymax = 2
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
eigenstrain_names = eigenstrain
add_variables = true
generate_output = 'strain_xx strain_yy strain_xy'
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '1e6 0 0 1e6 0 1e6 .5e6 .5e6 .5e6'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./eigenstrain]
type = ComputeEigenstrain
eigen_base = '0.1 0.05 0 0 0 0.01'
prefactor = -1
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
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/pressure/cantilever.i)
#
#
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[MeshGenerator]
type = GeneratedMeshGenerator
dim = 3
nx = 1
xmin = 0
xmax = 10
ymin = 0
ymax = 1
zmin = 0
zmax = 1
[]
[move_nodes]
type = MoveNodeGenerator
input = MeshGenerator
node_id = 6
new_position = '9.9 1.1 1'
[]
[]
[Functions]
[pressure]
type = ParsedFunction
value = 100*t
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[TensorMechanics]
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[]
[Pressure]
[top]
boundary = 'top front right'
function = pressure
[]
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 0.5e6'
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Preconditioning]
[smp]
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'
petsc_options = '-snes_test_jacobian -snes_test_jacobian_view'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 10
end_time = 2.0
[]
[Outputs]
[out]
type = Exodus
[]
[]
(modules/xfem/test/tests/second_order_elements/square_branch_quad8_2d.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD8
[]
[UserObjects]
[./line_seg_cut_set_uo]
type = LineSegmentCutSetUserObject
cut_data = '-1.0000e-10 6.6340e-01 6.6340e-01 -1.0000e-10 0.0 1.0
3.3120e-01 3.3200e-01 1.0001e+00 3.3200e-01 1.0 2.0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
planar_formulation = PLANE_STRAIN
[../]
[]
[Functions]
[./right_disp_x]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[./top_disp_y]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[]
[BCs]
[./right_x]
type = FunctionDirichletBC
boundary = 1
variable = disp_x
function = right_disp_x
[../]
[./top_y]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = top_disp_y
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 2.2
num_steps = 5000
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/peridynamics/test/tests/failure_tests/2D_bond_status_convergence_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
cracks_start = '0.25 0.5 0'
cracks_end = '0.75 0.5 0'
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 8
ny = 8
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./critical_stress]
family = MONOMIAL
order = CONSTANT
[../]
[]
[AuxKernels]
[./bond_status]
type = RankTwoBasedFailureCriteriaNOSPD
variable = bond_status
rank_two_tensor = stress
critical_variable = critical_stress
failure_criterion = VonMisesStress
[../]
[]
[UserObjects]
[./shape_singularity]
type = SingularShapeTensorEliminatorUserObjectPD
[../]
[]
[ICs]
[./critical_stretch]
type = ConstantIC
variable = critical_stress
value = 150
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[../]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = 1002
value = 0.0
[../]
[./bottom_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1000
function = '-0.002*t'
[../]
[./rbm_x]
type = RBMPresetOldValuePD
variable = disp_x
boundary = 999
[../]
[./rbm_y]
type = RBMPresetOldValuePD
variable = disp_y
boundary = 999
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.33
[../]
[./strain]
type = ComputeSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Postprocessors]
[./bond_status_updated_times]
type = BondStatusConvergedPostprocessorPD
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
start_time = 0
dt = 0.5
end_time = 1
fixed_point_max_its = 5
accept_on_max_fixed_point_iteration = true
custom_pp = bond_status_updated_times
custom_abs_tol = 2
disable_picard_residual_norm_check = true
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
[Outputs]
file_base = 2D_bond_status_convergence_H1NOSPD
exodus = true
[]
(modules/contact/test/tests/check_error/contact_displacements.i)
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./2_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./2_y]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./2_z]
type = DirichletBC
variable = disp_z
boundary = 2
value = 0.0
[../]
[]
[Contact]
[./fred]
primary = 1
secondary = 2
displacements = 'disp_x disp_y disp_z'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
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
[]
[Outputs]
file_base = out
exodus = true
[]
(modules/tensor_mechanics/test/tests/strain_energy_density/tot_model.i)
# Single element test to check the strain energy density calculation
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmin = 0
xmax = 1
ymin = 0
ymax = 2
[]
[AuxVariables]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[rampConstantUp]
type = PiecewiseLinear
x = '0. 1.'
y = '0. 1.'
scale_factor = -100
[]
[]
[Modules/TensorMechanics/Master]
[master]
strain = SMALL
add_variables = true
incremental = false
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx strain_yy strain_zz'
planar_formulation = PLANE_STRAIN
[]
[]
[AuxKernels]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[]
[Pressure]
[top]
boundary = 'top'
function = rampConstantUp
[]
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 30e+6
poissons_ratio = 0.3
[]
[elastic_stress]
type = ComputeLinearElasticStress
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = false
[]
[]
[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 4'
line_search = 'none'
l_max_its = 50
nl_max_its = 20
nl_abs_tol = 3e-7
nl_rel_tol = 1e-12
l_tol = 1e-2
start_time = 0.0
dt = 1
end_time = 1
num_steps = 1
[]
[Postprocessors]
[epxx]
type = ElementalVariableValue
variable = strain_xx
elementid = 0
[]
[epyy]
type = ElementalVariableValue
variable = strain_yy
elementid = 0
[]
[epzz]
type = ElementalVariableValue
variable = strain_zz
elementid = 0
[]
[sigxx]
type = ElementAverageValue
variable = stress_xx
[]
[sigyy]
type = ElementAverageValue
variable = stress_yy
[]
[sigzz]
type = ElementAverageValue
variable = stress_zz
[]
[SED]
type = ElementAverageValue
variable = SED
[]
[]
[Outputs]
exodus = true
csv = true
[]
(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
[]
[Problem]
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
[]
[]
[Modules]
[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/tensor_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
[../]
[./TensorMechanics]
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/porous_flow/test/tests/poro_elasticity/mandel_basicthm.i)
# using a BasicTHM Action
#
# 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
[]
[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]
[tot_force]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[tot_force]
type = ParsedAux
args = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
function = '-stress_yy+0.6*porepressure'
[]
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 8.0
viscosity = 1.0
density0 = 1.0
[]
[]
[]
[PorousFlowBasicTHM]
coupling_type = HydroMechanical
displacements = 'disp_x disp_y disp_z'
multiply_by_density = false
porepressure = porepressure
biot_coefficient = 0.6
gravity = '0 0 0'
fp = the_simple_fluid
[]
[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
[]
[stress]
type = ComputeLinearElasticStress
[]
[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_basicthm
[csv]
interval = 3
type = CSV
[]
[]
(modules/tensor_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
[../]
[]
[Modules]
[./TensorMechanics]
[./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]
[./TensorMechanics]
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/tensor_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_small.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[./saved_x]
order = FIRST
family = LAGRANGE
[../]
[./saved_y]
order = FIRST
family = LAGRANGE
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
displacements = 'disp_x disp_y'
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
planar_formulation = GENERALIZED_PLANE_STRAIN
eigenstrain_names = eigenstrain
scalar_out_of_plane_strain = scalar_strain_zz
temperature = temp
save_in = 'saved_x saved_y'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(1-x)*t'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-5
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
num_steps = 5000
[]
[Outputs]
exodus = true
[]
(modules/xfem/test/tests/pressure_bc/edge_2d_pressure.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = False
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 9
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.0 0.5 0.5 0.5'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
generate_output = 'stress_xx stress_yy'
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0 1.0 2.0'
y = '0 500 1000'
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.0
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[]
[DiracKernels]
[./pressure_x]
type = XFEMPressure
variable = disp_x
component = 0
function = pressure
[../]
[./pressure_y]
type = XFEMPressure
variable = disp_y
component = 1
function = pressure
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1
end_time = 2
[]
[Outputs]
file_base = edge_2d_pressure_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_hht.i)
# Wave propogation in 1D using HHT 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.
# alpha, beta and gamma are Newmark time integration parameters
# The equation of motion in terms of matrices is:
#
# M*accel + K*((1+alpha)*disp-alpha*disp_old) = 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
# -8.097405701570538350e-02, 2.113131879547342634e-02 and -5.182787688751439893e-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
use_displaced_mesh = false
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/DynamicMaster]
[all]
add_variables = true
hht_alpha = -0.3
newmark_beta = 0.3025
newmark_gamma = 0.6
[]
[]
[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
fill_method = symmetric_isotropic
C_ijkl = '1 0'
[]
[stress]
type = ComputeLinearElasticStress
[]
[density]
type = GenericConstantMaterial
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 = vel_y
[]
[disp_2]
type = NodalVariableValue
nodeid = 3
variable = vel_y
[]
[disp_3]
type = NodalVariableValue
nodeid = 10
variable = vel_y
[]
[disp_4]
type = NodalVariableValue
nodeid = 14
variable = vel_y
[]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/xfem/test/tests/corner_nodes_cut/corner_edge_cut.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo1]
type = LineSegmentCutUserObject
cut_data = '-0.0 0.5 0.5 0.5'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[./line_seg_cut_uo2]
type = LineSegmentCutUserObject
cut_data = '0.5 0.5 1.0 0.7'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[BCs]
[./top_x]
type = DirichletBC
boundary = 2
variable = disp_x
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.1
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = -0.1
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/tensor_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
[../]
[]
[Modules]
[./TensorMechanics]
[./GeneralizedPlaneStrain]
[./gps1]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz1
block = '1'
[../]
[./gps2]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz2
block = '2'
[../]
[../]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = false
displacements = 'disp_x disp_y'
temperature = temp
save_in = 'saved_x saved_y'
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
value = '(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/peridynamics/test/tests/restart/2D_mesh_restartable_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1003
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 1001
value = 0.001
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e8
poissons_ratio = 0.3
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
start_time = 0
end_time = 1
# num_steps = 2
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
[Outputs]
file_base = 2D_mesh_restartable_H1NOSPD_out
exodus = true
checkpoint = true
[]
(modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_weak_plane_stress_jacobian.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]
[../]
[./temp]
[../]
[]
[Kernels]
[./disp_x]
type = StressDivergenceTensors
variable = disp_x
eigenstrain_names = thermal_eigenstrain
component = 0
[../]
[./disp_y]
type = StressDivergenceTensors
variable = disp_y
eigenstrain_names = thermal_eigenstrain
component = 1
[../]
[./solid_z]
type = WeakPlaneStress
variable = strain_zz
eigenstrain_names = thermal_eigenstrain
[../]
[./heat]
type = HeatConduction
variable = temp
use_displaced_mesh = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.0
youngs_modulus = 1
[../]
[./strain]
type = ComputePlaneSmallStrain
eigenstrain_names = thermal_eigenstrain
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0
eigenstrain_name = thermal_eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./conductivity]
type = HeatConductionMaterial
thermal_conductivity = 1
use_displaced_mesh = false
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
end_time = 1.0
[]
(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
function = 0.005*c^2
args = 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/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/peridynamics/test/tests/plane_stress/conventional_planestress_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 8
ny = 8
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1003
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 1001
value = 0.001
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputePlaneStressIsotropicElasticityTensor
youngs_modulus = 2.1e8
poissons_ratio = 0.3
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
start_time = 0
end_time = 1
nl_rel_tol = 1e-10
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
[Outputs]
file_base = conventional_planestress_H1NOSPD
exodus = true
[]
(modules/porous_flow/test/tests/jacobian/denergy03.i)
# 2phase, 1 component, with solid displacements, time derivative of energy-density, TM porosity
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
xmin = 0
xmax = 1
ny = 1
ymin = 0
ymax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pgas]
[]
[pwater]
[]
[temp]
[]
[]
[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
[]
[pgas]
type = RandomIC
variable = pgas
max = 1.0
min = 0.0
[]
[pwater]
type = RandomIC
variable = pwater
max = 0.0
min = -1.0
[]
[temp]
type = RandomIC
variable = temp
max = 1.0
min = 0.0
[]
[]
[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
[]
[dummy_pgas]
type = Diffusion
variable = pgas
[]
[dummy_pwater]
type = Diffusion
variable = pwater
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pgas temp pwater disp_x disp_y disp_z'
number_fluid_phases = 2
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid0]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
cv = 1.3
[]
[simple_fluid1]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 0.5
thermal_expansion = 0
cv = 0.7
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[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
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[porosity]
type = PorousFlowPorosity
thermal = true
mechanical = true
porosity_zero = 0.7
thermal_expansion_coeff = 0.5
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1.1
density = 0.5
[]
[ppss]
type = PorousFlow2PhasePP
phase0_porepressure = pwater
phase1_porepressure = pgas
capillary_pressure = pc
[]
[simple_fluid0]
type = PorousFlowSingleComponentFluid
fp = simple_fluid0
phase = 0
[]
[simple_fluid1]
type = PorousFlowSingleComponentFluid
fp = simple_fluid1
phase = 1
[]
[]
[Preconditioning]
active = check
[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-15 1E-10 10000'
[]
[check]
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
dt = 1
end_time = 1
[]
[Outputs]
exodus = false
[]
(modules/tensor_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
[../]
[]
[Modules/TensorMechanics/Master]
[./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/porous_flow/test/tests/jacobian/denergy05.i)
# 2phase, 1 component, with solid displacements, time derivative of energy-density, THM porosity wth _ensure_positive = true, and compressive strains
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
xmin = 0
xmax = 1
ny = 1
ymin = 0
ymax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pgas]
[]
[pwater]
[]
[temp]
[]
[]
[ICs]
[disp_x]
type = RandomIC
variable = disp_x
min = -0.1
max = 0.0
[]
[disp_y]
type = RandomIC
variable = disp_y
min = -0.1
max = 0.0
[]
[disp_z]
type = RandomIC
variable = disp_z
min = -0.1
max = 0.0
[]
[pgas]
type = RandomIC
variable = pgas
max = 0.01
min = 0.0
[]
[pwater]
type = RandomIC
variable = pwater
max = 0.0
min = -0.01
[]
[temp]
type = RandomIC
variable = temp
max = 1.0
min = 0.0
[]
[]
[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
[]
[dummy_pgas]
type = Diffusion
variable = pgas
[]
[dummy_pwater]
type = Diffusion
variable = pwater
[]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temp
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pgas temp pwater disp_x disp_y disp_z'
number_fluid_phases = 2
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid0]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
cv = 1.3
[]
[simple_fluid1]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 0.5
thermal_expansion = 0
cv = 0.7
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
temperature = temp
[]
[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
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
thermal = true
porosity_zero = 0.7
thermal_expansion_coeff = 0.7
biot_coefficient = 0.9
solid_bulk = 10
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 1.1
density = 0.5
[]
[ppss]
type = PorousFlow2PhasePP
phase0_porepressure = pwater
phase1_porepressure = pgas
capillary_pressure = pc
[]
[simple_fluid0]
type = PorousFlowSingleComponentFluid
fp = simple_fluid0
phase = 0
[]
[simple_fluid1]
type = PorousFlowSingleComponentFluid
fp = simple_fluid1
phase = 1
[]
[]
[Preconditioning]
active = check
[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-15 1E-10 10000'
[]
[check]
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
dt = 1
end_time = 1
[]
[Outputs]
exodus = false
[]
(modules/tensor_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]
[./TensorMechanics]
[../]
[./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]
csv = true
exodus = true
perf_graph = true
[]
(modules/combined/examples/mortar/eigenstrain.i)
#
# Eigenstrain with Mortar gradient periodicity
#
[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
[../]
[./anode]
input = cnode
type = ExtraNodesetGenerator
coord = '0.0 0.5'
new_boundary = 101
[../]
[secondary_x]
input = anode
type = LowerDBlockFromSidesetGenerator
sidesets = '3'
new_block_id = 10
new_block_name = "secondary_x"
[]
[primary_x]
input = secondary_x
type = LowerDBlockFromSidesetGenerator
sidesets = '1'
new_block_id = 12
new_block_name = "primary_x"
[]
[secondary_y]
input = primary_x
type = LowerDBlockFromSidesetGenerator
sidesets = '0'
new_block_id = 11
new_block_name = "secondary_y"
[]
[primary_y]
input = secondary_y
type = LowerDBlockFromSidesetGenerator
sidesets = '2'
new_block_id = 13
new_block_name = "primary_y"
[]
[]
[GlobalParams]
derivative_order = 2
enable_jit = true
displacements = 'disp_x disp_y'
[]
# AuxVars to compute the free energy density for outputting
[AuxVariables]
[./local_energy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./local_free_energy]
type = TotalFreeEnergy
block = 0
execute_on = 'initial LINEAR'
variable = local_energy
interfacial_vars = 'c'
kappa_names = 'kappa_c'
[../]
[]
[Variables]
# Solute concentration variable
[./c]
[./InitialCondition]
type = RandomIC
min = 0.49
max = 0.51
[../]
block = 0
[../]
[./w]
block = 0
[../]
# Mesh displacement
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
# Lagrange multipliers for gradient component periodicity
[./lm_left_right_xx]
order = FIRST
family = LAGRANGE
block = secondary_x
[../]
[./lm_left_right_xy]
order = FIRST
family = LAGRANGE
block = secondary_x
[../]
[./lm_left_right_yx]
order = FIRST
family = LAGRANGE
block = secondary_x
[../]
[./lm_left_right_yy]
order = FIRST
family = LAGRANGE
block = secondary_x
[../]
[./lm_up_down_xx]
order = FIRST
family = LAGRANGE
block = secondary_y
[../]
[./lm_up_down_xy]
order = FIRST
family = LAGRANGE
block = secondary_y
[../]
[./lm_up_down_yx]
order = FIRST
family = LAGRANGE
block = secondary_y
[../]
[./lm_up_down_yy]
order = FIRST
family = LAGRANGE
block = secondary_y
[../]
[]
[Constraints]
[./ud_disp_x_grad_x]
type = EqualGradientConstraint
variable = lm_up_down_xx
component = 0
secondary_variable = disp_x
secondary_boundary = bottom
primary_boundary = top
secondary_subdomain = secondary_y
primary_subdomain = primary_y
periodic = true
[../]
[./ud_disp_x_grad_y]
type = EqualGradientConstraint
variable = lm_up_down_xy
component = 1
secondary_variable = disp_x
secondary_boundary = bottom
primary_boundary = top
secondary_subdomain = secondary_y
primary_subdomain = primary_y
periodic = true
[../]
[./ud_disp_y_grad_x]
type = EqualGradientConstraint
variable = lm_up_down_yx
component = 0
secondary_variable = disp_y
secondary_boundary = bottom
primary_boundary = top
secondary_subdomain = secondary_y
primary_subdomain = primary_y
periodic = true
[../]
[./ud_disp_y_grad_y]
type = EqualGradientConstraint
variable = lm_up_down_yy
component = 1
secondary_variable = disp_y
secondary_boundary = bottom
primary_boundary = top
secondary_subdomain = secondary_y
primary_subdomain = primary_y
periodic = true
[../]
[./lr_disp_x_grad_x]
type = EqualGradientConstraint
variable = lm_left_right_xx
component = 0
secondary_variable = disp_x
secondary_boundary = left
primary_boundary = right
secondary_subdomain = secondary_x
primary_subdomain = primary_x
periodic = true
[../]
[./lr_disp_x_grad_y]
type = EqualGradientConstraint
variable = lm_left_right_xy
component = 1
secondary_variable = disp_x
secondary_boundary = left
primary_boundary = right
secondary_subdomain = secondary_x
primary_subdomain = primary_x
periodic = true
[../]
[./lr_disp_y_grad_x]
type = EqualGradientConstraint
variable = lm_left_right_yx
component = 0
secondary_variable = disp_y
secondary_boundary = left
primary_boundary = right
secondary_subdomain = secondary_x
primary_subdomain = primary_x
periodic = true
[../]
[./lr_disp_y_grad_y]
type = EqualGradientConstraint
variable = lm_left_right_yy
component = 1
secondary_variable = disp_y
secondary_boundary = left
primary_boundary = right
secondary_subdomain = secondary_x
primary_subdomain = primary_x
periodic = true
[../]
[]
[Kernels]
# Set up stress divergence kernels
[./TensorMechanics]
block = 0
[../]
# 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
[../]
[]
[Materials]
# declare a few constants, such as mobilities (L,M) and interface gradient prefactors (kappa*)
[./consts]
type = GenericConstantMaterial
block = '0 10 11'
prop_names = 'M kappa_c'
prop_values = '0.2 0.01 '
[../]
[./shear1]
type = GenericConstantRankTwoTensor
block = 0
tensor_values = '0 0 0 0 0 0.5'
tensor_name = shear1
[../]
[./shear2]
type = GenericConstantRankTwoTensor
block = 0
tensor_values = '0 0 0 0 0 -0.5'
tensor_name = shear2
[../]
[./expand3]
type = GenericConstantRankTwoTensor
block = 0
tensor_values = '1 1 0 0 0 0'
tensor_name = expand3
[../]
[./weight1]
type = DerivativeParsedMaterial
block = 0
function = '0.3*c^2'
f_name = weight1
args = c
[../]
[./weight2]
type = DerivativeParsedMaterial
block = 0
function = '0.3*(1-c)^2'
f_name = weight2
args = c
[../]
[./weight3]
type = DerivativeParsedMaterial
block = 0
function = '4*(0.5-c)^2'
f_name = weight3
args = c
[../]
# matrix phase
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[./eigenstrain]
type = CompositeEigenstrain
block = 0
tensors = 'shear1 shear2 expand3'
weights = 'weight1 weight2 weight3'
args = c
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
# chemical free energies
[./chemical_free_energy]
type = DerivativeParsedMaterial
block = 0
f_name = Fc
function = '4*c^2*(1-c)^2'
args = 'c'
outputs = exodus
output_properties = Fc
[../]
# elastic free energies
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
block = 0
args = 'c'
outputs = exodus
output_properties = Fe
[../]
# free energy (chemical + elastic)
[./free_energy]
type = DerivativeSumMaterial
block = 0
f_name = F
sum_materials = 'Fc Fe'
args = 'c'
[../]
[]
[BCs]
[./Periodic]
[./up_down]
primary = top
secondary = bottom
translation = '0 -1 0'
variable = 'c w'
[../]
[./left_right]
primary = left
secondary = right
translation = '1 0 0'
variable = 'c w'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = disp_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = disp_y
value = 0
[../]
# fix side point x coordinate to inhibit rotation
[./angularfix]
type = DirichletBC
boundary = 101
variable = disp_x
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
# We monitor the total free energy and the total solute concentration (should be constant)
[Postprocessors]
[./total_free_energy]
type = ElementIntegralVariablePostprocessor
block = 0
execute_on = 'initial TIMESTEP_END'
variable = local_energy
[../]
[./total_solute]
type = ElementIntegralVariablePostprocessor
block = 0
execute_on = 'initial TIMESTEP_END'
variable = c
[../]
[./min]
type = ElementExtremeValue
block = 0
execute_on = 'initial TIMESTEP_END'
value_type = min
variable = c
[../]
[./max]
type = ElementExtremeValue
block = 0
execute_on = 'initial TIMESTEP_END'
value_type = max
variable = c
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
line_search = basic
# mortar currently does not support MPI parallelization
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = ' lu NONZERO 1e-10'
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 = 200
[./TimeStepper]
type = SolutionTimeAdaptiveDT
dt = 0.01
[../]
[]
[Outputs]
execute_on = 'timestep_end'
print_linear_residuals = false
exodus = true
[./table]
type = CSV
delimiter = ' '
[../]
[]
(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
f_name = Fc
args = 'c'
constant_names = 'barr_height cv_eq'
constant_expressions = '0.1 1.0e-2'
function = 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
function = 0.1*c
args = 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
f_name = F
sum_materials = 'Fc Fe'
args = '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/combined/test/tests/linear_elasticity/tensor.i)
# This input file is designed to test the RankTwoAux and RankFourAux
# auxkernels, which report values out of the Tensors used in materials
# properties.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
nz = 0
xmin = 0
xmax = 2
ymin = 0
ymax = 2
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[Variables]
[./diffused]
[./InitialCondition]
type = RandomIC
[../]
[../]
[]
[AuxVariables]
[./C11]
order = CONSTANT
family = MONOMIAL
[../]
[./C12]
order = CONSTANT
family = MONOMIAL
[../]
[./C13]
order = CONSTANT
family = MONOMIAL
[../]
[./C14]
order = CONSTANT
family = MONOMIAL
[../]
[./C15]
order = CONSTANT
family = MONOMIAL
[../]
[./C16]
order = CONSTANT
family = MONOMIAL
[../]
[./C22]
order = CONSTANT
family = MONOMIAL
[../]
[./C23]
order = CONSTANT
family = MONOMIAL
[../]
[./C24]
order = CONSTANT
family = MONOMIAL
[../]
[./C25]
order = CONSTANT
family = MONOMIAL
[../]
[./C26]
order = CONSTANT
family = MONOMIAL
[../]
[./C33]
order = CONSTANT
family = MONOMIAL
[../]
[./C34]
order = CONSTANT
family = MONOMIAL
[../]
[./C35]
order = CONSTANT
family = MONOMIAL
[../]
[./C36]
order = CONSTANT
family = MONOMIAL
[../]
[./C44]
order = CONSTANT
family = MONOMIAL
[../]
[./C45]
order = CONSTANT
family = MONOMIAL
[../]
[./C46]
order = CONSTANT
family = MONOMIAL
[../]
[./C55]
order = CONSTANT
family = MONOMIAL
[../]
[./C56]
order = CONSTANT
family = MONOMIAL
[../]
[./C66]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[]
[Kernels]
[./diff]
type = Diffusion
variable = diffused
[../]
[]
[AuxKernels]
[./matl_C11]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 0
variable = C11
[../]
[./matl_C12]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 1
index_l = 1
variable = C12
[../]
[./matl_C13]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 2
index_l = 2
variable = C13
[../]
[./matl_C14]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 1
index_l = 2
variable = C14
[../]
[./matl_C15]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 2
variable = C15
[../]
[./matl_C16]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 1
variable = C16
[../]
[./matl_C22]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 1
index_l = 1
variable = C22
[../]
[./matl_C23]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 2
index_l = 2
variable = C23
[../]
[./matl_C24]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 1
index_l = 2
variable = C24
[../]
[./matl_C25]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 0
index_l = 2
variable = C25
[../]
[./matl_C26]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 0
index_l = 1
variable = C26
[../]
[./matl_C33]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 2
index_l = 2
variable = C33
[../]
[./matl_C34]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 1
index_l = 2
variable = C34
[../]
[./matl_C35]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 0
index_l = 2
variable = C35
[../]
[./matl_C36]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 0
index_l = 1
variable = C36
[../]
[./matl_C44]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 2
index_k = 1
index_l = 2
variable = C44
[../]
[./matl_C45]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 2
index_k = 0
index_l = 2
variable = C45
[../]
[./matl_C46]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 2
index_k = 0
index_l = 1
variable = C46
[../]
[./matl_C55]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 2
index_k = 0
index_l = 2
variable = C55
[../]
[./matl_C56]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 2
index_k = 0
index_l = 1
variable = C56
[../]
[./matl_C66]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 1
index_k = 0
index_l = 1
variable = C66
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric21
C_ijkl ='1111 1122 1133 1123 1113 1112 2222 2233 2223 2213 2212 3333 3323 3313 3312 2323 2313 2312 1313 1312 1212'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = diffused
boundary = '1'
value = 1
[../]
[./top]
type = DirichletBC
variable = diffused
boundary = '2'
value = 0
[../]
[./disp_x_BC]
type = DirichletBC
variable = disp_x
boundary = '0 2'
value = 0.5
[../]
[./disp_x_BC2]
type = DirichletBC
variable = disp_x
boundary = '1 3'
value = 0.01
[../]
[./disp_y_BC]
type = DirichletBC
variable = disp_y
boundary = '0 2'
value = 0.8
[../]
[./disp_y_BC2]
type = DirichletBC
variable = disp_y
boundary = '1 3'
value = 0.02
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/jacobian/thermal_coupling_rz.i)
# Thermal eigenstrain coupling
[Mesh]
type = GeneratedMesh
dim = 2
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Variables]
[./disp_r]
[../]
[./disp_z]
[../]
[./temperature]
[../]
[]
[Kernels]
[./cx_elastic]
type = StressDivergenceRZTensors
variable = disp_r
temperature = temperature
eigenstrain_names = thermal_contribution
use_displaced_mesh = false
component = 0
[../]
[./cz_elastic]
type = StressDivergenceRZTensors
variable = disp_z
temperature = temperature
eigenstrain_names = thermal_contribution
use_displaced_mesh = false
component = 1
[../]
[./temperature]
type = Diffusion
variable = temperature
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 10.0
poissons_ratio = 0.25
[../]
[./strain]
type = ComputeAxisymmetricRZSmallStrain
eigenstrain_names = thermal_contribution
[../]
[./thermal_expansion]
type = ComputeThermalExpansionEigenstrain
temperature = temperature
thermal_expansion_coeff = 1.0E2
eigenstrain_name = thermal_contribution
stress_free_temperature = 0.0
[../]
[./admissible]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-snes_type'
petsc_options_value = 'test'
[../]
[]
[Executioner]
solve_type = NEWTON
end_time = 1
dt = 1
type = Transient
[]
(modules/peridynamics/test/tests/jacobian_check/generalized_planestrain_thermomechanics_smallstrain_H1NOSPD.i)
# NOTE: this jacobian test for the coupled thermomechanical model must use displaced mesh, otherwise the difference for the first step is huge
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
scalar_out_of_plane_strain = scalar_strain_zz
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
[../]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[Kernels]
[./heat]
type = HeatConductionBPD
variable = temp
[../]
[]
[Modules/Peridynamics/Mechanics]
[./Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
eigenstrain_names = thermal
[../]
[../]
[./GeneralizedPlaneStrain]
[./all]
formulation = NONORDINARY_STATE
eigenstrain_names = thermal
[../]
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
eigenstrain_names = thermal
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0.5
eigenstrain_name = thermal
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./thermal_mat]
type = ThermalConstantHorizonMaterialBPD
thermal_conductivity = 1.0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(modules/tensor_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]
[./TensorMechanics]
[../]
[]
[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/tensor_mechanics/test/tests/CylindricalRankTwoAux/test.i)
[Mesh]
[file_mesh]
type = FileMeshGenerator
file = circle.e
[]
[cnode]
type = ExtraNodesetGenerator
coord = '1000.0 0.0'
new_boundary = 10
input = file_mesh
[]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./T]
[../]
[./stress_rr]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_tt]
order = CONSTANT
family = MONOMIAL
[../]
[]
[ICs]
[./T_IC]
type = FunctionIC
variable = T
function = '1000-0.7*sqrt(x^2+y^2)'
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./stress_rr]
type = CylindricalRankTwoAux
variable = stress_rr
rank_two_tensor = stress
index_j = 0
index_i = 0
center_point = '0 0 0'
[../]
[./stress_tt]
type = CylindricalRankTwoAux
variable = stress_tt
rank_two_tensor = stress
index_j = 1
index_i = 1
center_point = '0 0 0'
[../]
[]
[BCs]
[./outer_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0
[../]
[./outer_y]
type = DirichletBC
variable = disp_y
boundary = '2 10'
value = 0
[../]
[]
[Materials]
[./iso_C]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '2.15e5 0.74e5'
block = 1
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y'
block = 1
eigenstrain_names = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
block = 1
[../]
[./thermal_strain]
type= ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
temperature = T
stress_free_temperature = 273
block = 1
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
l_max_its = 30
nl_max_its = 10
nl_abs_tol = 1e-9
nl_rel_tol = 1e-14
l_tol = 1e-4
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/tensor_mechanics/test/tests/global_strain/global_strain.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
[]
[cnode]
type = ExtraNodesetGenerator
coord = '0 0'
new_boundary = 100
input = generated_mesh
[]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./global_strain]
order = THIRD
family = SCALAR
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[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
[../]
[]
[GlobalParams]
displacements = 'u_x u_y'
block = 0
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[BCs]
[./Periodic]
[./left-right]
auto_direction = 'x y'
variable = '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]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./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.1 0.2 0 0 0 -0.2'
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-8
nl_abs_tol = 1.0e-10
start_time = 0.0
num_steps = 2
[]
[Outputs]
exodus = true
[]
(modules/tensor_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
[../]
[]
[Modules/TensorMechanics/Master]
[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
value = '(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/tensor_mechanics/test/tests/generalized_plane_strain/plane_strain.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
block = 0
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[AuxVariables]
[./temp]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(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
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
temperature = temp
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
planar_formulation = PLANE_STRAIN
eigenstrain_names = eigenstrain
save_in = 'saved_x saved_y'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./elastic_stress]
type = ComputeLinearElasticStress
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
temperature = temp
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-8
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
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/xfem/test/tests/corner_nodes_cut/notch.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '-0.26 0.0 0.0 0.1'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Mesh]
file = notch.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[BCs]
[./top_x]
type = DirichletBC
boundary = 102
variable = disp_x
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 102
variable = disp_y
value = 0.1
[../]
[./bottom_y]
type = DirichletBC
boundary = 101
variable = disp_y
value = -0.1
[../]
[./bottom_x]
type = DirichletBC
boundary = 101
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-9
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/peridynamics/test/tests/jacobian_check/2D_mechanics_FNOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = FORCE
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.0
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = FORCE
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(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
args = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
function = '-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'
[]
[]
[Modules]
[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]
interval = 3
type = CSV
[]
[]
(modules/peridynamics/test/tests/jacobian_check/2D_mechanics_smallstrain_H2NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_II
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.0
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_II
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(modules/tensor_mechanics/test/tests/1D_axisymmetric/axisymm_plane_strain_small.i)
#
# This test checks elastic stress calculations with mechanical and thermal
# strain using small strain formulation. Young's modulus is 3600, and Poisson's ratio is 0.2.
# The axisymmetric, plane strain 1D mesh is pulled with 1e-6 strain. Thus,
# the strain is [1e-6, 0, 1e-6] (xx, yy, zz). This gives stress of
# [5e-3, 2e-3, 5e-3]. After a temperature increase of 100 with alpha of
# 1e-8, the stress becomes [-1e-3, -4e-3, -1e-3].
#
[GlobalParams]
displacements = disp_x
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = line.e
[]
[Variables]
[./disp_x]
[../]
[]
[AuxVariables]
[./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'
[../]
[]
[Modules]
[./TensorMechanics]
[./Master]
[./ps]
planar_formulation = PLANE_STRAIN
strain = SMALL
generate_output = 'strain_xx strain_zz stress_xx stress_yy stress_zz'
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./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
[../]
[./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/tensor_mechanics/test/tests/gravity/material_vector_body_force.i)
#
# MaterialVectorBodyForce Test
#
# This test is designed to apply gravity using the MaterialVectorBodyForce kernel/action.
#
# The mesh is composed of one block with a single element.
# The bottom is fixed in all three directions. Poisson's ratio
# is zero, which makes it trivial to check displacements.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
[]
[Modules/TensorMechanics]
[Master/all]
add_variables = true
[]
[MaterialVectorBodyForce/all]
body_force = force_density
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[]
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 0.5e6'
[]
[stress]
type = ComputeLinearElasticStress
[]
[force_density]
type = GenericConstantVectorMaterial
prop_names = force_density
prop_values = '0 -19.9995 0'
[]
[]
[Executioner]
type = Steady
nl_abs_tol = 1e-10
l_max_its = 20
[]
[Outputs]
[out]
type = Exodus
elemental_as_nodal = true
[]
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_first/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank block'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ComputeLinearElasticStress
block = 'plank block'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
exodus = true
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/tensor_mechanics/test/tests/cohesive_zone_model/czm_multiple_dimension_base.i)
[Mesh]
[./msh]
type = GeneratedMeshGenerator
[]
[./subdomain_1]
type = SubdomainBoundingBoxGenerator
input = msh
bottom_left = '0 0 0'
block_id = 1
top_right = '0.5 1 1'
[]
[./subdomain_2]
type = SubdomainBoundingBoxGenerator
input = subdomain_1
bottom_left = '0.5 0 0'
block_id = 2
top_right = '1 1 1'
[]
[./breakmesh]
input = subdomain_2
type = BreakMeshByBlockGenerator
[../]
[add_side_sets]
input = breakmesh
type = SideSetsFromNormalsGenerator
normals = '0 -1 0
0 1 0
-1 0 0
1 0 0
0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'y0 y1 x0 x1 z0 z1'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_yz stress_xz stress_xy'
[../]
[]
[Modules/TensorMechanics/CohesiveZoneMaster]
[./czm1]
boundary = 'interface'
generate_output = 'traction_x traction_y traction_z normal_traction tangent_traction jump_x jump_y jump_z normal_jump tangent_jump'
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = x0
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = x0
value = 0.0
[../]
[./left_z]
type = DirichletBC
variable = disp_z
preset = false
boundary = x0
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
preset = false
boundary = x1
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = x1
[../]
[./right_z]
type = FunctionDirichletBC
variable = disp_z
preset = false
boundary = x1
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = '1 2'
fill_method = symmetric_isotropic
C_ijkl = '0.3 0.5e8'
[../]
[./stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[./czm_mat]
type = PureElasticTractionSeparation
boundary = 'interface'
normal_stiffness = 10
tangent_stiffness = 5
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
solve_type = NEWTON
nl_abs_tol = 1e-8
nl_rel_tol = 1e-6
nl_max_its = 5
l_tol = 1e-10
l_max_its = 50
start_time = 0.0
dt = 0.2
end_time = 0.2
dtmin = 0.2
line_search = none
[]
[Outputs]
[./out]
type = Exodus
[../]
[]
(modules/porous_flow/test/tests/jacobian/mass_vol_exp01.i)
# Tests the PorousFlowMassVolumetricExpansion kernel
# Fluid with constant bulk modulus, van-Genuchten capillary, constant porosity
[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'
block = 0
PorousFlowDictator = dictator
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[]
[ICs]
[disp_x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[]
[disp_y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[]
[disp_z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[]
[p]
type = RandomIC
min = -1
max = 1
variable = porepressure
[]
[]
[BCs]
# necessary otherwise volumetric strain rate will be zero
[disp_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[disp_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'left right'
[]
[disp_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'left right'
[]
[]
[Kernels]
[grad_stress_x]
type = StressDivergenceTensors
variable = disp_x
displacements = 'disp_x disp_y disp_z'
component = 0
[]
[grad_stress_y]
type = StressDivergenceTensors
variable = disp_y
displacements = 'disp_x disp_y disp_z'
component = 1
[]
[grad_stress_z]
type = StressDivergenceTensors
variable = disp_z
displacements = 'disp_x disp_y disp_z'
component = 2
[]
[poro]
type = PorousFlowMassVolumetricExpansion
fluid_component = 0
variable = porepressure
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'porepressure disp_x disp_y disp_z'
number_fluid_phases = 1
number_fluid_components = 1
[]
[simple1]
type = TensorMechanicsPlasticSimpleTester
a = 0
b = 1
strength = 1E20
yield_function_tolerance = 1.0E-9
internal_constraint_tolerance = 1.0E-9
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
fill_method = symmetric_isotropic
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[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 = PorousFlowPorosityConst
porosity = 0.1
[]
[]
[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
dt = 1E-5
[]
[Outputs]
execute_on = 'timestep_end'
file_base = jacobian2
exodus = false
[]
(modules/tensor_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
value = 5e-5*(2*x+y+z)
[../]
[./yDispFunc]
type = ParsedFunction
value = 5e-5*(x+2*y+z)
[../]
[./zDispFunc]
type = ParsedFunction
value = 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]
[./TensorMechanics]
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/tensor_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]
[./TensorMechanics]
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
value = '0.25*z' # half of the initial stress that should result from the weight force
[../]
[./kxx]
type = ParsedFunction
value = '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/tensor_mechanics/test/tests/test_jacobian/jacobian_spherical.i)
[GlobalParams]
displacements = 'disp_x'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
nx = 2
xmin = 1
xmax = 2
[]
[]
[Problem]
coord_type = RSPHERICAL
[]
[Variables]
[disp_x]
[]
[]
[Modules/TensorMechanics/Master]
[all]
incremental = false
strain = SMALL
[]
[]
[BCs]
[disp_x]
type = DirichletBC
variable = disp_x
boundary = right
value = 1e-2
[]
[]
[Materials]
[stress]
type = ComputeLinearElasticStress
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3.7e11
poissons_ratio = 0.345
[]
[]
[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 4'
petsc_options = '-snes_test_jacobian -snes_test_jacobian_view'
line_search = 'none'
solve_type = NEWTON
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
dt = 1
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/homogenization/anisoLongFiber.i)
#
# Test from:
# Multiple Scale Analysis of Heterogeneous Elastic Structures Using
# Homogenization Theory and Voronoi Cell Finite Element Method
# by S.Ghosh et. al, Int J. Solids Structures, Vol. 32, No. 1,
# pp. 27-62, 1995.
#
# From that paper, elastic constants should be:
# E1111: 136.1
# E2222: 245.8
# E1212: 46.85
# E1122: 36.08
#
# Note: this is for plane stress conditions
#
[Mesh]
file = anisoLongFiber.e
[]
[Variables]
[./dx_xx]
order = FIRST
family = LAGRANGE
[../]
[./dy_xx]
order = FIRST
family = LAGRANGE
[../]
[./dx_yy]
order = FIRST
family = LAGRANGE
[../]
[./dy_yy]
order = FIRST
family = LAGRANGE
[../]
[./dx_xy]
order = FIRST
family = LAGRANGE
[../]
[./dy_xy]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./div_x_xx]
type = StressDivergenceTensors
component = 0
variable = dx_xx
displacements = 'dx_xx dy_xx'
use_displaced_mesh = false
base_name = xx
[../]
[./div_y_xx]
type = StressDivergenceTensors
component = 1
variable = dy_xx
displacements = 'dx_xx dy_xx'
use_displaced_mesh = false
base_name = xx
[../]
[./div_x_yy]
type = StressDivergenceTensors
component = 0
variable = dx_yy
displacements = 'dx_yy dy_yy'
use_displaced_mesh = false
base_name = yy
[../]
[./div_y_yy]
type = StressDivergenceTensors
component = 1
variable = dy_yy
displacements = 'dx_yy dy_yy'
use_displaced_mesh = false
base_name = yy
[../]
[./div_x_xy]
type = StressDivergenceTensors
component = 0
variable = dx_xy
displacements = 'dx_xy dy_xy'
use_displaced_mesh = false
base_name = xy
[../]
[./div_y_xy]
type = StressDivergenceTensors
component = 1
variable = dy_xy
displacements = 'dx_xy dy_xy'
use_displaced_mesh = false
base_name = xy
[../]
[./homo_dx_xx]
type = AsymptoticExpansionHomogenizationKernel
variable = dx_xx
component = 0
column = xx
base_name = xx
[../]
[./homo_dy_xx]
type = AsymptoticExpansionHomogenizationKernel
variable = dy_xx
component = 1
column = xx
base_name = xx
[../]
[./homo_dx_yy]
type = AsymptoticExpansionHomogenizationKernel
variable = dx_yy
component = 0
column = yy
base_name = yy
[../]
[./homo_dy_yy]
type = AsymptoticExpansionHomogenizationKernel
variable = dy_yy
component = 1
column = yy
base_name = yy
[../]
[./homo_dx_xy]
type = AsymptoticExpansionHomogenizationKernel
variable = dx_xy
component = 0
column = xy
base_name = xy
[../]
[./homo_dy_xy]
type = AsymptoticExpansionHomogenizationKernel
variable = dy_xy
component = 1
column = xy
base_name = xy
[../]
[]
[BCs]
[./Periodic]
[./top_bottom]
primary = 30
secondary = 40
translation = '0 1 0'
[../]
[./left_right]
primary = 10
secondary = 20
translation = '1 0 0'
[../]
[../]
[./dx_xx_anchor]
type = DirichletBC
variable = dx_xx
boundary = 1
value = 0.0
[../]
[./dy_xx_anchor]
type = DirichletBC
variable = dy_xx
boundary = 1
value = 0.0
[../]
[./dx_yy_anchor]
type = DirichletBC
variable = dx_yy
boundary = 1
value = 0.0
[../]
[./dy_yy_anchor]
type = DirichletBC
variable = dy_yy
boundary = 1
value = 0.0
[../]
[./dx_xy_anchor]
type = DirichletBC
variable = dx_xy
boundary = 1
value = 0.0
[../]
[./dy_xy_anchor]
type = DirichletBC
variable = dy_xy
boundary = 1
value = 0.0
[../]
[]
[Materials]
[./elastic_stress_xx]
type = ComputeLinearElasticStress
base_name = xx
[../]
[./elastic_stress_yy]
type = ComputeLinearElasticStress
base_name = yy
[../]
[./elastic_stress_xy]
type = ComputeLinearElasticStress
base_name = xy
[../]
[./strain_xx]
type = ComputeSmallStrain
displacements = 'dx_xx dy_xx'
base_name = xx
[../]
[./strain_yy]
type = ComputeSmallStrain
displacements = 'dx_yy dy_yy'
base_name = yy
[../]
[./strain_xy]
type = ComputeSmallStrain
displacements = 'dx_xy dy_xy'
base_name = xy
[../]
[./block1]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric9
C_ijkl = '81.360117 26.848839 26.848839 81.360117 26.848839 81.360117 27.255639 27.255639 27.255639'
base_name = xx
[../]
[./block2]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric9
C_ijkl = '81.360117 26.848839 26.848839 81.360117 26.848839 81.360117 27.255639 27.255639 27.255639'
base_name = yy
[../]
[./block3]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric9
C_ijkl = '81.360117 26.848839 26.848839 81.360117 26.848839 81.360117 27.255639 27.255639 27.255639'
base_name = xy
[../]
[./block4]
type = ComputeElasticityTensor
block = 2
fill_method = symmetric9
C_ijkl = '416.66667 83.33333 83.33333 416.6667 83.33333 416.66667 166.66667 166.66667 166.66667'
base_name = xx
[../]
[./block5]
type = ComputeElasticityTensor
block = 2
fill_method = symmetric9
C_ijkl = '416.66667 83.33333 83.33333 416.6667 83.33333 416.66667 166.66667 166.66667 166.66667'
base_name = yy
[../]
[./block6]
type = ComputeElasticityTensor
block = 2
fill_method = symmetric9
C_ijkl = '416.66667 83.33333 83.33333 416.6667 83.33333 416.66667 166.66667 166.66667 166.66667'
base_name = xy
[../]
[]
[Postprocessors]
[./E1111]
type = AsymptoticExpansionHomogenizationElasticConstants
base_name = xx
row = xx
column = xx
dx_xx = dx_xx
dy_xx = dy_xx
dx_yy = dx_yy
dy_yy = dy_yy
dx_xy = dx_xy
dy_xy = dy_xy
execute_on = 'initial timestep_end'
[../]
[./E2222]
type = AsymptoticExpansionHomogenizationElasticConstants
base_name = xx
row = yy
column = yy
dx_xx = dx_xx
dy_xx = dy_xx
dx_yy = dx_yy
dy_yy = dy_yy
dx_xy = dx_xy
dy_xy = dy_xy
execute_on = 'initial timestep_end'
[../]
[./E1122]
type = AsymptoticExpansionHomogenizationElasticConstants
base_name = xx
row = xx
column = yy
dx_xx = dx_xx
dy_xx = dy_xx
dx_yy = dx_yy
dy_yy = dy_yy
dx_xy = dx_xy
dy_xy = dy_xy
execute_on = 'initial timestep_end'
[../]
[./E2211]
type = AsymptoticExpansionHomogenizationElasticConstants
base_name = xx
row = yy
column = xx
dx_xx = dx_xx
dy_xx = dy_xx
dx_yy = dx_yy
dy_yy = dy_yy
dx_xy = dx_xy
dy_xy = dy_xy
execute_on = 'initial timestep_end'
[../]
[./E1212]
type = AsymptoticExpansionHomogenizationElasticConstants
base_name = xx
row = xy
column = xy
dx_xx = dx_xx
dy_xx = dy_xx
dx_yy = dx_yy
dy_yy = dy_yy
dx_xy = dx_xy
dy_xy = dy_xy
execute_on = 'initial timestep_end'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-ksp_gmres_modifiedgramschmidt'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_grid_sweeps_all -ksp_type -mat_mffd_type'
petsc_options_value = '201 hypre boomeramg 2 2 fgmres ds'
line_search = 'none'
l_tol = 1e-4
l_max_its = 40
nl_max_its = 40
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
start_time = 0.0
end_time = 10.0
num_steps = 1
dt = 10
[]
[Outputs]
exodus = true
csv = true
[]
(modules/tensor_mechanics/test/tests/2D_different_planes/gps_yz.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = square_yz_plane.e
[]
[Variables]
[./disp_y]
[../]
[./disp_z]
[../]
[./scalar_strain_xx]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./temp]
[../]
[./disp_x]
[../]
[]
[Modules/TensorMechanics/Master]
[./generalized_plane_strain]
block = 1
strain = SMALL
scalar_out_of_plane_strain = scalar_strain_xx
out_of_plane_direction = x
planar_formulation = GENERALIZED_PLANE_STRAIN
eigenstrain_names = 'eigenstrain'
generate_output = 'stress_xx stress_yz stress_yy stress_zz strain_xx strain_yz strain_yy strain_zz'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(1-y)*t'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 4
variable = disp_y
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 4
variable = disp_z
value = 0.0
[../]
[]
[Materials]
[./elastic_stress]
type = ComputeLinearElasticStress
block = 1
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[]
[Postprocessors]
[./react_x]
type = MaterialTensorIntegral
use_displaced_mesh = false
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[]
[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 = 10
nl_rel_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
file_base = gps_yz_small_out
exodus = true
[]
(modules/tensor_mechanics/test/tests/homogenization/anisoShortFiber.i)
#
# Test from:
# Multiple Scale Analysis of Heterogeneous Elastic Structures Using
# Homogenization Theory and Voronoi Cell Finite Element Method
# by S.Ghosh et. al, Int J. Solids Structures, Vol. 32, No. 1,
# pp. 27-62, 1995.
#
# From that paper, elastic constants should be:
# E1111: 122.4
# E2222: 151.2
# E1212: 42.1
# E1122: 36.23
#
# Note: this is for plane stress conditions
#
[Mesh]
file = anisoShortFiber.e
# To calculate matching values, refine the mesh one time.
# We use a coarse mesh for speed in this test.
# uniform_refine = 1
[]
[Variables]
[./dx_xx]
order = FIRST
family = LAGRANGE
[../]
[./dy_xx]
order = FIRST
family = LAGRANGE
[../]
[./dx_yy]
order = FIRST
family = LAGRANGE
[../]
[./dy_yy]
order = FIRST
family = LAGRANGE
[../]
[./dx_xy]
order = FIRST
family = LAGRANGE
[../]
[./dy_xy]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./div_x_xx]
type = StressDivergenceTensors
component = 0
variable = dx_xx
displacements = 'dx_xx dy_xx'
use_displaced_mesh = false
base_name = xx
[../]
[./div_y_xx]
type = StressDivergenceTensors
component = 1
variable = dy_xx
displacements = 'dx_xx dy_xx'
use_displaced_mesh = false
base_name = xx
[../]
[./div_x_yy]
type = StressDivergenceTensors
component = 0
variable = dx_yy
displacements = 'dx_yy dy_yy'
use_displaced_mesh = false
base_name = yy
[../]
[./div_y_yy]
type = StressDivergenceTensors
component = 1
variable = dy_yy
displacements = 'dx_yy dy_yy'
use_displaced_mesh = false
base_name = yy
[../]
[./div_x_xy]
type = StressDivergenceTensors
component = 0
variable = dx_xy
displacements = 'dx_xy dy_xy'
use_displaced_mesh = false
base_name = xy
[../]
[./div_y_xy]
type = StressDivergenceTensors
component = 1
variable = dy_xy
displacements = 'dx_xy dy_xy'
use_displaced_mesh = false
base_name = xy
[../]
[./aeh_dx_xx]
type = AsymptoticExpansionHomogenizationKernel
variable = dx_xx
component = 0
column = xx
base_name = xx
[../]
[./aeh_dy_xx]
type = AsymptoticExpansionHomogenizationKernel
variable = dy_xx
component = 1
column = xx
base_name = xx
[../]
[./aeh_dx_yy]
type = AsymptoticExpansionHomogenizationKernel
variable = dx_yy
component = 0
column = yy
base_name = yy
[../]
[./aeh_dy_yy]
type = AsymptoticExpansionHomogenizationKernel
variable = dy_yy
component = 1
column = yy
base_name = yy
[../]
[./aeh_dx_xy]
type = AsymptoticExpansionHomogenizationKernel
variable = dx_xy
component = 0
column = xy
base_name = xy
[../]
[./aeh_dy_xy]
type = AsymptoticExpansionHomogenizationKernel
variable = dy_xy
component = 1
column = xy
base_name = xy
[../]
[]
[BCs]
[./Periodic]
[./top_bottom]
primary = 30
secondary = 40
translation = '0 1 0'
[../]
[./left_right]
primary = 10
secondary = 20
translation = '1 0 0'
[../]
[../]
[./dx_xx_anchor]
type = DirichletBC
variable = dx_xx
boundary = 1
value = 0.0
[../]
[./dy_xx_anchor]
type = DirichletBC
variable = dy_xx
boundary = 1
value = 0.0
[../]
[./dx_yy_anchor]
type = DirichletBC
variable = dx_yy
boundary = 1
value = 0.0
[../]
[./dy_yy_anchor]
type = DirichletBC
variable = dy_yy
boundary = 1
value = 0.0
[../]
[./dx_xy_anchor]
type = DirichletBC
variable = dx_xy
boundary = 1
value = 0.0
[../]
[./dy_xy_anchor]
type = DirichletBC
variable = dy_xy
boundary = 1
value = 0.0
[../]
[]
[Materials]
[./elastic_stress_xx]
type = ComputeLinearElasticStress
base_name = xx
[../]
[./elastic_stress_yy]
type = ComputeLinearElasticStress
base_name = yy
[../]
[./elastic_stress_xy]
type = ComputeLinearElasticStress
base_name = xy
[../]
[./strain_xx]
type = ComputeSmallStrain
displacements = 'dx_xx dy_xx'
base_name = xx
[../]
[./strain_yy]
type = ComputeSmallStrain
displacements = 'dx_yy dy_yy'
base_name = yy
[../]
[./strain_xy]
type = ComputeSmallStrain
displacements = 'dx_xy dy_xy'
base_name = xy
[../]
[./block1]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric9
C_ijkl = '81.360117 26.848839 26.848839 81.360117 26.848839 81.360117 27.255639 27.255639 27.255639'
base_name = xx
[../]
[./block2]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric9
C_ijkl = '81.360117 26.848839 26.848839 81.360117 26.848839 81.360117 27.255639 27.255639 27.255639'
base_name = yy
[../]
[./block3]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric9
C_ijkl = '81.360117 26.848839 26.848839 81.360117 26.848839 81.360117 27.255639 27.255639 27.255639'
base_name = xy
[../]
[./block4]
type = ComputeElasticityTensor
block = 2
fill_method = symmetric9
C_ijkl = '416.66667 83.33333 83.33333 416.6667 83.33333 416.66667 166.66667 166.66667 166.66667'
base_name = xx
[../]
[./block5]
type = ComputeElasticityTensor
block = 2
fill_method = symmetric9
C_ijkl = '416.66667 83.33333 83.33333 416.6667 83.33333 416.66667 166.66667 166.66667 166.66667'
base_name = yy
[../]
[./block6]
type = ComputeElasticityTensor
block = 2
fill_method = symmetric9
C_ijkl = '416.66667 83.33333 83.33333 416.6667 83.33333 416.66667 166.66667 166.66667 166.66667'
base_name = xy
[../]
[]
[Postprocessors]
[./E1111]
type = AsymptoticExpansionHomogenizationElasticConstants
base_name = xx
row = xx
column = xx
dx_xx = dx_xx
dy_xx = dy_xx
dx_yy = dx_yy
dy_yy = dy_yy
dx_xy = dx_xy
dy_xy = dy_xy
execute_on = 'initial timestep_end'
[../]
[./E2222]
type = AsymptoticExpansionHomogenizationElasticConstants
base_name = xx
row = yy
column = yy
dx_xx = dx_xx
dy_xx = dy_xx
dx_yy = dx_yy
dy_yy = dy_yy
dx_xy = dx_xy
dy_xy = dy_xy
execute_on = 'initial timestep_end'
[../]
[./E1122]
type = AsymptoticExpansionHomogenizationElasticConstants
base_name = xx
row = xx
column = yy
dx_xx = dx_xx
dy_xx = dy_xx
dx_yy = dx_yy
dy_yy = dy_yy
dx_xy = dx_xy
dy_xy = dy_xy
execute_on = 'initial timestep_end'
[../]
[./E2211]
type = AsymptoticExpansionHomogenizationElasticConstants
base_name = xy
row = yy
column = xx
dx_xx = dx_xx
dy_xx = dy_xx
dx_yy = dx_yy
dy_yy = dy_yy
dx_xy = dx_xy
dy_xy = dy_xy
execute_on = 'initial timestep_end'
[../]
[./E1212]
type = AsymptoticExpansionHomogenizationElasticConstants
base_name = xx
row = xy
column = xy
dx_xx = dx_xx
dy_xx = dy_xx
dx_yy = dx_yy
dy_yy = dy_yy
dx_xy = dx_xy
dy_xy = dy_xy
execute_on = 'initial timestep_end'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-ksp_gmres_modifiedgramschmidt'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_grid_sweeps_all -ksp_type -mat_mffd_type'
petsc_options_value = '201 hypre boomeramg 2 2 fgmres ds'
line_search = 'none'
l_tol = 1e-4
l_max_its = 40
nl_max_its = 40
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
start_time = 0.0
end_time = 10.0
num_steps = 1
dt = 10
[]
[Outputs]
exodus = true
csv = 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
[]
[Problem]
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
[]
[]
[Modules]
[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/combined/test/tests/generalized_plane_strain_tm_contact/out_of_plane_pressure.i)
# Tests for application of out-of-plane pressure in generalized plane strain.
[Mesh]
type = GeneratedMesh
nx = 2
ny = 2
dim = 2
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./saved_x]
order = FIRST
family = LAGRANGE
[../]
[./saved_y]
order = FIRST
family = LAGRANGE
[../]
[./saved_zz]
order = FIRST
family = SCALAR
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[]
[Modules]
[./TensorMechanics]
[./GeneralizedPlaneStrain]
[./gps]
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
out_of_plane_pressure = traction_function
factor = 1e5
[../]
[../]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxScalarKernels]
[./gps_ref_res]
type = GeneralizedPlaneStrainReferenceResidual
variable = saved_zz
generalized_plane_strain = gps_GeneralizedPlaneStrainUserObject
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./traction_function]
type = PiecewiseLinear
x = '0 2'
y = '0 1'
[../]
[]
[BCs]
[./leftx]
type = DirichletBC
boundary = left
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./strain]
type = ComputePlaneSmallStrain
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-11
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
num_steps = 5000
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/stickyBC/except1.i)
# Exception testing of StickyBC. Here min_value > max_value
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
[../]
[]
[BCs]
[./obstruction]
type = StickyBC
variable = disp_y
boundary = bottom
min_value = 1
max_value = -1
[../]
[]
[Materials]
[./stress]
type = ComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.2
[../]
[]
[Executioner]
type = Transient
[]
(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
[]
[]
[Modules]
[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
value = 'biot+(phi0-biot)*exp(pp*(biot-1)/bulk)'
vars = 'biot phi0 pp bulk'
vals = '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/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
value = '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
csv = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/peridynamics/test/tests/auxkernels/planestrain_thermomechanics_stretch_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 6
ny = 6
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[./total_stretch]
order = CONSTANT
family = MONOMIAL
[../]
[./mechanical_stretch]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
eigenstrain_names = thermal_strain
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./total_stretch]
type = MaterialRealAux
variable = total_stretch
property = total_stretch
[../]
[./mechanical_stretch]
type = MaterialRealAux
variable = mechanical_stretch
property = mechanical_stretch
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = 'x*x+y*y'
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
boundary = 1003
preset = false
variable = disp_x
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
boundary = 1000
preset = false
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
eigenstrain_names = thermal_strain
plane_strain = true
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.0002
stress_free_temperature = 0.0
eigenstrain_name = thermal_strain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
l_tol = 1e-8
nl_rel_tol = 1e-10
start_time = 0.0
end_time = 1.0
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
[Outputs]
exodus = true
file_base = planestrain_thermomechanics_stretch_H1NOSPD
[]
(modules/combined/examples/stochastic/graphite_ring_thermomechanics.i)
# Generate 1/4 of a 2-ring disk and extrude it by half to obtain
# 1/8 of a 3D tube. Mirror boundary conditions will exist on the
# cut portions.
[Mesh]
[disk]
type = ConcentricCircleMeshGenerator
num_sectors = 10
radii = '1.0 1.1 1.2'
rings = '1 1 1'
has_outer_square = false
preserve_volumes = false
portion = top_right
[]
[ring]
type = BlockDeletionGenerator
input = disk
block = 1
new_boundary = 'inner'
[]
[cylinder]
type = MeshExtruderGenerator
input = ring
extrusion_vector = '0 0 1.5'
num_layers = 15
bottom_sideset = 'back'
top_sideset = 'front'
[]
[]
[Variables]
[T]
initial_condition = 300
[]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = T
[]
[TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[]
[]
[BCs]
[temp_inner]
type = FunctionNeumannBC
variable = T
boundary = 'inner'
function = surface_source
[]
[temp_front]
type = ConvectiveHeatFluxBC
variable = T
boundary = 'front'
T_infinity = 300
heat_transfer_coefficient = 10
[]
[temp_outer]
type = ConvectiveHeatFluxBC
variable = T
boundary = 'outer'
T_infinity = 300
heat_transfer_coefficient = 10
[]
# mirror boundary conditions.
[disp_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[disp_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[]
[disp_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0.0
[]
[]
[Materials]
[cond_inner]
type = GenericConstantMaterial
block = 2
prop_names = thermal_conductivity
prop_values = 25
[]
[cond_outer]
type = GenericConstantMaterial
block = 3
prop_names = thermal_conductivity
prop_values = 100
[]
[elasticity_tensor_inner]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
block = 2
[]
[elasticity_tensor_outer]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3.1e5
poissons_ratio = 0.2
block = 3
[]
[thermal_strain_inner]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 2e-6
temperature = T
stress_free_temperature = 300
eigenstrain_name = eigenstrain_inner
block = 2
[]
[thermal_strain_outer]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
temperature = T
stress_free_temperature = 300
eigenstrain_name = eigenstrain_outer
block = 3
[]
[strain_inner] #We use small deformation mechanics
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigenstrain_inner'
block = 2
[]
[strain_outer] #We use small deformation mechanics
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigenstrain_outer'
block = 3
[]
[stress] #We use linear elasticity
type = ComputeLinearElasticStress
[]
[]
[Functions]
[surface_source]
type = ParsedFunction
value = 'Q_t*pi/2.0/3.0 * cos(pi/3.0*z)'
vars = 'Q_t'
vals = heat_source
[]
[]
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
l_max_its = 30
nl_max_its = 100
nl_abs_tol = 1e-9
l_tol = 1e-04
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Controls]
[stochastic]
type = SamplerReceiver
[]
[]
[VectorPostprocessors]
[temp_center]
type = LineValueSampler
variable = T
start_point = '1 0 0'
end_point = '1.2 0 0'
num_points = 11
sort_by = 'x'
[]
[temp_end]
type = LineValueSampler
variable = T
start_point = '1 0 1.5'
end_point = '1.2 0 1.5'
num_points = 11
sort_by = 'x'
[]
[dispx_center]
type = LineValueSampler
variable = disp_x
start_point = '1 0 0'
end_point = '1.2 0 0'
num_points = 11
sort_by = 'x'
[]
[dispx_end]
type = LineValueSampler
variable = disp_x
start_point = '1 0 1.5'
end_point = '1.2 0 1.5'
num_points = 11
sort_by = 'x'
[]
[dispz_end]
type = LineValueSampler
variable = disp_z
start_point = '1 0 1.5'
end_point = '1.2 0 1.5'
num_points = 11
sort_by = 'x'
[]
[]
[Postprocessors]
[heat_source]
type = FunctionValuePostprocessor
function = 1
scale_factor = 10000
execute_on = linear
[]
[temp_center_inner]
type = PointValue
variable = T
point = '1 0 0'
[]
[temp_center_outer]
type = PointValue
variable = T
point = '1.2 0 0'
[]
[temp_end_inner]
type = PointValue
variable = T
point = '1 0 1.5'
[]
[temp_end_outer]
type = PointValue
variable = T
point = '1.2 0 1.5'
[]
[dispx_center_inner]
type = PointValue
variable = disp_x
point = '1 0 0'
[]
[dispx_center_outer]
type = PointValue
variable = disp_x
point = '1.2 0 0'
[]
[dispx_end_inner]
type = PointValue
variable = disp_x
point = '1 0 1.5'
[]
[dispx_end_outer]
type = PointValue
variable = disp_x
point = '1.2 0 1.5'
[]
[dispz_inner]
type = PointValue
variable = disp_z
point = '1 0 1.5'
[]
[dispz_outer]
type = PointValue
variable = disp_z
point = '1.2 0 1.5'
[]
[]
[Outputs]
exodus = false
csv = false
[]
(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
function = 0.02*c^2
f_name = weight1
args = c
[../]
[./weight2]
type = DerivativeParsedMaterial
function = 0.02*(1-c)^2
f_name = weight2
args = 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/porous_flow/examples/tidal/atm_tides.i)
# A 10m x 10m "column" of height 100m is subjected to cyclic pressure at its top
# Assumptions:
# the boundaries are impermeable, except the top boundary
# only vertical displacement is allowed
# the atmospheric pressure sets the total stress at the top of the model
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 10
xmin = 0
xmax = 10
ymin = 0
ymax = 10
zmin = -100
zmax = 0
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
biot_coefficient = 0.6
multiply_by_density = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
scaling = 1E11
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '-10000*z' # approximately correct
[]
[]
[Functions]
[ini_stress_zz]
type = ParsedFunction
value = '(25000 - 0.6*10000)*z' # remember this is effective stress
[]
[cyclic_porepressure]
type = ParsedFunction
value = 'if(t>0,5000 * sin(2 * pi * t / 3600.0 / 24.0),0)'
[]
[neg_cyclic_porepressure]
type = ParsedFunction
value = '-if(t>0,5000 * sin(2 * pi * t / 3600.0 / 24.0),0)'
[]
[]
[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_x_disp]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'bottom top' # because of 1-element meshing, this fixes u_x=0 everywhere
[]
[no_y_disp]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top' # because of 1-element meshing, this fixes u_y=0 everywhere
[]
[no_z_disp_at_bottom]
type = DirichletBC
variable = disp_z
value = 0
boundary = back
[]
[pp]
type = FunctionDirichletBC
variable = porepressure
function = cyclic_porepressure
boundary = front
[]
[total_stress_at_top]
type = FunctionNeumannBC
variable = disp_z
function = neg_cyclic_porepressure
boundary = front
[]
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 2E9
viscosity = 1E-3
density0 = 1000.0
[]
[]
[]
[PorousFlowBasicTHM]
coupling_type = HydroMechanical
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
gravity = '0 0 -10'
fp = the_simple_fluid
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 10.0E9 # drained bulk modulus
poissons_ratio = 0.25
[]
[strain]
type = ComputeSmallStrain
eigenstrain_names = ini_stress
[]
[stress]
type = ComputeLinearElasticStress
[]
[ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '0 0 0 0 0 0 0 0 ini_stress_zz'
eigenstrain_name = ini_stress
[]
[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 = 2E9
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-12 0 0 0 1E-12 0 0 0 1E-14'
[]
[density]
type = GenericConstantMaterial
prop_names = density
prop_values = 2500.0
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[]
[uz0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = disp_z
[]
[p100]
type = PointValue
outputs = csv
point = '0 0 -100'
variable = porepressure
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = -3600 # so postprocessors get recorded correctly at t=0
dt = 3600
end_time = 360000
nl_abs_tol = 5E-7
nl_rel_tol = 1E-10
[]
[Outputs]
csv = 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
value = '0.5*(1.0+tanh((x)/delta_eta/sqrt(2.0)))'
vars = 'delta_eta'
vals = '0.8034'
[../]
[./ic_func_c]
type = ParsedFunction
value = '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))'
vars = 'delta'
vals = '0.8034'
[../]
[./psi_eq_int]
type = ParsedFunction
value = 'volume*psi_alpha'
vars = 'volume psi_alpha'
vals = 'volume psi_alpha'
[../]
[./gamma]
type = ParsedFunction
value = '(psi_int - psi_eq_int) / dy / dz'
vars = 'psi_int psi_eq_int dy dz'
vals = '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
args = 'Fglobal w c f_el sigma11 e11'
function = '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
f_name = fm
args = 'cm'
function = '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
f_name = f_total_matrix
sum_materials = 'fm fe_m'
args = 'cm'
[../]
# Free energy of the precipitate phase
[./fp]
type = DerivativeParsedMaterial
f_name = fp
args = 'cp'
function = '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
f_name = f_total_ppt
sum_materials = 'fp fe_p'
args = '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
interval = 20
[../]
[./csv]
type = CSV
execute_on = 'final'
[../]
#[./console]
# type = Console
# output_file = true
# [../]
[]
(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
[]
[Modules]
[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
vars = 'por0 rte temp rd rhc m0 fhc source'
vals = '0.5 0.25 t0 5 0.2 1.5 2 1'
value = '((1-por0)*exp(rte*temp)*rd*rhc*temp+m0*fhc*temp-source*t)/(source*t)'
[]
[err_pp_fcn]
type = ParsedFunction
vars = 'por0 rte temp rd rhc m0 fhc source bulk pp fte'
vals = '0.5 0.25 t0 5 0.2 1.5 2 1 2 p0 0.5'
value = '(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
exodus = true
[csv]
type = CSV
[]
[]
(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
function = '0.3*c^2'
f_name = weight1
args = c
[../]
[./weight2]
type = DerivativeParsedMaterial
function = '0.3*(1-c)^2'
f_name = weight2
args = c
[../]
[./weight3]
type = DerivativeParsedMaterial
function = '4*(0.5-c)^2'
f_name = weight3
args = 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
f_name = Fc
function = '4*c^2*(1-c)^2'
args = '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
f_name = F
sum_materials = 'Fc Fe'
args = '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/tensor_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
[../]
[]
[Modules/TensorMechanics/Master]
[./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/combined/test/tests/evolving_mass_density/shear_test_tensors.i)
# Element mass tests
# This series of tests is designed to compute the mass of elements based on
# an evolving mass density calculation. The tests consist of expansion and compression
# of the elastic patch test model along each axis, uniform expansion and compression,
# and shear in each direction. The expansion and compression tests change the volume of
# the elements. The corresponding change in density should compensate for this so the
# mass remains constant. The shear tests should not result in a volume change, and this
# is checked too. The mass calculation is done with the post processor called Mass.
# The tests/file names are as follows:
# Expansion and compression along a single axis
# expand_compress_x_test_out.e
# expand_compress_y_test_out.e
# expand_compress_z_test_out.e
# Volumetric expansion and compression
# uniform_expand_compress_test.i
# Zero volume change shear along each axis
# shear_x_test_out.e
# shear_y_test_out.e
# shear_z_test_out.e
# The resulting mass calculation for these tests should always be = 1.
# This test is a duplicate of the uniform_expand_compress_test.i test for solid mechanics, and the
# output of this tensor mechanics test is compared to the original
# solid mechanics output. The duplication is necessary to test the
# migrated tensor mechanics version while maintaining tests for solid mechanics.
[Mesh]
file = elastic_patch.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Functions]
[./rampConstant1]
type = PiecewiseLinear
x = '0.00 1.00 2.0 3.00'
y = '0.00 0.25 0.0 -0.25'
scale_factor = 1
[../]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./bot_x]
type = DirichletBC
variable = disp_x
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
value = 0
[../]
[./bot_z]
type = DirichletBC
variable = disp_z
value = 0
[../]
[./top_x]
variable = disp_x
preset = false
[../]
[./top_y]
variable = disp_y
preset = false
[../]
[./top_z]
variable = disp_z
preset = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./small_strain]
type = ComputeSmallStrain
block = ' 1 2 3 4 5 6 7'
[../]
[./elastic_stress]
type = ComputeLinearElasticStress
block = '1 2 3 4 5 6 7'
[../]
[]
[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 = 3
end_time = 3.0
[] # Executioner
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[] # Outputs
[Postprocessors]
[./Mass]
type = Mass
variable = disp_x
execute_on = 'initial timestep_end'
[../]
[]
(modules/tensor_mechanics/test/tests/truss/truss_hex.i)
# This test is designed to check
# whether truss element works well with other multi-dimensional element
# e.g. the hex element in this case, by assigning different brock number
# to different types of elements.
[Mesh]
type = FileMesh
file = truss_hex.e
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]
[./axial_stress]
order = CONSTANT
family = MONOMIAL
[../]
[./e_over_l]
order = CONSTANT
family = MONOMIAL
[../]
[./area]
order = CONSTANT
family = MONOMIAL
# initial_condition = 1.0
[../]
[./react_x]
order = FIRST
family = LAGRANGE
[../]
[./react_y]
order = FIRST
family = LAGRANGE
[../]
[./react_z]
order = FIRST
family = LAGRANGE
[../]
[]
[Functions]
[./x2]
type = PiecewiseLinear
x = '0 1 2 3'
y = '0 .5 1 1'
[../]
[./y2]
type = PiecewiseLinear
x = '0 1 2 3'
y = '0 0 .5 1'
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0
[../]
[./fixx2]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0
[../]
[./fixz2]
type = DirichletBC
variable = disp_z
boundary = 2
value = 0
[../]
[./fixDummyHex_x]
type = DirichletBC
variable = disp_x
boundary = 1000
value = 0
[../]
[./fixDummyHex_y]
type = DirichletBC
variable = disp_y
boundary = 1000
value = 0
[../]
[./fixDummyHex_z]
type = DirichletBC
variable = disp_z
boundary = 1000
value = 0
[../]
[]
[DiracKernels]
[./pull]
type = ConstantPointSource
value = -25
point = '0 -2 0'
variable = disp_y
[../]
[]
[AuxKernels]
[./axial_stress]
type = MaterialRealAux
block = '1 2'
property = axial_stress
variable = axial_stress
[../]
[./e_over_l]
type = MaterialRealAux
block = '1 2'
property = e_over_l
variable = e_over_l
[../]
[./area1]
type = ConstantAux
block = 1
variable = area
value = 1.0
execute_on = 'initial timestep_begin'
[../]
[./area2]
type = ConstantAux
block = 2
variable = area
value = 0.25
execute_on = 'initial timestep_begin'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'jacobi 101'
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dt = 1
num_steps = 1
end_time = 1
[]
[Kernels]
[./truss_x]
type = StressDivergenceTensorsTruss
block = '1 2'
variable = disp_x
displacements = 'disp_x disp_y disp_z'
component = 0
area = area
save_in = react_x
[../]
[./truss_y]
type = StressDivergenceTensorsTruss
block = '1 2'
variable = disp_y
component = 1
displacements = 'disp_x disp_y disp_z'
area = area
save_in = react_y
[../]
[./truss_z]
type = StressDivergenceTensorsTruss
block = '1 2'
variable = disp_z
component = 2
displacements = 'disp_x disp_y disp_z'
area = area
save_in = react_z
[../]
[./TensorMechanics]
block = 1000
displacements = 'disp_x disp_y disp_z'
[../]
# [./hex_x]
# type = StressDivergenceTensors
# block = 1000
# variable = disp_x
# component = 0
# displacements = 'disp_x disp_y disp_z'
# [../]
# [./hex_y]
# type = StressDivergenceTensors
# block = 1000
# variable = disp_y
# component = 1
# displacements = 'disp_x disp_y disp_z'
# [../]
# [./hex_z]
# type = StressDivergenceTensors
# block = 1000
# variable = disp_z
# component = 2
# displacements = 'disp_x disp_y disp_z'
# [../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1000
youngs_modulus = 1e6
poissons_ratio = 0
[../]
[./strain]
type = ComputeSmallStrain
block = 1000
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ComputeLinearElasticStress
block = 1000
[../]
[./linelast]
type = LinearElasticTruss
block = '1 2'
displacements = 'disp_x disp_y disp_z'
youngs_modulus = 1e6
[../]
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/2D_different_planes/planestrain_xz.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = square_xz_plane.e
[]
[Variables]
[./disp_x]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./plane_strain]
block = 1
strain = SMALL
out_of_plane_direction = y
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'eigenstrain'
generate_output = 'stress_xx stress_xz stress_yy stress_zz strain_xx strain_xz strain_yy strain_zz'
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(1-x)*t'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 3
variable = disp_z
value = 0.0
[../]
[]
[Materials]
[./elastic_stress]
type = ComputeLinearElasticStress
block = 1
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[]
[Postprocessors]
[./react_y]
type = MaterialTensorIntegral
use_displaced_mesh = false
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[]
[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 = 10
nl_rel_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
file_base = planestrain_xz_small_out
exodus = true
[]
(modules/porous_flow/test/tests/thm_rehbinder/fixed_outer.i)
[Mesh]
[annular]
type = AnnularMeshGenerator
nr = 40
nt = 16
rmin = 0.1
rmax = 1
dmin = 0.0
dmax = 90
growth_r = 1.1
[]
[make3D]
input = annular
type = MeshExtruderGenerator
bottom_sideset = bottom
top_sideset = top
extrusion_vector = '0 0 1'
num_layers = 1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
biot_coefficient = 1.0
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
[]
[temperature]
[]
[]
[BCs]
[plane_strain]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'top bottom'
[]
[ymin]
type = DirichletBC
variable = disp_y
value = 0
boundary = dmin
[]
[xmin]
type = DirichletBC
variable = disp_x
value = 0
boundary = dmax
[]
[cavity_temperature]
type = DirichletBC
variable = temperature
value = 1000
boundary = rmin
[]
[cavity_porepressure]
type = DirichletBC
variable = porepressure
value = 1E6
boundary = rmin
[]
[cavity_zero_effective_stress_x]
type = Pressure
variable = disp_x
function = 1E6
boundary = rmin
use_displaced_mesh = false
[]
[cavity_zero_effective_stress_y]
type = Pressure
variable = disp_y
function = 1E6
boundary = rmin
use_displaced_mesh = false
[]
[outer_temperature]
type = DirichletBC
variable = temperature
value = 0
boundary = rmax
[]
[outer_pressure]
type = DirichletBC
variable = porepressure
value = 0
boundary = rmax
[]
[fixed_outer_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = rmax
[]
[fixed_outer_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = rmax
[]
[]
[AuxVariables]
[stress_rr]
family = MONOMIAL
order = CONSTANT
[]
[stress_pp]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[stress_rr]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_rr
scalar_type = RadialStress
point1 = '0 0 0'
point2 = '0 0 1'
[]
[stress_pp]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = stress_pp
scalar_type = HoopStress
point1 = '0 0 0'
point2 = '0 0 1'
[]
[]
[Modules]
[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 = ComputeSmallStrain
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'
[]
[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'
[]
[]
[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_x
[]
[]
[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
execute_on = timestep_end
csv = 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
value = '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
[]
[]
[Modules]
[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/combined/examples/publications/rapid_dev/fig7a.i)
#
# Fig. 7 input for 10.1016/j.commatsci.2017.02.017
# D. Schwen et al./Computational Materials Science 132 (2017) 36-45
# Solid gray curve (1)
# Eigenstrain and elastic energies ar computed per phase and then interpolated.
# Supply the RADIUS parameter (10-35) on the command line to generate data
# for all curves in the plot.
#
[Mesh]
type = GeneratedMesh
dim = 1
nx = 32
xmin = 0
xmax = 100
second_order = true
[]
[Problem]
coord_type = RSPHERICAL
[]
[GlobalParams]
displacements = 'disp_r'
[]
[Functions]
[./diff]
type = ParsedFunction
value = '${RADIUS}-pos_c'
vars = pos_c
vals = pos_c
[../]
[]
# AuxVars to compute the free energy density for outputting
[AuxVariables]
[./local_energy]
order = CONSTANT
family = MONOMIAL
[../]
[./cross_energy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./local_free_energy]
type = TotalFreeEnergy
variable = local_energy
interfacial_vars = 'c'
kappa_names = 'kappa_c'
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[Variables]
# Solute concentration variable
[./c]
[./InitialCondition]
type = SmoothCircleIC
invalue = 1
outvalue = 0
x1 = 0
y1 = 0
radius = ${RADIUS}
int_width = 3
[../]
[../]
[./w]
[../]
# Phase order parameter
[./eta]
[./InitialCondition]
type = SmoothCircleIC
invalue = 1
outvalue = 0
x1 = 0
y1 = 0
radius = ${RADIUS}
int_width = 3
[../]
[../]
# Mesh displacement
[./disp_r]
order = SECOND
[../]
[./Fe_fit]
order = SECOND
[../]
[]
[Kernels]
# Set up stress divergence kernels
[./TensorMechanics]
[../]
# Split Cahn-Hilliard kernels
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
args = 'eta'
kappa_name = kappa_c
w = w
[../]
[./wres]
type = SplitCHWRes
variable = w
mob_name = M
[../]
[./time]
type = CoupledTimeDerivative
variable = w
v = c
[../]
# Allen-Cahn and Lagrange-multiplier constraint kernels for order parameter 1
[./detadt]
type = TimeDerivative
variable = eta
[../]
[./ACBulk1]
type = AllenCahn
variable = eta
args = 'c'
mob_name = L
f_name = F
[../]
[./ACInterface]
type = ACInterface
variable = eta
mob_name = L
kappa_name = kappa_eta
[../]
[./Fe]
type = MaterialPropertyValue
prop_name = Fe
variable = Fe_fit
[../]
[./autoadjust]
type = MaskedBodyForce
variable = w
function = diff
mask = mask
[../]
[]
[Materials]
# declare a few constants, such as mobilities (L,M) and interface gradient prefactors (kappa*)
[./consts]
type = GenericConstantMaterial
prop_names = 'M L kappa_c kappa_eta'
prop_values = '1.0 1.0 0.5 1'
[../]
# forcing function mask
[./mask]
type = ParsedMaterial
f_name = mask
function = grad/dt
material_property_names = 'grad dt'
[../]
[./grad]
type = VariableGradientMaterial
variable = c
prop = grad
[../]
[./time]
type = TimeStepMaterial
[../]
# global mechanical properties
[./elasticity_tensor_1]
type = ComputeElasticityTensor
C_ijkl = '1 1'
base_name = phase1
fill_method = symmetric_isotropic
[../]
[./elasticity_tensor_2]
type = ComputeElasticityTensor
C_ijkl = '1 1'
base_name = phase2
fill_method = symmetric_isotropic
[../]
[./strain_1]
type = ComputeRSphericalSmallStrain
base_name = phase1
[../]
[./strain_2]
type = ComputeRSphericalSmallStrain
base_name = phase2
eigenstrain_names = eigenstrain
[../]
[./stress_1]
type = ComputeLinearElasticStress
base_name = phase1
[../]
[./stress_2]
type = ComputeLinearElasticStress
base_name = phase2
[../]
# eigenstrain per phase
[./eigenstrain2]
type = ComputeEigenstrain
eigen_base = '0.05 0.05 0.05 0 0 0'
base_name = phase2
eigenstrain_name = eigenstrain
[../]
# switching functions
[./switching]
type = SwitchingFunctionMaterial
function_name = h
eta = eta
h_order = SIMPLE
[../]
[./barrier]
type = BarrierFunctionMaterial
eta = eta
[../]
# chemical free energies
[./chemical_free_energy_1]
type = DerivativeParsedMaterial
f_name = Fc1
function = 'c^2'
args = 'c'
derivative_order = 2
[../]
[./chemical_free_energy_2]
type = DerivativeParsedMaterial
f_name = Fc2
function = '(1-c)^2'
args = 'c'
derivative_order = 2
[../]
# elastic free energies
[./elastic_free_energy_1]
type = ElasticEnergyMaterial
f_name = Fe1
args = ''
base_name = phase1
derivative_order = 2
[../]
[./elastic_free_energy_2]
type = ElasticEnergyMaterial
f_name = Fe2
args = ''
base_name = phase2
derivative_order = 2
[../]
# per phase free energies
[./free_energy_1]
type = DerivativeSumMaterial
f_name = F1
sum_materials = 'Fc1 Fe1'
args = 'c'
derivative_order = 2
[../]
[./free_energy_2]
type = DerivativeSumMaterial
f_name = F2
sum_materials = 'Fc2 Fe2'
args = 'c'
derivative_order = 2
[../]
# global chemical free energy
[./global_free_energy]
type = DerivativeTwoPhaseMaterial
f_name = F
fa_name = F1
fb_name = F2
eta = eta
args = 'c'
W = 4
[../]
# global stress
[./global_stress]
type = TwoPhaseStressMaterial
base_A = phase1
base_B = phase2
[../]
[./elastic_free_energy]
type = DerivativeTwoPhaseMaterial
f_name = Fe
fa_name = Fe1
fb_name = Fe2
eta = eta
args = 'c'
W = 0
[../]
[]
[BCs]
[./left_r]
type = DirichletBC
variable = disp_r
boundary = 'left'
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
# We monitor the total free energy and the total solute concentration (should be constant)
[Postprocessors]
[./total_free_energy]
type = ElementIntegralVariablePostprocessor
variable = local_energy
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./total_solute]
type = ElementIntegralVariablePostprocessor
variable = c
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./pos_c]
type = FindValueOnLine
start_point = '0 0 0'
end_point = '100 0 0'
v = c
target = 0.582
tol = 1e-8
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./pos_eta]
type = FindValueOnLine
start_point = '0 0 0'
end_point = '100 0 0'
v = eta
target = 0.5
tol = 1e-8
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[./c_min]
type = ElementExtremeValue
value_type = min
variable = c
execute_on = 'INITIAL TIMESTEP_END'
outputs = 'table console'
[../]
[]
[VectorPostprocessors]
[./line]
type = LineValueSampler
variable = 'Fe_fit c w'
start_point = '0 0 0'
end_point = '100 0 0'
num_points = 5000
sort_by = x
outputs = vpp
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[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 = 15
l_tol = 1.0e-4
nl_rel_tol = 1.0e-8
nl_abs_tol = 2.0e-9
start_time = 0.0
end_time = 100000.0
[./TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 7
iteration_window = 1
dt = 1
[../]
[./Adaptivity]
initial_adaptivity = 5
interval = 10
max_h_level = 5
refine_fraction = 0.9
coarsen_fraction = 0.1
[../]
[]
[Outputs]
print_linear_residuals = false
perf_graph = true
execute_on = 'INITIAL TIMESTEP_END'
[./table]
type = CSV
delimiter = ' '
file_base = radius_${RADIUS}/energy_pp
[../]
[./vpp]
type = CSV
delimiter = ' '
sync_times = '10 50 100 500 1000 5000 10000 50000 100000'
sync_only = true
time_data = true
file_base = radius_${RADIUS}/energy_vpp
[../]
[]
(modules/tensor_mechanics/test/tests/global_strain/global_strain_hydrostat.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]
[../]
[]
[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
[../]
[]
[GlobalParams]
displacements = 'u_x u_y u_z'
block = 0
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[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 -5e9 -5e9 0 0 0'
execute_on = 'Initial Linear Nonlinear'
[../]
[]
[Postprocessors]
[./l2err]
type = ScalarL2Error
variable = global_strain
function = -0.02428571 #strain = E*(1-2*nu)/sigma
[../]
[]
[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/tensor_mechanics/test/tests/pressure/ring.i)
#
#
#
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[MeshGenerator]
type = GeneratedMeshGenerator
dim = 2
nx = 1 #10
ny = 1
xmin = 1.0
xmax = 1.1
[]
[move_nodes]
type = MoveNodeGenerator
input = MeshGenerator
node_id = '0 2'
new_position = '0.9 0.1 0 1.125 1.025 0'
[]
[rotate]
type = TransformGenerator
input = move_nodes
transform = rotate
vector_value = '-20 0 0'
[]
[]
[Problem]
coord_type = RZ
[]
[Functions]
[pressure]
type = ParsedFunction
value = 100*t
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[Modules]
[TensorMechanics]
[Master]
[all]
incremental = false
[]
[]
[]
[]
[BCs]
[no_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[Pressure]
[pressure]
boundary = 'right'
function = pressure
[]
[]
# [pull_x]
# type = DirichletBC
# variable = disp_x
# boundary = left
# value = 1e-5
# preset = false
# []
[]
[Materials]
[Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 0.5e6'
[]
# [strain]
# type = ComputeSmallStrain
# []
[stress]
type = ComputeLinearElasticStress
[]
[]
[Preconditioning]
[smp]
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'
petsc_options = '-snes_test_jacobian -snes_test_jacobian_view'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 10
end_time = 2.0
[]
[Outputs]
[out]
type = Exodus
[]
[]
(modules/tensor_mechanics/test/tests/global_strain/global_strain_direction.i)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
[]
[cnode]
type = ExtraNodesetGenerator
coord = '0 0'
new_boundary = 100
input = generated_mesh
[]
[]
[Variables]
[./u_x]
[../]
[./u_y]
[../]
[./global_strain]
order = THIRD
family = SCALAR
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[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
[../]
[]
[GlobalParams]
displacements = 'u_x u_y'
block = 0
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[ScalarKernels]
[./global_strain]
type = GlobalStrain
variable = global_strain
global_strain_uo = global_strain_uo
[../]
[]
[BCs]
[./Periodic]
[./left-right]
auto_direction = 'x'
variable = 'u_x u_y'
[../]
[../]
# 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
[../]
[./appl_y]
type = DirichletBC
boundary = top
variable = u_y
value = -0.1
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./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-8
nl_abs_tol = 1.0e-10
start_time = 0.0
num_steps = 2
[]
[Outputs]
exodus = true
[]
(modules/combined/examples/mortar/eigenstrain_action.i)
#
# Eigenstrain with Mortar gradient periodicity
#
[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
[../]
[./anode]
input = cnode
type = ExtraNodesetGenerator
coord = '0.0 0.5'
new_boundary = 101
[../]
[]
[Modules/PhaseField/MortarPeriodicity]
[./strain]
variable = 'disp_x disp_y'
periodicity = gradient
periodic_directions = 'x y'
[../]
[]
[GlobalParams]
derivative_order = 2
enable_jit = true
displacements = 'disp_x disp_y'
[]
# AuxVars to compute the free energy density for outputting
[AuxVariables]
[./local_energy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./local_free_energy]
type = TotalFreeEnergy
block = 0
execute_on = 'initial LINEAR'
variable = local_energy
interfacial_vars = 'c'
kappa_names = 'kappa_c'
[../]
[]
[Variables]
# Solute concentration variable
[./c]
[./InitialCondition]
type = RandomIC
min = 0.49
max = 0.51
[../]
block = 0
[../]
[./w]
block = 0
[../]
# Mesh displacement
[./disp_x]
block = 0
[../]
[./disp_y]
block = 0
[../]
[]
[Kernels]
# Set up stress divergence kernels
[./TensorMechanics]
[../]
# Cahn-Hilliard kernels
[./c_dot]
type = CoupledTimeDerivative
variable = w
v = c
[../]
[./c_res]
type = SplitCHParsed
variable = c
f_name = F
kappa_name = kappa_c
w = w
[../]
[./w_res]
type = SplitCHWRes
variable = w
mob_name = M
[../]
[]
[Materials]
# declare a few constants, such as mobilities (L,M) and interface gradient prefactors (kappa*)
[./consts]
type = GenericConstantMaterial
block = '0'
prop_names = 'M kappa_c'
prop_values = '0.2 0.01 '
[../]
[./shear1]
type = GenericConstantRankTwoTensor
block = 0
tensor_values = '0 0 0 0 0 0.5'
tensor_name = shear1
[../]
[./shear2]
type = GenericConstantRankTwoTensor
block = 0
tensor_values = '0 0 0 0 0 -0.5'
tensor_name = shear2
[../]
[./expand3]
type = GenericConstantRankTwoTensor
block = 0
tensor_values = '1 1 0 0 0 0'
tensor_name = expand3
[../]
[./weight1]
type = DerivativeParsedMaterial
block = 0
function = '0.3*c^2'
f_name = weight1
args = c
[../]
[./weight2]
type = DerivativeParsedMaterial
block = 0
function = '0.3*(1-c)^2'
f_name = weight2
args = c
[../]
[./weight3]
type = DerivativeParsedMaterial
block = 0
function = '4*(0.5-c)^2'
f_name = weight3
args = c
[../]
# matrix phase
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '1 1'
fill_method = symmetric_isotropic
[../]
[./strain]
type = ComputeSmallStrain
block = 0
displacements = 'disp_x disp_y'
[../]
[./eigenstrain]
type = CompositeEigenstrain
block = 0
tensors = 'shear1 shear2 expand3'
weights = 'weight1 weight2 weight3'
args = c
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
[../]
# chemical free energies
[./chemical_free_energy]
type = DerivativeParsedMaterial
block = 0
f_name = Fc
function = '4*c^2*(1-c)^2'
args = 'c'
outputs = exodus
output_properties = Fc
[../]
# elastic free energies
[./elastic_free_energy]
type = ElasticEnergyMaterial
f_name = Fe
block = 0
args = 'c'
outputs = exodus
output_properties = Fe
[../]
# free energy (chemical + elastic)
[./free_energy]
type = DerivativeSumMaterial
block = 0
f_name = F
sum_materials = 'Fc Fe'
args = 'c'
[../]
[]
[BCs]
[./Periodic]
[./up_down]
primary = top
secondary = bottom
translation = '0 -1 0'
variable = 'c w'
[../]
[./left_right]
primary = left
secondary = right
translation = '1 0 0'
variable = 'c w'
[../]
[../]
# fix center point location
[./centerfix_x]
type = DirichletBC
boundary = 100
variable = disp_x
value = 0
[../]
[./centerfix_y]
type = DirichletBC
boundary = 100
variable = disp_y
value = 0
[../]
# fix side point x coordinate to inhibit rotation
[./angularfix]
type = DirichletBC
boundary = 101
variable = disp_x
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
# We monitor the total free energy and the total solute concentration (should be constant)
[Postprocessors]
[./total_free_energy]
type = ElementIntegralVariablePostprocessor
block = 0
execute_on = 'initial TIMESTEP_END'
variable = local_energy
[../]
[./total_solute]
type = ElementIntegralVariablePostprocessor
block = 0
execute_on = 'initial TIMESTEP_END'
variable = c
[../]
[./min]
type = ElementExtremeValue
block = 0
execute_on = 'initial TIMESTEP_END'
value_type = min
variable = c
[../]
[./max]
type = ElementExtremeValue
block = 0
execute_on = 'initial TIMESTEP_END'
value_type = max
variable = c
[../]
[]
[Executioner]
type = Transient
scheme = bdf2
solve_type = 'PJFNK'
line_search = basic
# mortar currently does not support MPI parallelization
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = ' lu NONZERO 1e-10'
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 = 200
[./TimeStepper]
type = SolutionTimeAdaptiveDT
dt = 0.01
[../]
[]
[Outputs]
execute_on = 'timestep_end'
print_linear_residuals = false
exodus = true
[./table]
type = CSV
delimiter = ' '
[../]
[]
(modules/tensor_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]
interval = 1
exodus = true
print_linear_residuals = false
[]
(modules/xfem/test/tests/pressure_bc/inclined_edge_2d_pressure.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = False
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 9
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.0 0.33 0.5 0.67'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
generate_output = 'stress_xx stress_yy'
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0 1.0 2.0'
y = '0 500 1000'
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.0
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[]
[DiracKernels]
[./pressure_x]
type = XFEMPressure
variable = disp_x
component = 0
function = pressure
[../]
[./pressure_y]
type = XFEMPressure
variable = disp_y
component = 1
function = pressure
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1
end_time = 2
[]
[Outputs]
file_base = inclined_edge_2d_pressure_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/combined/test/tests/linear_elasticity/linear_elastic_material.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
nz = 0
xmin = 0
xmax = 50
ymin = 0
ymax = 50
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./diffused]
[./InitialCondition]
type = RandomIC
[../]
[../]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[]
[Kernels]
[./diff]
type = Diffusion
variable = diffused
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric9
#reading C_11 C_12 C_13 C_22 C_23 C_33 C_44 C_55 C_66
C_ijkl ='1.0e6 0.0 0.0 1.0e6 0.0 1.0e6 0.5e6 0.5e6 0.5e6'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = diffused
boundary = '1'
value = 1
[../]
[./top]
type = DirichletBC
variable = diffused
boundary = '2'
value = 0
[../]
[./disp_x_BC]
type = DirichletBC
variable = disp_x
boundary = '0 2'
value = 0.5
[../]
[./disp_x_BC2]
type = DirichletBC
variable = disp_x
boundary = '1 3'
value = 0.01
[../]
[./disp_y_BC]
type = DirichletBC
variable = disp_y
boundary = '0 2'
value = 0.8
[../]
[./disp_y_BC2]
type = DirichletBC
variable = disp_y
boundary = '1 3'
value = 0.02
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
[]
(modules/tensor_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]
[./DynamicTensorMechanics] # 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
csv = true
perf_graph = true
[]
(modules/tensor_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]
[DynamicTensorMechanics]
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/porous_flow/test/tests/poro_elasticity/pp_generation_unconfined_constM_action.i)
# This file uses a PorousFlowFullySaturated Action. The equivalent non-Action input file is 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
[]
[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'
[]
[]
[PorousFlowFullySaturated]
porepressure = porepressure
biot_coefficient = 0.3
coupling_type = HydroMechanical
displacements = 'disp_x disp_y disp_z'
gravity = '0 0 0'
fp = simple_fluid
stabilization = Full
[]
[Kernels]
[source]
type = BodyForce
function = '0.1*exp(8.163265306*0.1*t/3.3333333333)'
variable = porepressure
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 3.3333333333
density0 = 1
thermal_expansion = 0
viscosity = 1
[]
[]
[]
[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
[]
[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
[]
[]
[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
value = a/b
vars = 'a b'
vals = 'stress_xx zdisp'
[]
[stress_zz_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = 'stress_zz zdisp'
[]
[p_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = '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_action
[csv]
type = CSV
[]
[]
(modules/tensor_mechanics/tutorials/basics/part_1.1.i)
#Tensor Mechanics tutorial: the basics
#Step 1, part 1
#2D simulation of uniaxial tension with linear elasticity
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
file = necking_quad4.e
[]
[Modules/TensorMechanics/Master]
[./block1]
strain = SMALL #Small linearized strain, automatically set to XY coordinates
add_variables = true #Add the variables from the displacement string in GlobalParams
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = top
value = 0.05
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'asm lu 1 101'
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/tensor_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]
[DynamicTensorMechanics]
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/tensor_mechanics/test/tests/thermal_expansion_function/instantaneous.i)
# This test checks the thermal expansion calculated via a instantaneous thermal expansion coefficient.
# The coefficient is selected so as to result in a 1e-4 strain in the x-axis, and to cross over
# from positive to negative strain.
[Mesh]
[./gen]
type = GeneratedMeshGenerator
dim = 3
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
[../]
[]
[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
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
function = '1 + t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
thermal_expansion_function = 4e-4
stress_free_temperature = 1.5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Postprocessors]
[./disp_x_max]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./temp_avg]
type = ElementAverageValue
variable = temp
[../]
[]
[Executioner]
type = Transient
end_time = 1.0
dt = 0.1
[]
[Outputs]
csv = true
[]
(modules/tensor_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]
[DynamicTensorMechanics]
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/contact/test/tests/mortar_tm/2d/frictionless_second/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank block'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ComputeLinearElasticStress
block = 'plank block'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5.0
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
exodus = true
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/tensor_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]
[./TensorMechanics]
[../]
[]
[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/tensor_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
[../]
[]
[Modules/TensorMechanics/Master]
[./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/porous_flow/test/tests/energy_conservation/heat04_fullysat_action.i)
# heat04, but using an action
#
# 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
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.5
cv = 2
cp = 2
bulk_modulus = 2.0
density0 = 3.0
[]
[]
[]
[PorousFlowFullySaturated]
coupling_type = ThermoHydroMechanical
displacements = 'disp_x disp_y disp_z'
porepressure = pp
temperature = temp
dictator_name = Sir
biot_coefficient = 1.0
gravity = '0 0 0'
fp = the_simple_fluid
stabilization = none
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = Sir
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]
[heat_source]
type = BodyForce
function = 1
variable = temp
[]
[]
[Functions]
[err_T_fcn]
type = ParsedFunction
vars = 'por0 rte temp rd rhc m0 fhc source'
vals = '0.5 0.25 t0 5 0.2 1.5 2 1'
value = '((1-por0)*exp(rte*temp)*rd*rhc*temp+m0*fhc*temp-source*t)/(source*t)'
[]
[err_pp_fcn]
type = ParsedFunction
vars = 'por0 rte temp rd rhc m0 fhc source bulk pp fte'
vals = '0.5 0.25 t0 5 0.2 1.5 2 1 2 p0 0.5'
value = '(bulk*(fte*temp-log(1+(por0-1)*exp(rte*temp))+log(por0))-pp)/pp'
[]
[]
[AuxVariables]
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[porosity]
type = PorousFlowPropertyAux
property = porosity
variable = porosity
[]
[]
[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
[]
[stress]
type = ComputeLinearElasticStress
[]
[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
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0 0 0 0 0 0 0 0 0'
[]
[thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '0 0 0 0 0 0 0 0 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_fullysat_action
csv = true
[]
(modules/tensor_mechanics/test/tests/auxkernels/tensorelasticenergyaux.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
nz = 0
xmax = 3
ymax = 2
zmax = 0
elem_type = QUAD4
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./dummy]
[../]
[]
[AuxVariables]
[./disp_x]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = sin(x)*0.1
[../]
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[./InitialCondition]
type = FunctionIC
function = cos(y)*0.05
[../]
[../]
[./E]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./elastic_energy]
type = ElasticEnergyAux
variable = E
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '1 2 4 3 2 5 1 3 1'
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
num_steps = 1
[]
[Problem]
kernel_coverage_check = false
[]
[Outputs]
exodus = true
[]
(modules/peridynamics/test/tests/jacobian_check/3D_mechanics_smallstrain_H2NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 2
[./gmg]
type = GeneratedMeshGenerator
dim = 3
nx = 3
ny = 3
nz = 3
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_II
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeSmallStrainNOSPD
stabilization = BOND_HORIZON_II
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(modules/tensor_mechanics/test/tests/torque/torque_small.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
origin = '0 0 2'
direction = '0 0 1'
polar_moment_of_inertia = pmi
factor = t
[]
[Mesh]
[ring]
type = AnnularMeshGenerator
nr = 1
nt = 30
rmin = 0.95
rmax = 1
[]
[extrude]
type = MeshExtruderGenerator
input = ring
extrusion_vector = '0 0 2'
bottom_sideset = 'bottom'
top_sideset = 'top'
num_layers = 5
[]
[]
[AuxVariables]
[alpha_var]
[]
[shear_stress_var]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[alpha]
type = RotationAngle
variable = alpha_var
[]
[shear_stress]
type = ParsedAux
variable = shear_stress_var
args = 'stress_yz stress_xz'
function = 'sqrt(stress_yz^2 + stress_xz^2)'
[]
[]
[BCs]
# fix bottom
[fix_x]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0
[]
[fix_y]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
[]
[fix_z]
type = DirichletBC
boundary = bottom
variable = disp_z
value = 0
[]
# twist top
[twist_x]
type = Torque
boundary = top
variable = disp_x
[]
[twist_y]
type = Torque
boundary = top
variable = disp_y
[]
[twist_z]
type = Torque
boundary = top
variable = disp_z
[]
[]
[Modules/TensorMechanics/Master]
[all]
add_variables = true
strain = SMALL
generate_output = 'vonmises_stress stress_yz stress_xz'
[]
[]
[Postprocessors]
[pmi]
type = PolarMomentOfInertia
boundary = top
# execute_on = 'INITIAL NONLINEAR'
execute_on = 'INITIAL'
[]
[alpha]
type = SideAverageValue
variable = alpha_var
boundary = top
[]
[shear_stress]
type = ElementAverageValue
variable = shear_stress_var
[]
[]
[Materials]
[stress]
type = ComputeLinearElasticStress
[]
[elastic]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 0.3
shear_modulus = 100
[]
[]
[Executioner]
# type = Steady
type = Transient
num_steps = 1
solve_type = PJFNK
petsc_options_iname = '-pctype'
petsc_options_value = 'lu'
nl_max_its = 150
[]
[Outputs]
exodus = true
print_linear_residuals = false
perf_graph = true
[]
(modules/tensor_mechanics/test/tests/stickyBC/push_down.i)
# Testing StickyBC
#
# Push the top of an element downward until the bottom hits an (invisible) obstruction.
# 10 timesteps are used. In each timestep disp_y is decreased by 0.1. The
# StickyBC has a min_value of -0.49, so at timestep 5 this bound will be violated
# and the bottom boundary will be fixed forever after.
#
# This test also illustrates that StickyBC is only ever meant to be used in
# special situations:
# - if, after the simulation ends, the top is moved upward again, the StickyBC
# will keep the bottom fixed. Ie, the StickyBC is truly "sticky".
# - setting min_value = -0.5 in this test illustrates the "approximate" nature
# of StickyBC, in that some nodes will be fixed at disp_y=-0.5, while others
# will be fixed at disp_y=-0.6, due to the timestepping and roundoff errors
# in MOOSE's solution.
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
[../]
[]
[BCs]
[./obstruction]
type = StickyBC
variable = disp_y
boundary = bottom
min_value = -0.49
[../]
[./top]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = -t
[../]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./front]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[../]
[]
[Materials]
[./stress]
type = ComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.2
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 0.1
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/xfem/test/tests/solid_mechanics_basic/square_branch_tri_2d.i)
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = TRI3
[]
[UserObjects]
[./line_seg_cut_uo0]
type = LineSegmentCutUserObject
cut_data = '-1.0000e-10 6.6340e-01 6.6340e-01 -1.0000e-10'
time_start_cut = 0.0
time_end_cut = 1.0
[../]
[./line_seg_cut_uo1]
type = LineSegmentCutUserObject
cut_data = '3.3120e-01 3.3200e-01 1.0001e+00 3.3200e-01'
time_start_cut = 1.0
time_end_cut = 2.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
planar_formulation = PLANE_STRAIN
add_variables = true
[../]
[]
[Functions]
[./right_disp_x]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[./top_disp_y]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[]
[BCs]
[./right_x]
type = FunctionDirichletBC
boundary = 1
variable = disp_x
function = right_disp_x
[../]
[./top_y]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = top_disp_y
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 2.2
num_steps = 5000
[]
[Outputs]
file_base = square_branch_tri_2d_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/porous_flow/test/tests/energy_conservation/heat04_action.i)
# heat04, but using an action
#
# 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
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.5
cv = 2
cp = 2
bulk_modulus = 2.0
density0 = 3.0
[]
[]
[]
[PorousFlowUnsaturated]
coupling_type = ThermoHydroMechanical
displacements = 'disp_x disp_y disp_z'
porepressure = pp
temperature = temp
dictator_name = Sir
biot_coefficient = 1.0
gravity = '0 0 0'
fp = the_simple_fluid
van_genuchten_alpha = 1.0E-12
van_genuchten_m = 0.5
relative_permeability_type = Corey
relative_permeability_exponent = 0.0
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = Sir
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]
[heat_source]
type = BodyForce
function = 1
variable = temp
[]
[]
[Functions]
[err_T_fcn]
type = ParsedFunction
vars = 'por0 rte temp rd rhc m0 fhc source'
vals = '0.5 0.25 t0 5 0.2 1.5 2 1'
value = '((1-por0)*exp(rte*temp)*rd*rhc*temp+m0*fhc*temp-source*t)/(source*t)'
[]
[err_pp_fcn]
type = ParsedFunction
vars = 'por0 rte temp rd rhc m0 fhc source bulk pp fte'
vals = '0.5 0.25 t0 5 0.2 1.5 2 1 2 p0 0.5'
value = '(bulk*(fte*temp-log(1+(por0-1)*exp(rte*temp))+log(por0))-pp)/pp'
[]
[]
[AuxVariables]
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[porosity]
type = PorousFlowPropertyAux
property = porosity
variable = porosity
[]
[]
[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
[]
[stress]
type = ComputeLinearElasticStress
[]
[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
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0 0 0 0 0 0 0 0 0'
[]
[thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '0 0 0 0 0 0 0 0 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_action
csv = true
[]
(modules/porous_flow/test/tests/heterogeneous_materials/vol_expansion_poroperm.i)
# Apply an increasing porepressure, with zero mechanical forces,
# and observe the corresponding volumetric expansion and porosity increase.
# Check that permeability is calculated correctly from porosity.
#
# P = t
# With the Biot coefficient being 1, the effective stresses should be
# stress_xx = stress_yy = stress_zz = t
# With bulk modulus = 1 then should have
# vol_strain = strain_xx + strain_yy + strain_zz = t.
#
# With the biot coefficient being 1, the porosity (phi) # at time t is:
# phi = 1 - (1 - phi0) / exp(vol_strain)
# where phi0 is the porosity at t = 0 and P = 0.
#
# The permeability (k) is
# k = k_anisotropic * f * d^2 * phi^n / (1-phi)^m
[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 = 1
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 1
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 1
variable = disp_z
component = 2
[]
[]
[AuxVariables]
[poro0]
order = CONSTANT
family = MONOMIAL
[]
[poro]
order = CONSTANT
family = MONOMIAL
[]
[perm_x]
order = CONSTANT
family = MONOMIAL
[]
[perm_y]
order = CONSTANT
family = MONOMIAL
[]
[perm_z]
order = CONSTANT
family = MONOMIAL
[]
[]
[ICs]
[poro0]
type = RandomIC
seed = 0
variable = poro0
max = 0.15
min = 0.05
[]
[]
[AuxKernels]
[poromat]
type = PorousFlowPropertyAux
property = porosity
variable = poro
[]
[perm_x]
type = PorousFlowPropertyAux
property = permeability
variable = perm_x
row = 0
column = 0
[]
[perm_y]
type = PorousFlowPropertyAux
property = permeability
variable = perm_y
row = 1
column = 1
[]
[perm_z]
type = PorousFlowPropertyAux
property = permeability
variable = perm_z
row = 2
column = 2
[]
[]
[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 = ComputeIsotropicElasticityTensor
bulk_modulus = 1
shear_modulus = 1
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = p
capillary_pressure = pc
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
porosity_zero = poro0
solid_bulk = 1
biot_coefficient = 1
[]
[permeability]
type = PorousFlowPermeabilityKozenyCarman
k_anisotropy = '1 0 0 0 2 0 0 0 0.1'
poroperm_function = kozeny_carman_fd2
f = 0.1
d = 5
m = 2
n = 7
[]
[]
[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]
exodus = true
execute_on = 'timestep_end'
[]
(modules/tensor_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
[]
[]
[Modules/TensorMechanics/DynamicMaster]
[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/tensor_mechanics/test/tests/check_error/poissons_ratio.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./2_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./2_y]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./2_z]
type = DirichletBC
variable = disp_z
boundary = 2
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.6
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
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
[]
[Outputs]
file_base = out
exodus = true
[]
(modules/fsi/test/tests/fsi_2d/fsi_flat_channel.i)
[GlobalParams]
gravity = '0 0 0'
integrate_p_by_parts = true
laplace = true
convective_term = true
transient_term = true
pspg = true
displacements = 'disp_x disp_y'
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 3.0
ymin = 0
ymax = 1.0
nx = 10
ny = 15
elem_type = QUAD4
[]
[subdomain1]
type = SubdomainBoundingBoxGenerator
bottom_left = '0.0 0.5 0'
block_id = 1
top_right = '3.0 1.0 0'
input = gmg
[]
[interface]
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'master0_interface'
input = subdomain1
[]
[break_boundary]
type = BreakBoundaryOnSubdomainGenerator
input = interface
[]
[]
[Variables]
[./vel_x]
block = 0
[../]
[./vel_y]
block = 0
[../]
[./p]
block = 0
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[./vel_x_solid]
block = 1
[../]
[./vel_y_solid]
block = 1
[../]
[]
[Kernels]
[./vel_x_time]
type = INSMomentumTimeDerivative
variable = vel_x
block = 0
use_displaced_mesh = true
[../]
[./vel_y_time]
type = INSMomentumTimeDerivative
variable = vel_y
block = 0
use_displaced_mesh = true
[../]
[./mass]
type = INSMass
variable = p
u = vel_x
v = vel_y
pressure = p
block = 0
use_displaced_mesh = true
[../]
[./x_momentum_space]
type = INSMomentumLaplaceForm
variable = vel_x
u = vel_x
v = vel_y
pressure = p
component = 0
block = 0
use_displaced_mesh = true
[../]
[./y_momentum_space]
type = INSMomentumLaplaceForm
variable = vel_y
u = vel_x
v = vel_y
pressure = p
component = 1
block = 0
use_displaced_mesh = true
[../]
[./vel_x_mesh]
type = ConvectedMesh
disp_x = disp_x
disp_y = disp_y
variable = vel_x
block = 0
use_displaced_mesh = true
[../]
[./vel_y_mesh]
type = ConvectedMesh
disp_x = disp_x
disp_y = disp_y
variable = vel_y
block = 0
use_displaced_mesh = true
[../]
[./disp_x_fluid]
type = Diffusion
variable = disp_x
block = 0
[../]
[./disp_y_fluid]
type = Diffusion
variable = disp_y
block = 0
[../]
[./accel_tensor_x]
type = CoupledTimeDerivative
variable = disp_x
v = vel_x_solid
block = 1
[../]
[./accel_tensor_y]
type = CoupledTimeDerivative
variable = disp_y
v = vel_y_solid
block = 1
[../]
[./vxs_time_derivative_term]
type = CoupledTimeDerivative
variable = vel_x_solid
v = disp_x
block = 1
[../]
[./vys_time_derivative_term]
type = CoupledTimeDerivative
variable = vel_y_solid
v = disp_y
block = 1
[../]
[./source_vxs]
type = MatReaction
variable = vel_x_solid
block = 1
mob_name = 1
[../]
[./source_vys]
type = MatReaction
variable = vel_y_solid
block = 1
mob_name = 1
[../]
[]
[InterfaceKernels]
[./penalty_interface_x]
type = CoupledPenaltyInterfaceDiffusion
variable = vel_x
neighbor_var = disp_x
secondary_coupled_var = vel_x_solid
boundary = master0_interface
penalty = 1e6
[../]
[./penalty_interface_y]
type = CoupledPenaltyInterfaceDiffusion
variable = vel_y
neighbor_var = disp_y
secondary_coupled_var = vel_y_solid
boundary = master0_interface
penalty = 1e6
[../]
[]
[Modules/TensorMechanics/Master]
[./solid_domain]
strain = SMALL
incremental = false
# generate_output = 'strain_xx strain_yy strain_zz' ## Not at all necessary, but nice
block = '1'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e2
poissons_ratio = 0.3
block = '1'
[../]
[./small_stress]
type = ComputeLinearElasticStress
block = 1
[../]
[./const]
type = GenericConstantMaterial
block = 0
prop_names = 'rho mu'
prop_values = '1 1'
[../]
[]
[BCs]
[./fluid_x_no_slip]
type = DirichletBC
variable = vel_x
boundary = 'bottom'
value = 0.0
[../]
[./fluid_y_no_slip]
type = DirichletBC
variable = vel_y
boundary = 'bottom left_to_0'
value = 0.0
[../]
[./x_inlet]
type = FunctionDirichletBC
variable = vel_x
boundary = 'left_to_0'
function = 'inlet_func'
[../]
[./no_disp_x]
type = DirichletBC
variable = disp_x
boundary = 'bottom top left_to_1 right_to_1 left_to_0 right_to_0'
value = 0
[../]
[./no_disp_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top left_to_1 right_to_1 left_to_0 right_to_0'
value = 0
[../]
[./solid_x_no_slip]
type = DirichletBC
variable = vel_x_solid
boundary = 'top left_to_1 right_to_1'
value = 0.0
[../]
[./solid_y_no_slip]
type = DirichletBC
variable = vel_y_solid
boundary = 'top left_to_1 right_to_1'
value = 0.0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
num_steps = 5
# num_steps = 60
dt = 0.1
dtmin = 0.1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = none
[]
[Outputs]
[./out]
type = Exodus
[../]
[]
[Functions]
[./inlet_func]
type = ParsedFunction
value = '(-16 * (y - 0.25)^2 + 1) * (1 + cos(t))'
[../]
[]
(modules/combined/test/tests/linear_elasticity/extra_stress.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 128
ny = 1
xmax = 3.2
ymax = 0.025
elem_type = QUAD4
[]
[Modules/TensorMechanics/Master/All]
add_variables = true
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy'
[]
[AuxVariables]
[./c]
[../]
[]
[ICs]
[./c_IC]
type = BoundingBoxIC
variable = c
x1 = -1
y1 = -1
x2 = 1.6
y2 = 1
inside = 0
outside = 1
block = 0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
C_ijkl = '104 74 74 104 74 104 47.65 47.65 47.65'
fill_method = symmetric9
base_name = matrix
[../]
[./stress]
type = ComputeLinearElasticStress
block = 0
base_name = matrix
[../]
[./strain]
type = ComputeSmallStrain
block = 0
base_name = matrix
[../]
[./elasticity_tensor_ppt]
type = ComputeElasticityTensor
block = 0
C_ijkl = '0.104 0.074 0.074 0.104 0.074 0.104 0.04765 0.04765 0.04765'
fill_method = symmetric9
base_name = ppt
[../]
[./stress_ppt]
type = ComputeLinearElasticStress
block = 0
base_name = ppt
[../]
[./strain_ppt]
type = ComputeSmallStrain
block = 0
base_name = ppt
[../]
[./const_stress]
type = ComputeExtraStressConstant
block = 0
base_name = ppt
extra_stress_tensor = '-0.288 -0.373 -0.2747 0 0 0'
[../]
[./global_stress]
type = TwoPhaseStressMaterial
base_A = matrix
base_B = ppt
[../]
[./switching]
type = SwitchingFunctionMaterial
eta = c
[../]
[]
[BCs]
active = 'left_x right_x bottom_y top_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
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
exodus = true
[]
(modules/porous_flow/test/tests/actions/basicthm_thm.i)
# PorousFlowBasicTHM action with coupling_type = ThermoHydroMechanical
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 3
xmax = 10
ymax = 3
[]
[aquifer]
input = gen
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 1 0'
top_right = '10 2 0'
[]
[injection_area]
type = SideSetsAroundSubdomainGenerator
block = 1
new_boundary = 'injection_area'
normal = '-1 0 0'
input = 'aquifer'
[]
[outflow_area]
type = SideSetsAroundSubdomainGenerator
block = 1
new_boundary = 'outflow_area'
normal = '1 0 0'
input = 'injection_area'
[]
[rename]
type = RenameBlockGenerator
old_block = '0 1'
new_block = 'caprock aquifer'
input = 'outflow_area'
[]
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y'
biot_coefficient = 1.0
[]
[Variables]
[porepressure]
initial_condition = 1e6
[]
[temperature]
initial_condition = 293
scaling = 1e-6
[]
[disp_x]
scaling = 1e-6
[]
[disp_y]
scaling = 1e-6
[]
[]
[PorousFlowBasicTHM]
porepressure = porepressure
temperature = temperature
coupling_type = ThermoHydroMechanical
gravity = '0 0 0'
fp = simple_fluid
eigenstrain_names = thermal_contribution
use_displaced_mesh = false
add_stress_aux = false
[]
[BCs]
[constant_injection_porepressure]
type = DirichletBC
variable = porepressure
value = 1.5e6
boundary = injection_area
[]
[constant_injection_temperature]
type = DirichletBC
variable = temperature
value = 313
boundary = injection_area
[]
[constant_outflow_porepressure]
type = PorousFlowPiecewiseLinearSink
variable = porepressure
boundary = outflow_area
pt_vals = '0 1e9'
multipliers = '0 1e9'
flux_function = 1e-6
PT_shift = 1e6
[]
[constant_outflow_temperature]
type = DirichletBC
variable = temperature
value = 293
boundary = outflow_area
[]
[top_bottom]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'top bottom'
[]
[right]
type = DirichletBC
variable = disp_x
value = 0
boundary = right
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
[]
[]
[]
[Materials]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
biot_coefficient = 0.8
solid_bulk_compliance = 2e-7
fluid_bulk_modulus = 1e7
[]
[permeability_aquifer]
type = PorousFlowPermeabilityConst
block = aquifer
permeability = '1e-13 0 0 0 1e-13 0 0 0 1e-13'
[]
[permeability_caprock]
type = PorousFlowPermeabilityConst
block = caprock
permeability = '1e-15 0 0 0 1e-15 0 0 0 1e-15'
[]
[thermal_expansion]
type = PorousFlowConstantThermalExpansionCoefficient
drained_coefficient = 0.003
fluid_coefficient = 0.0002
[]
[rock_internal_energy]
type = PorousFlowMatrixInternalEnergy
density = 2500.0
specific_heat_capacity = 1200.0
[]
[thermal_conductivity]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '10 0 0 0 10 0 0 0 10'
block = 'caprock aquifer'
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 5e9
poissons_ratio = 0.0
[]
[strain]
type = ComputeSmallStrain
eigenstrain_names = thermal_contribution
[]
[thermal_contribution]
type = ComputeThermalExpansionEigenstrain
temperature = temperature
thermal_expansion_coeff = 0.001
eigenstrain_name = thermal_contribution
stress_free_temperature = 293
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Preconditioning]
[basic]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
end_time = 1e4
dt = 1e3
nl_abs_tol = 1e-12
nl_rel_tol = 1E-10
[]
[Outputs]
exodus = true
[]
(modules/xfem/test/tests/corner_nodes_cut/corner_node_cut_twice.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '-0.0 0.3 1.0 0.7'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[BCs]
[./top_x]
type = DirichletBC
boundary = 2
variable = disp_x
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.1
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = -0.1
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-9
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = 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
[]
[]
[Modules]
[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/tensor_mechanics/examples/bridge/bridge.i)
#
# Bridge linear elasticity example
#
# This example models a bridge using linear elasticity.
# It can be either steel or concrete.
# Gravity is applied
# A pressure of 0.5 MPa is also applied
#
[Mesh]
displacements = 'disp_x disp_y disp_z' #Define displacements for deformed mesh
type = FileMesh #Read in mesh from file
file = bridge.e
boundary_id = '1 2 3 4 5 6' #Assign names to boundaries to make things clearer
boundary_name = 'top left right bottom1 bottom2 bottom3'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./gravity_y]
#Gravity is applied to bridge
type = Gravity
variable = disp_y
value = -9.81
[../]
[./TensorMechanics]
#Stress divergence kernels
displacements = 'disp_x disp_y disp_z'
[../]
[]
[AuxVariables]
[./von_mises]
#Dependent variable used to visualize the Von Mises stress
order = CONSTANT
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
execute_on = timestep_end
scalar_type = VonMisesStress
[../]
[]
[BCs]
[./Pressure]
[./load]
#Applies the pressure
boundary = top
factor = 5e5 # Pa
[../]
[../]
[./anchor_x]
#Anchors the bottom and sides against deformation in the x-direction
type = DirichletBC
variable = disp_x
boundary = 'left right bottom1 bottom2 bottom3'
value = 0.0
[../]
[./anchor_y]
#Anchors the bottom and sides against deformation in the y-direction
type = DirichletBC
variable = disp_y
boundary = 'left right bottom1 bottom2 bottom3'
value = 0.0
[../]
[./anchor_z]
#Anchors the bottom and sides against deformation in the z-direction
type = DirichletBC
variable = disp_z
boundary = 'left right bottom1 bottom2 bottom3'
value = 0.0
[../]
[]
[Materials]
active = 'density_concrete stress strain elasticity_tensor_concrete'
[./elasticity_tensor_steel]
#Creates the elasticity tensor using steel parameters
youngs_modulus = 210e9 #Pa
poissons_ratio = 0.3
type = ComputeIsotropicElasticityTensor
block = 1
[../]
[./elasticity_tensor_concrete]
#Creates the elasticity tensor using concrete parameters
youngs_modulus = 16.5e9 #Pa
poissons_ratio = 0.2
type = ComputeIsotropicElasticityTensor
block = 1
[../]
[./strain]
#Computes the strain, assuming small strains
type = ComputeSmallStrain
block = 1
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
#Computes the stress, using linear elasticity
type = ComputeLinearElasticStress
block = 1
[../]
[./density_steel]
#Defines the density of steel
type = GenericConstantMaterial
block = 1
prop_names = density
prop_values = 7850 # kg/m^3
[../]
[./density_concrete]
#Defines the density of concrete
type = GenericConstantMaterial
block = 1
prop_names = density
prop_values = 2400 # kg/m^3
[../]
[]
[Preconditioning]
[./SMP]
#Creates the entire Jacobian, for the Newton solve
type = SMP
full = true
[../]
[]
[Executioner]
#We solve a steady state problem using Newton's iteration
type = Steady
solve_type = NEWTON
nl_rel_tol = 1e-9
l_max_its = 30
l_tol = 1e-4
nl_max_its = 10
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 31'
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/tensor_mechanics/test/tests/thermal_expansion_function/mean.i)
# This test checks the thermal expansion calculated via a mean thermal expansion coefficient.
# The coefficient is selected so as to result in a 1e-4 strain in the x-axis, and to cross over
# from positive to negative strain.
[Mesh]
[./gen]
type = GeneratedMeshGenerator
dim = 3
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
[../]
[]
[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
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
function = '1 + t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeMeanThermalExpansionFunctionEigenstrain
thermal_expansion_function = cte_func_mean
thermal_expansion_function_reference_temperature = 1.2
stress_free_temperature = 1.5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Functions]
[./cte_func_mean]
type = ParsedFunction
vars = 'T T_stress_free T_ref end_strain'
vals = '2 1.5 1.2 1e-4'
value = 'end_strain / (T - T_stress_free - end_strain * (T_stress_free - T_ref))'
[../]
[]
[Postprocessors]
[./disp_x_max]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./temp_avg]
type = ElementAverageValue
variable = temp
[../]
[]
[Executioner]
type = Transient
end_time = 1.0
dt = 0.1
[]
[Outputs]
csv = true
[]
(modules/tensor_mechanics/test/tests/stickyBC/push_up.i)
# Testing StickyBC
#
# Push the bottom of an element upward until the top hits an (invisible) obstruction.
# 10 timesteps are used. In each timestep disp_y is increased by 0.1. The
# StickyBC has a max_value of 0.49, so at timestep 5 this bound will be violated
# and the top boundary will be fixed forever after.
#
# This test also illustrates that StickyBC is only ever meant to be used in
# special situations:
# - if, after the simulation ends, the bottom is moved downward again, the StickyBC
# will keep the top fixed. Ie, the StickyBC is truly "sticky".
# - setting max_value = 0.5 in this test illustrates the "approximate" nature
# of StickyBC, in that some nodes will be fixed at disp_y=0.5, while others
# will be fixed at disp_y=0.6, due to the timestepping and roundoff errors
# in MOOSE's solution.
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
[../]
[]
[BCs]
[./obstruction]
type = StickyBC
variable = disp_y
boundary = top
max_value = 0.49
[../]
[./bottom]
type = FunctionDirichletBC
variable = disp_y
boundary = bottom
function = t
[../]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./front]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[../]
[]
[Materials]
[./stress]
type = ComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.2
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = Linear
dt = 0.1
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/tensor_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]
[./TensorMechanics]
[../]
[./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"
csv = true
exodus = true
perf_graph = 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/tensor_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]
[./DynamicTensorMechanics]
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/peridynamics/test/tests/generalized_plane_strain/generalized_plane_strain_H1NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[Modules/Peridynamics/Mechanics]
[./Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_I
[../]
[../]
[./GeneralizedPlaneStrain]
[./all]
formulation = NONORDINARY_STATE
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[]
[Functions]
[./tempfunc]
type = ParsedFunction
value = '(1-x)*t'
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
boundary = 1000
variable = disp_x
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
boundary = 1000
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_I
eigenstrain_names = thermal
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = thermal
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
nl_rel_tol = 1e-12
start_time = 0.0
end_time = 1.0
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
[Outputs]
exodus = true
file_base = generalized_plane_strain_H1NOSPD
[]
(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/peridynamics/test/tests/jacobian_check/2D_thermomechanics_smallstrain_H2NOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = BOND_HORIZON_II
eigenstrain_names = thermal
[../]
[]
[Kernels]
[./heat]
type = HeatConductionBPD
variable = temp
[../]
[]
[Materials]
[./linelast]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.0
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
stabilization = BOND_HORIZON_II
eigenstrain_names = thermal
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0.5
eigenstrain_name = thermal
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./thermal]
type = ThermalConstantHorizonMaterialBPD
thermal_conductivity = 1.0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(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
args = 'stress_yy porepressure'
execute_on = timestep_end
variable = tot_force
function = '-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]
interval = 3
type = CSV
[../]
[]
(modules/porous_flow/test/tests/poro_elasticity/vol_expansion_poroperm.i)
# Apply an increasing porepressure, with zero mechanical forces,
# and observe the corresponding volumetric expansion and porosity increase.
# Check that permeability is calculated correctly from porosity.
#
# P = t
# With the Biot coefficient being 1, the effective stresses should be
# stress_xx = stress_yy = stress_zz = t
# With bulk modulus = 1 then should have
# vol_strain = strain_xx + strain_yy + strain_zz = t.
#
# With the biot coefficient being 1, the porosity (phi) # at time t is:
# phi = 1 - (1 - phi0) / exp(vol_strain)
# where phi0 is the porosity at t = 0 and P = 0.
#
# The permeability (k) is
# k = k_anisotropic * f * d^2 * phi^n / (1-phi)^m
[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 = 1
variable = disp_x
component = 0
[]
[poro_y]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 1
variable = disp_y
component = 1
[]
[poro_z]
type = PorousFlowEffectiveStressCoupling
biot_coefficient = 1
variable = disp_z
component = 2
[]
[]
[AuxVariables]
[poro]
order = CONSTANT
family = MONOMIAL
[]
[perm_x]
order = CONSTANT
family = MONOMIAL
[]
[perm_y]
order = CONSTANT
family = MONOMIAL
[]
[perm_z]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[poro]
type = PorousFlowPropertyAux
property = porosity
variable = poro
[]
[perm_x]
type = PorousFlowPropertyAux
property = permeability
variable = perm_x
row = 0
column = 0
[]
[perm_y]
type = PorousFlowPropertyAux
property = permeability
variable = perm_y
row = 1
column = 1
[]
[perm_z]
type = PorousFlowPropertyAux
property = permeability
variable = perm_z
row = 2
column = 2
[]
[]
[Postprocessors]
[poro]
type = PointValue
variable = poro
point = '0 0 0'
[]
[perm_x]
type = PointValue
variable = perm_x
point = '0 0 0'
[]
[perm_y]
type = PointValue
variable = perm_y
point = '0 0 0'
[]
[perm_z]
type = PointValue
variable = perm_z
point = '0 0 0'
[]
[]
[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 = ComputeIsotropicElasticityTensor
bulk_modulus = 1
shear_modulus = 1
[]
[strain]
type = ComputeSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = p
capillary_pressure = pc
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[porosity]
type = PorousFlowPorosity
fluid = true
mechanical = true
porosity_zero = 0.1
solid_bulk = 1
biot_coefficient = 1
[]
[permeability]
type = PorousFlowPermeabilityKozenyCarman
k_anisotropy = '1 0 0 0 2 0 0 0 0.1'
poroperm_function = kozeny_carman_fd2
f = 0.1
d = 5
m = 2
n = 7
[]
[]
[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_poroperm
csv = true
execute_on = 'timestep_end'
[]
(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
[]
[]
[Modules]
[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/tensor_mechanics/test/tests/thermal_expansion_function/small_const.i)
# This tests the thermal expansion coefficient function using both
# options to specify that function: mean and instantaneous. There
# two blocks, each containing a single element, and these use the
# two variants of the function.
# In this test, the instantaneous CTE function has a constant value,
# while the mean CTE function is an analytic function designed to
# give the same response. If \bar{alpha}(T) is the mean CTE function,
# and \alpha(T) is the instantaneous CTE function,
# \bar{\alpha}(T) = 1/(T-Tref) \intA^{T}_{Tsf} \alpha(T) dT
# where Tref is the reference temperature used to define the mean CTE
# function, and Tsf is the stress-free temperature.
# This version of the test uses small deformation theory. The results
# from the two models are identical.
[Mesh]
file = 'blocks.e'
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = 3
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
block = '1 2'
function = temp_func
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeLinearElasticStress
[../]
[./thermal_expansion_strain1]
type = ComputeMeanThermalExpansionFunctionEigenstrain
block = 1
thermal_expansion_function = cte_func_mean
thermal_expansion_function_reference_temperature = 0.5
stress_free_temperature = 0.0
temperature = temp
eigenstrain_name = eigenstrain
[../]
[./thermal_expansion_strain2]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = 2
thermal_expansion_function = cte_func_inst
stress_free_temperature = 0.0
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Functions]
[./cte_func_mean]
type = ParsedFunction
vars = 'tsf tref scale' #stress free temp, reference temp, scale factor
vals = '0.0 0.5 1e-4'
value = 'scale * (t - tsf) / (t - tref)'
[../]
[./cte_func_inst]
type = PiecewiseLinear
xy_data = '0 1.0
2 1.0'
scale_factor = 1e-4
[../]
[./temp_func]
type = PiecewiseLinear
xy_data = '0 1
1 2'
[../]
[]
[Postprocessors]
[./disp_1]
type = NodalExtremeValue
variable = disp_x
boundary = 101
[../]
[./disp_2]
type = NodalExtremeValue
variable = disp_x
boundary = 102
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_max_its = 100
l_tol = 1e-4
nl_abs_tol = 1e-8
nl_rel_tol = 1e-12
start_time = 0.0
end_time = 1.0
dt = 0.1
[]
[Outputs]
csv = true
[]
(modules/tensor_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]
[./TensorMechanics]
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
exodus = true
csv = true
[]
(modules/peridynamics/test/tests/jacobian_check/2D_thermomechanics_FNOSPD.i)
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
full_jacobian = true
[]
[Mesh]
type = PeridynamicsMesh
horizon_number = 3
[./gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[../]
[./gpd]
type = MeshGeneratorPD
input = gmg
retain_fe_mesh = false
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
[../]
[]
[Modules/Peridynamics/Mechanics/Master]
[./all]
formulation = NONORDINARY_STATE
stabilization = FORCE
eigenstrain_names = thermal
[../]
[]
[Kernels]
[./heat]
type = HeatConductionBPD
variable = temp
[../]
[]
[Materials]
[./linelast]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.0
[../]
[./strain]
type = ComputePlaneSmallStrainNOSPD
eigenstrain_names = thermal
stabilization = FORCE
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = thermal
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./thermal]
type = ThermalConstantHorizonMaterialBPD
thermal_conductivity = 1.0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
end_time = 1
dt = 1
num_steps = 1
[./Quadrature]
type = GAUSS_LOBATTO
order = FIRST
[../]
[]
(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
[]
[]
[Modules]
[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
value = a/b
vars = 'a b'
vals = 'stress_xx zdisp'
[]
[stress_zz_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = 'stress_zz zdisp'
[]
[p_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = '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/xfem/test/tests/second_order_elements/square_branch_tri6_2d.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = TRI6
[]
[UserObjects]
[./line_seg_cut_set_uo]
type = LineSegmentCutSetUserObject
cut_data = '-1.0000e-10 6.6340e-01 6.6340e-01 -1.0000e-10 0.0 1.0
3.3120e-01 3.3200e-01 1.0001e+00 3.3200e-01 1.0 2.0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[Functions]
[./right_disp_x]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[./top_disp_y]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[]
[BCs]
[./right_x]
type = FunctionDirichletBC
boundary = 1
variable = disp_x
function = right_disp_x
[../]
[./top_y]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = top_disp_y
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[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 = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 2.2
num_steps = 5000
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/tensor_mechanics/test/tests/critical_time_step/non-isotropic_error_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 10
nz = 15
xmin = 0
xmax = 2
ymin = 0
ymax = 2
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./2_x]
type = DirichletBC
variable = disp_x
boundary = 3
value = 0.0
[../]
[./2_y]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[../]
[./2_z]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '1.684e5 0.176e5 0.176e5 1.684e5 0.176e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./strain]
type = ComputeSmallStrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = '8050.0'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-4
l_max_its = 3
start_time = 0.0
dt = 0.1
num_steps = 1
end_time = 1.0
[]
[Postprocessors]
[./time_step]
type = CriticalTimeStep
[../]
[]
[Outputs]
file_base = out
exodus = true
csv = true
[]
(modules/contact/test/tests/tension_release/4ElemTensionRelease_mechanical_constraint.i)
# This is a mechanical constraint (contact formulation) version of 4ElemTensionRelease.i
[Mesh]
file = 4ElemTensionRelease.e
[]
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Functions]
[./up]
type = PiecewiseLinear
x = '0 1 2 3'
y = '0 0.0001 0 -.0001'
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = SMALL
generate_output = 'stress_yy'
[]
[]
[Contact]
[./dummy_name]
primary = 2
secondary = 3
penalty = 1e6
model = frictionless
tangential_tolerance = 0.01
[../]
[]
[BCs]
[./lateral]
type = DirichletBC
variable = disp_x
boundary = '1 4'
value = 0
[../]
[./bottom_up]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = up
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[]
[Materials]
[./stiffStuff1]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1.0e6
poissons_ratio = 0.3
[../]
[./stiffStuff1_stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
line_search = 'none'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-4
l_max_its = 100
nl_max_its = 10
dt = 0.2
dtmin = 0.2
end_time = 3
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
exodus = true
[]
(modules/porous_flow/test/tests/jacobian/desorped_mass01.i)
# 1phase
# vanGenuchten, constant-bulk density, HM porosity, 1component, unsaturated
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -1
xmax = 1
[]
[GlobalParams]
PorousFlowDictator = dictator
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pp]
[]
[conc]
family = MONOMIAL
order = CONSTANT
[]
[]
[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
[]
[pp]
type = RandomIC
variable = pp
min = -1
max = 1
[]
[conc]
type = RandomIC
variable = conc
min = 0
max = 1
[]
[]
[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
[]
[mass0]
type = PorousFlowMassTimeDerivative
fluid_component = 0
variable = pp
[]
[conc]
type = PorousFlowDesorpedMassTimeDerivative
conc_var = conc
variable = conc
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'pp disp_x disp_y disp_z conc'
number_fluid_phases = 1
number_fluid_components = 1
[]
[pc]
type = PorousFlowCapillaryPressureVG
m = 0.5
alpha = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 1.5
density0 = 1
thermal_expansion = 0
[]
[]
[]
[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
[]
[vol_strain]
type = PorousFlowVolumetricStrain
[]
[ppss]
type = PorousFlow1PhaseP
porepressure = pp
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.5
solid_bulk = 1
[]
[p_eff]
type = PorousFlowEffectiveFluidPressure
[]
[]
[Preconditioning]
active = check
[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-15 1E-10 10000'
[]
[check]
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
dt = 1
end_time = 1
[]
[Outputs]
exodus = false
[]
(modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_hht.i)
# Wave propogation in 1D using HHT 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.
# alpha, beta and gamma are HHT 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)*((1+alpha)*vel-alpha*vel_old)
# +(1+alpha)*K*disp-alpha*K*disp_old = 0
#
# Here M is the mass matrix, K is the stiffness matrix
#
# The displacement at the first, second, third and fourth node at t = 0.1 are
# -7.787499960311491942e-02, 1.955566679096475483e-02 and -4.634888180231294501e-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]
[../]
[]
[Kernels]
[./DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
hht_alpha = -0.3
stiffness_damping_coefficient = 0.1
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.422
gamma = 0.8
eta=0.1
alpha = -0.3
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.422
gamma = 0.8
eta=0.1
alpha = -0.3
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.422
gamma = 0.8
eta = 0.1
alpha = -0.3
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.422
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.8
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.422
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.8
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.422
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.8
execute_on = timestep_end
[../]
[]
[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/energy_conservation/heat04_rz.i)
# The sample is a single unit element in RZ coordinates
# A constant velocity is applied to the outer boundary is free to move as a source injects heat and fluid into the system
# There is no fluid flow or heat flow.
# Heat energy conservation is checked.
# Mass conservation is checked
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmin = 1
xmax = 2
ymin = -0.5
ymax = 0.5
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
PorousFlowDictator = dictator
block = 0
biot_coefficient = 0.3
[]
[Variables]
[disp_r]
[]
[disp_z]
[]
[pp]
initial_condition = 0.1
[]
[temp]
initial_condition = 10
[]
[]
[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
[]
[]
[PorousFlowFullySaturated]
coupling_type = ThermoHydroMechanical
porepressure = pp
temperature = temp
fp = simple_fluid
[]
[DiracKernels]
[heat_source]
type = PorousFlowPointSourceFromPostprocessor
point = '1.5 0 0'
variable = temp
mass_flux = 10
[]
[fluid_source]
type = PorousFlowPointSourceFromPostprocessor
point = '1.5 0 0'
variable = pp
mass_flux = 1
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 0.5
density0 = 1
viscosity = 1
thermal_expansion = 0
cv = 1.3
[]
[]
[]
[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 = ComputeAxisymmetricRZSmallStrain
[]
[stress]
type = ComputeLinearElasticStress
[]
[porosity]
type = PorousFlowPorosity
porosity_zero = 0.1
[]
[rock_heat]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 2.2
density = 0.5
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '0.5 0 0 0 0.5 0 0 0 0.5'
[]
[thermal_cond]
type = PorousFlowThermalConductivityIdeal
dry_thermal_conductivity = '1 0 0 0 1 0 0 0 1'
[]
[]
[Postprocessors]
[p0]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '1 0 0'
variable = pp
[]
[t0]
type = PointValue
outputs = 'console csv'
execute_on = 'initial timestep_end'
point = '1 0 0'
variable = temp
[]
[rdisp]
type = PointValue
outputs = 'csv console'
point = '2 0 0'
use_displaced_mesh = false
variable = disp_r
[]
[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
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 2
end_time = 10
[]
[Outputs]
execute_on = 'initial timestep_end'
[csv]
type = CSV
[]
[]
(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
[]
[]
[Modules]
[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
value = a/b
vars = 'a b'
vals = 'stress_xx zdisp'
[]
[stress_zz_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = 'stress_zz zdisp'
[]
[p_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = '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/porous_flow/examples/tidal/atm_tides_open_hole.i)
# A 100m x 10m "slab" of height 100m is subjected to cyclic pressure at its top
# Assumptions:
# the boundaries are impermeable, except the top boundary
# only vertical displacement is allowed
# the atmospheric pressure sets the total stress at the top of the model
# at the slab left-hand side there is a borehole that taps into the base of the slab.
[Mesh]
[the_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 10
ny = 1
nz = 10
xmin = 0
xmax = 100
ymin = -5
ymax = 5
zmin = -100
zmax = 0
[]
[bh_back]
type = ExtraNodesetGenerator
coord = '0 -5 -100'
input = the_mesh
new_boundary = 11
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
block = 0
biot_coefficient = 0.6
multiply_by_density = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[porepressure]
scaling = 1E11
[]
[]
[ICs]
[porepressure]
type = FunctionIC
variable = porepressure
function = '-10000*z' # this is only approximately correct
[]
[]
[Functions]
[ini_stress_zz]
type = ParsedFunction
value = '(25000 - 0.6*10000)*z' # remember this is effective stress
[]
[cyclic_porepressure]
type = ParsedFunction
value = 'if(t>0,5000 * sin(2 * pi * t / 3600.0 / 24.0),0)'
[]
[cyclic_porepressure_at_depth]
type = ParsedFunction
value = '-10000*z + if(t>0,5000 * sin(2 * pi * t / 3600.0 / 24.0),0)'
[]
[neg_cyclic_porepressure]
type = ParsedFunction
value = '-if(t>0,5000 * sin(2 * pi * t / 3600.0 / 24.0),0)'
[]
[]
[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_x_disp]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'bottom top' # because of 1-element meshing, this fixes u_x=0 everywhere
[]
[no_y_disp]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom top' # because of 1-element meshing, this fixes u_y=0 everywhere
[]
[no_z_disp_at_bottom]
type = DirichletBC
variable = disp_z
value = 0
boundary = back
[]
[pp]
type = FunctionDirichletBC
variable = porepressure
function = cyclic_porepressure
boundary = front
[]
[pp_downhole]
type = FunctionDirichletBC
variable = porepressure
function = cyclic_porepressure_at_depth
boundary = 11
[]
[total_stress_at_top]
type = FunctionNeumannBC
variable = disp_z
function = neg_cyclic_porepressure
boundary = front
[]
[]
[Modules]
[FluidProperties]
[the_simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0.0
bulk_modulus = 2E9
viscosity = 1E-3
density0 = 1000.0
[]
[]
[]
[PorousFlowBasicTHM]
coupling_type = HydroMechanical
displacements = 'disp_x disp_y disp_z'
porepressure = porepressure
gravity = '0 0 -10'
fp = the_simple_fluid
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 10.0E9 # drained bulk modulus
poissons_ratio = 0.25
[]
[strain]
type = ComputeSmallStrain
eigenstrain_names = ini_stress
[]
[stress]
type = ComputeLinearElasticStress
[]
[ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '0 0 0 0 0 0 0 0 ini_stress_zz'
eigenstrain_name = ini_stress
[]
[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 = 2E9
[]
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-14 0 0 0 1E-14 0 0 0 1E-14'
[]
[density]
type = GenericConstantMaterial
prop_names = density
prop_values = 2500.0
[]
[]
[Postprocessors]
[p0_0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = porepressure
[]
[p100_0]
type = PointValue
outputs = csv
point = '100 0 0'
variable = porepressure
[]
[p0_100]
type = PointValue
outputs = csv
point = '0 0 -100'
variable = porepressure
[]
[p100_100]
type = PointValue
outputs = csv
point = '100 0 -100'
variable = porepressure
[]
[uz0]
type = PointValue
outputs = csv
point = '0 0 0'
variable = disp_z
[]
[uz100]
type = PointValue
outputs = csv
point = '100 0 0'
variable = disp_z
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = -3600
dt = 3600
end_time = 172800
nl_rel_tol = 1E-10
nl_abs_tol = 1E-5
[]
[Outputs]
print_linear_residuals = false
csv = true
[]
(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
[]
[]
[Modules]
[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
value = a/b
vars = 'a b'
vals = 'stress_xx zdisp'
[]
[stress_zz_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = 'stress_zz zdisp'
[]
[p_over_strain_fcn]
type = ParsedFunction
value = a/b
vars = 'a b'
vals = '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/tensor_mechanics/tutorials/introduction/mech_step02.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Modules/TensorMechanics/Master]
[all]
add_variables = true
[]
[]
#
# Added boundary/loading conditions
# https://mooseframework.inl.gov/modules/tensor_mechanics/tutorials/introduction/step02.html
#
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[Pressure]
[top]
boundary = top
function = 1e7*t
[]
[]
[]
[Materials]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e9
poissons_ratio = 0.3
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
# consider all off-diagonal Jacobians for preconditioning
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# we chose a direct solver here
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 5
dt = 1
[]
[Outputs]
exodus = 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/tensor_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
[../]
[]
[Modules]
[./TensorMechanics]
[./GeneralizedPlaneStrain]
[./gps1]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz1
block = '1'
[../]
[./gps2]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz2
block = '2'
[../]
[../]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = false
displacements = 'disp_x disp_y'
temperature = temp
save_in = 'saved_x saved_y'
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
value = '(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/porous_flow/test/tests/poro_elasticity/terzaghi_fully_saturated_volume.i)
# Terzaghi's problem of consolodation of a drained medium
# The FullySaturated Kernels are used, with multiply_by_density = false
# so that this becomes a linear problem with constant Biot Modulus
#
# A saturated soil sample sits in a bath of water.
# It is constrained on its sides, and bottom.
# Its sides and bottom are also impermeable.
# Initially it is unstressed.
# A normal stress, q, is applied to the soil's top.
# The soil then slowly compresses as water is squeezed
# out from the sample from its top (the top BC for
# the porepressure is porepressure = 0).
#
# See, for example. Section 2.2 of the online manuscript
# Arnold Verruijt "Theory and Problems of Poroelasticity" Delft University of Technology 2013
# but note that the "sigma" in that paper is the negative
# of the stress in TensorMechanics
#
# Here are the problem's parameters, and their values:
# Soil height. h = 10
# Soil's Lame lambda. la = 2
# Soil's Lame mu, which is also the Soil's shear modulus. mu = 3
# Soil bulk modulus. K = la + 2*mu/3 = 4
# Soil confined compressibility. m = 1/(K + 4mu/3) = 0.125
# Soil bulk compliance. 1/K = 0.25
# Fluid bulk modulus. Kf = 8
# Fluid bulk compliance. 1/Kf = 0.125
# Fluid mobility (soil permeability/fluid viscosity). k = 1.5
# Soil initial porosity. phi0 = 0.1
# Biot coefficient. alpha = 0.6
# Soil initial storativity, which is the reciprocal of the initial Biot modulus. S = phi0/Kf + (alpha - phi0)(1 - alpha)/K = 0.0625
# Consolidation coefficient. c = k/(S + alpha^2 m) = 13.95348837
# Normal stress on top. q = 1
# Initial porepressure, resulting from instantaneous application of q, assuming corresponding instantaneous increase of porepressure (Note that this is calculated by MOOSE: we only need it for the analytical solution). p0 = alpha*m*q/(S + alpha^2 m) = 0.69767442
# Initial vertical displacement (down is positive), resulting from instantaneous application of q (Note this is calculated by MOOSE: we only need it for the analytical solution). uz0 = q*m*h*S/(S + alpha^2 m)
# Final vertical displacement (down in positive) (Note this is calculated by MOOSE: we only need it for the analytical solution). uzinf = q*m*h
#
# The solution for porepressure is
# P = 4*p0/\pi \sum_{k=1}^{\infty} \frac{(-1)^{k-1}}{2k-1} \cos ((2k-1)\pi z/(2h)) \exp(-(2k-1)^2 \pi^2 ct/(4 h^2))
# This series converges very slowly for ct/h^2 small, so in that domain
# P = p0 erf( (1-(z/h))/(2 \sqrt(ct/h^2)) )
#
# The degree of consolidation is defined as
# U = (uz - uz0)/(uzinf - uz0)
# where uz0 and uzinf are defined above, and
# uz = the vertical displacement of the top (down is positive)
# U = 1 - (8/\pi^2)\sum_{k=1}^{\infty} \frac{1}{(2k-1)^2} \exp(-(2k-1)^2 \pi^2 ct/(4 h^2))
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 10
xmin = -1
xmax = 1
ymin = -1
ymax = 1
zmin = 0
zmax = 10
[]
[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'
[]
[basefixed]
type = DirichletBC
variable = disp_z
value = 0
boundary = back
[]
[topdrained]
type = DirichletBC
variable = porepressure
value = 0
boundary = front
[]
[topload]
type = NeumannBC
variable = disp_z
value = -1
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.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
coupling_type = HydroMechanical
biot_coefficient = 0.6
multiply_by_density = false
variable = porepressure
[]
[flux]
type = PorousFlowFullySaturatedDarcyBase
multiply_by_density = false
variable = porepressure
gravity = '0 0 0'
[]
[]
[Modules]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
bulk_modulus = 8
density0 = 1
thermal_expansion = 0
viscosity = 0.96
[]
[]
[]
[Materials]
[temperature]
type = PorousFlowTemperature
[]
[elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '2 3'
# bulk modulus is lambda + 2*mu/3 = 2 + 2*3/3 = 4
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 used
porosity = 0.1
[]
[biot_modulus]
type = PorousFlowConstantBiotModulus
biot_coefficient = 0.6
fluid_bulk_modulus = 8
solid_bulk_compliance = 0.25
[]
[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'
variable = porepressure
use_displaced_mesh = false
[]
[p1]
type = PointValue
outputs = csv
point = '0 0 1'
variable = porepressure
use_displaced_mesh = false
[]
[p2]
type = PointValue
outputs = csv
point = '0 0 2'
variable = porepressure
use_displaced_mesh = false
[]
[p3]
type = PointValue
outputs = csv
point = '0 0 3'
variable = porepressure
use_displaced_mesh = false
[]
[p4]
type = PointValue
outputs = csv
point = '0 0 4'
variable = porepressure
use_displaced_mesh = false
[]
[p5]
type = PointValue
outputs = csv
point = '0 0 5'
variable = porepressure
use_displaced_mesh = false
[]
[p6]
type = PointValue
outputs = csv
point = '0 0 6'
variable = porepressure
use_displaced_mesh = false
[]
[p7]
type = PointValue
outputs = csv
point = '0 0 7'
variable = porepressure
use_displaced_mesh = false
[]
[p8]
type = PointValue
outputs = csv
point = '0 0 8'
variable = porepressure
use_displaced_mesh = false
[]
[p9]
type = PointValue
outputs = csv
point = '0 0 9'
variable = porepressure
use_displaced_mesh = false
[]
[p99]
type = PointValue
outputs = csv
point = '0 0 10'
variable = porepressure
use_displaced_mesh = false
[]
[zdisp]
type = PointValue
outputs = csv
point = '0 0 10'
variable = disp_z
use_displaced_mesh = false
[]
[dt]
type = FunctionValuePostprocessor
outputs = console
function = if(0.5*t<0.1,0.5*t,0.1)
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = Newton
start_time = 0
end_time = 10
[TimeStepper]
type = PostprocessorDT
postprocessor = dt
dt = 0.0001
[]
[]
[Outputs]
execute_on = 'timestep_end'
file_base = terzaghi_fully_saturated_volume
[csv]
type = CSV
[]
[]
(modules/tensor_mechanics/test/tests/plane_stress/weak_plane_stress_elastic_jacobian.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[]
[Modules/TensorMechanics/Master]
[plane_stress]
planar_formulation = WEAK_PLANE_STRESS
strain = SMALL
[]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.0
youngs_modulus = 1
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
end_time = 1.0
[]
(modules/tensor_mechanics/test/tests/2D_different_planes/planestrain_jacobian_testing_xz.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = square_xz_plane.e
[]
[Variables]
[./disp_x]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./plane_strain]
block = 1
strain = SMALL
out_of_plane_direction = y
planar_formulation = PLANE_STRAIN
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.0
youngs_modulus = 1
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
end_time = 1.0
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_first/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[]
[Modules/TensorMechanics/Master]
[block]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'block'
[]
[plank]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1.0e0
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ComputeLinearElasticStress
block = 'plank block'
[]
[swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[]
[swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 10
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
exodus = true
file_base = ${name}
[comp]
type = CSV
show = 'contact'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/combined/test/tests/evolving_mass_density/expand_compress_test_tensors.i)
# Element mass tests
# This series of tests is designed to compute the mass of elements based on
# an evolving mass density calculation. The tests consist of expansion and compression
# of the elastic patch test model along each axis, uniform expansion and compression,
# and shear in each direction. The expansion and compression tests change the volume of
# the elements. The corresponding change in density should compensate for this so the
# mass remains constant. The shear tests should not result in a volume change, and this
# is checked too. The mass calculation is done with the post processor called Mass.
# The tests/file names are as follows:
# Expansion and compression along a single axis
# expand_compress_x_test_out.e
# expand_compress_y_test_out.e
# expand_compress_z_test_out.e
# Volumetric expansion and compression
# uniform_expand_compress_test.i
# Zero volume change shear along each axis
# shear_x_test_out.e
# shear_y_test_out.e
# shear_z_test_out.e
# The resulting mass calculation for these tests should always be = 1.
# This test is a duplicate of the uniform_expand_compress_test.i test for solid mechanics, and the
# output of this tensor mechanics test is compared to the original
# solid mechanics output. The duplication is necessary to test the
# migrated tensor mechanics version while maintaining tests for solid mechanics.
[Mesh]
file = elastic_patch.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
order = FIRST
family = LAGRANGE
[]
[Functions]
[./rampConstant1]
type = PiecewiseLinear
x = '0.00 1.00 2.0 3.00'
y = '0.00 0.25 0.0 -0.25'
scale_factor = 1
[../]
[] # Functions
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[]
[BCs]
[./bot_x]
type = DirichletBC
variable = disp_x
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
value = 0
[../]
[./bot_z]
type = DirichletBC
variable = disp_z
value = 0
[../]
[./top]
type = FunctionDirichletBC
preset = false
function = rampConstant1
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./small_strain]
type = ComputeSmallStrain
block = ' 1 2 3 4 5 6 7'
[../]
[./elastic_stress]
type = ComputeLinearElasticStress
block = '1 2 3 4 5 6 7'
[../]
[]
[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 = 3
end_time = 3.0
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[]
[Postprocessors]
[./Mass]
type = Mass
variable = disp_x
execute_on = 'initial timestep_end'
[../]
[]
(modules/tensor_mechanics/test/tests/coupled_pressure/coupled_pressure_test.i)
#
# Pressure Test
#
# This test is designed to compute pressure loads on three faces of a unit cube.
# The pressure is computed as an auxiliary variable. It should give the same result
# as pressure_test.i
#
# The mesh is composed of one block with a single element. Symmetry bcs are
# applied to the faces opposite the pressures. Poisson's ratio is zero,
# which makes it trivial to check displacements.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = FileMesh
file = pressure_test.e
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 1.0
[../]
[./zeroRamp]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 0. 1.'
scale_factor = 2.0
[../]
[./rampUnramp]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 0.'
scale_factor = 10.0
[../]
[]
[AuxVariables]
[./pressure_1]
[../]
[./pressure_2]
[../]
[./pressure_3]
[../]
[]
[AuxKernels]
[./side1_pressure_ak]
type = FunctionAux
variable = pressure_1
boundary = 1
function = rampConstant
[../]
[./side2_pressure_ak]
type = FunctionAux
variable = pressure_2
boundary = 2
function = zeroRamp
[../]
[./side3_pressure_ak]
type = FunctionAux
variable = pressure_3
boundary = 3
function = rampUnramp
[../]
[]
[Modules]
[./TensorMechanics]
[./Master]
[./all]
strain = SMALL
add_variables = true
[../]
[../]
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 5
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./CoupledPressure]
[./Side1]
boundary = '1'
pressure = pressure_1
displacements = 'disp_x disp_y disp_z'
[../]
[./Side2]
boundary = '2'
pressure = pressure_2
displacements = 'disp_x disp_y disp_z'
[../]
[../]
[./side3_x]
type = CoupledPressureBC
variable = 'disp_x'
boundary = '3'
pressure = pressure_3
component = 0
[../]
[./side3_y]
type = CoupledPressureBC
variable = 'disp_y'
boundary = '3'
pressure = pressure_3
component = 1
[../]
[./side3_z]
type = CoupledPressureBC
variable = 'disp_z'
boundary = '3'
pressure = pressure_3
component = 2
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 0.5e6'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
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
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[]
(modules/tensor_mechanics/include/materials/ComputeLinearViscoelasticStress.h)
// This file is part of the MOOSE framework
// https://www.mooseframework.org
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "ComputeLinearElasticStress.h"
#include "LinearViscoelasticityBase.h"
/**
* Computes the stress of a linear viscoelastic material, using total
* small strains. The mechanical strain is decomposed into the elastic
* strain + the creep strain, the creep strain itself resulting from
* a spring-dashpot model.
*
* If you need to accomodate other sources of inelastic strains, use
* a ComputeMultipleInelasticStress material instead, associated with a
* LinearViscoelasticStressUpdate to represent the creep strain.
*/
class ComputeLinearViscoelasticStress : public ComputeLinearElasticStress
{
public:
static InputParameters validParams();
ComputeLinearViscoelasticStress(const InputParameters & parameters);
protected:
virtual void initQpStatefulProperties() override;
virtual void computeQpStress() override;
///@{ Creep strain variable
MaterialProperty<RankTwoTensor> & _creep_strain;
const MaterialProperty<RankTwoTensor> & _creep_strain_old;
///@}
/// Apparent creep strain (extracted from a LinearViscoelasticityBase object)
const MaterialProperty<RankTwoTensor> & _apparent_creep_strain;
/// Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)
const MaterialProperty<RankFourTensor> & _apparent_elasticity_tensor;
/// Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object)
const MaterialProperty<RankFourTensor> & _elasticity_tensor_inv;
};