- displacementsThe displacements appropriate for the simulation geometry and coordinate system.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The displacements appropriate for the simulation geometry and coordinate system.
BVMechanicalMaterial
The BVMechanicalMaterial has not been documented. The content listed below should be used as a starting point for documenting the class, which includes the typical automatic documentation associated with a MooseObject; however, what is contained is ultimately determined by what is necessary to make the documentation clear for users.
Material for computing the deformation of a porous material.
Overview
Example Input File Syntax
Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Unit:(no unit assumed)
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Unit:(no unit assumed)
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- bulk_modulusThe bulk modulus of the material.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The bulk modulus of the material.
- 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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
Options:NONE, ELEMENT, SUBDOMAIN
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
- inelastic_modelsThe material objects to use to calculate stress and inelastic strains. Note: specify creep models first and plasticity models second.
C++ Type:std::vector<MaterialName>
Unit:(no unit assumed)
Controllable:No
Description:The material objects to use to calculate stress and inelastic strains. Note: specify creep models first and plasticity models second.
- initial_stressThe initial stress principal components (negative in compression).
C++ Type:std::vector<FunctionName>
Unit:(no unit assumed)
Controllable:No
Description:The initial stress principal components (negative in compression).
- poisson_ratioThe Poisson's ratio of the material.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The Poisson's ratio of the material.
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- shear_modulusThe shear modulus of the material.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The shear modulus of the material.
- strain_modelsmallThe model to use to calculate the strain rate tensor.
Default:small
C++ Type:MooseEnum
Unit:(no unit assumed)
Options:small, finite
Controllable:No
Description:The model to use to calculate the strain rate tensor.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
- young_modulusThe Young's modulus of the material.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The Young's modulus of the material.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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>
Unit:(no unit assumed)
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Unit:(no unit assumed)
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
Input Files
- (test/tests/poroelasticity/mandel.i)
- (test/tests/poroelasticity/terzaghi.i)
- (test/tests/interfaces/constant_friction_2D.i)
- (examples/poroelasticity/mandel/mandel.i)
- (test/tests/elasticity/error_moduli.i)
- (examples/poroelasticity/terzaghi/terzaghi.i)
- (examples/viscoelasticity/lubby2/lubby2.i)
- (examples/viscoelasticity/linear_maxwell/linear_maxwell.i)
- (test/tests/interfaces/constant_friction_3D.i)
- (test/tests/elasticity/uniaxial.i)
- (examples/poroelasticity/cryer/cryer_fv.i)
- (test/tests/viscoelasticity/burger.i)
- (examples/viscoelasticity/burger/burger.i)
- (test/tests/interfaces/stick_3D.i)
- (test/tests/elasticity/uniaxial_load.i)
- (examples/poroelasticity/terzaghi/terzaghi_fv.i)
- (examples/viscoelasticity/linear_kelvin/linear_kelvin.i)
- (test/tests/elasticity/triax.i)
- (test/tests/elasticity/shear.i)
- (test/tests/viscoelasticity/linear_kelvin.i)
- (test/tests/viscoelasticity/linear_maxwell.i)
- (test/tests/elasticity/stress_state.i)
- (examples/poroelasticity/mandel/mandel_fv.i)
- (test/tests/interfaces/stick_2D.i)
- (test/tests/viscoelasticity/lubby2.i)
- (examples/poroelasticity/cryer/cryer.i)
(test/tests/poroelasticity/mandel.i)
# Mandel's problem
#
# See Arnold Verruijt "Theory and Problems of Poroelasticity" 2015
# Section 3.2 Mandel's problem
# Cheng and Detournay (1988), A direct boundary element method for plane strain poroelasticity
#
# Time dimension is t = Cv * t / a^2
# Space dimension is x = x / a
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 4
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
[]
[Variables]
[pf]
order = FIRST
family = LAGRANGE
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[fluid_time_derivative]
type = BVSinglePhaseTimeDerivative
variable = pf
[]
[darcy]
type = BVSinglePhaseDarcy
variable = pf
[]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
fluid_pressure = pf
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
fluid_pressure = pf
[]
[]
[BCs]
[confine_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[]
[base_fixed]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[]
[top_load]
type = NeumannBC
variable = disp_y
value = -1
boundary = 'top'
[]
[sides_drained]
type = DirichletBC
variable = pf
value = 0
boundary = 'right'
[]
[]
[Materials]
[mechanical]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y'
bulk_modulus = 1
poisson_ratio = 0.25
[]
[fluid_flow_mat]
type = BVSinglePhaseFlowMaterial
[]
[single_phase_poromech]
type = BVPoroMechanicsMaterial
biot_coefficient = 0.6
[]
[permeability]
type = BVConstantPermeability
permeability = 1.5 # scaled by effective space
[]
[porosity]
type = BVConstantPorosity
porosity = 0.1
[]
[fluid]
type = BVFluidProperties
fluid_pressure = pf
temperature = 273
fp = simple_fluid
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
density0 = 1.0
viscosity = 3.636363636363636 # scaled by effective time
bulk_modulus = 8.0
[]
[]
[Preconditioning]
[asm]
type = SMP
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_type -ksp_rtol -ksp_max_it
-pc_type
-sub_pc_type
-snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type
-ksp_gmres_restart'
petsc_options_value = 'fgmres 1e-10 100
asm
ilu
newtonls 1e-12 1e-08 100 basic
201'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
automatic_scaling = true
start_time = 0
end_time = 0.01
[TimeStepper]
type = LogConstantDT
first_dt = 0.001
log_dt = 0.044
[]
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[]
(test/tests/poroelasticity/terzaghi.i)
# Terzaghi's problem of consolodation of a soil layer
#
# See Arnold Verruijt "Theory and Problems of Poroelasticity" 2015
# Section 2.2 Terzaghi's problem
#
# Time dimension is t = Cv * t / h^2
# Space dimension is z = z / h
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 10
xmin = -1.0
xmax = 1.0
ymin = 0
ymax = 1
[]
[Variables]
[pf]
order = FIRST
family = LAGRANGE
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[fluid_time_derivative]
type = BVSinglePhaseTimeDerivative
variable = pf
[]
[darcy]
type = BVSinglePhaseDarcy
variable = pf
[]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
fluid_pressure = pf
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
fluid_pressure = pf
[]
[]
[BCs]
[confine_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[base_fixed]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[]
[top_load]
type = NeumannBC
variable = disp_y
value = -1
boundary = 'top'
[]
[topdrained]
type = DirichletBC
variable = pf
value = 0
boundary = 'top'
[]
[]
[Materials]
[mechanical]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y'
bulk_modulus = 4
shear_modulus = 3
[]
[fluid_flow_mat]
type = BVSinglePhaseFlowMaterial
[]
[single_phase_poromech]
type = BVPoroMechanicsMaterial
biot_coefficient = 0.6
[]
[permeability]
type = BVConstantPermeability
permeability = 1.5e-02 # scaled by effective space
[]
[porosity]
type = BVConstantPorosity
porosity = 0.1
[]
[fluid]
type = BVFluidProperties
fluid_pressure = pf
temperature = 273
fp = simple_fluid
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
density0 = 1.0
viscosity = 0.13953488372093023 # scaled by effective time
bulk_modulus = 8.0
[]
[]
[Preconditioning]
[precond]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type'
petsc_options_value = 'bcgs bjacobi 1E-14 1E-10 100 basic'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
automatic_scaling = true
start_time = 0
end_time = 0.01
[TimeStepper]
type = LogConstantDT
first_dt = 0.0001
log_dt = 0.044
[]
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[]
(test/tests/interfaces/constant_friction_2D.i)
[Mesh]
[file]
type = FileMeshGenerator
file = mesh-2D.msh
[]
[fault_gen]
type = BVFaultInterfaceGenerator
input = file
sidesets = 'interface'
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[]
[InterfaceKernels]
[traction_x]
type = BVMechanicalInterface
boundary = 'interface'
component = x
variable = disp_x
neighbor_var = disp_x
[]
[traction_y]
type = BVMechanicalInterface
boundary = 'interface'
component = y
variable = disp_y
neighbor_var = disp_y
[]
[]
[AuxVariables]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[normal_stress]
order = CONSTANT
family = MONOMIAL
[]
[shear_stress]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[strain_xy_aux]
type = BVStrainComponentAux
variable = strain_xy
index_i = x
index_j = y
execute_on = 'TIMESTEP_END'
[]
[stress_xy_aux]
type = BVStressComponentAux
variable = stress_xy
index_i = x
index_j = y
execute_on = 'TIMESTEP_END'
[]
[stress_yy_aux]
type = BVStressComponentAux
variable = stress_yy
index_i = y
index_j = y
execute_on = 'TIMESTEP_END'
[]
[normal_stress_aux]
type = BVFaultNormalStressAux
variable = normal_stress
boundary = 'interface'
execute_on = 'TIMESTEP_END'
[]
[shear_stress_aux]
type = BVFaultShearStressAux
variable = shear_stress
boundary = 'interface'
execute_on = 'TIMESTEP_END'
[]
[]
[Functions]
[disp_x_func]
type = ParsedFunction
expression = 'm*t*y'
symbol_names = 'm'
symbol_values = '0.1'
[]
[]
[BCs]
[Periodic]
[left_right]
auto_direction = x
primary = 'left'
secondary = 'right'
variable = 'disp_x disp_y'
[]
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[]
[disp_x_plate]
type = FunctionDirichletBC
variable = disp_x
boundary = 'bottom top'
function = disp_x_func
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y'
young_modulus = 10.0
poisson_ratio = 0.25
initial_stress = '0.0 1.6 0.0'
[]
[interface]
type = BVMechanicalInterfaceMaterial
boundary = 'interface'
displacements = 'disp_x disp_y'
normal_stiffness = 1.0e+03
tangent_stiffness = 1.0e+03
friction_model = 'constant_friction'
[]
[constant_friction]
type = BVConstantFrictionUpdate
friction = 0.5
[]
[]
# [Preconditioning]
# [hypre]
# type = SMP
# full = true
# petsc_options_iname = '-pc_type -pc_hypre_type'
# petsc_options_value = 'hypre boomeramg'
# []
# []
[Preconditioning]
[asm]
type = SMP
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_type -ksp_rtol -ksp_max_it
-pc_type
-sub_pc_type
-snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type
-ksp_gmres_restart'
petsc_options_value = 'fgmres 1e-10 100
asm
ilu
newtonls 1e-12 1e-08 100 basic
201'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 4.0
dt = 1.0
[]
[Outputs]
exodus = true
[]
(examples/poroelasticity/mandel/mandel.i)
# Mandel's problem
#
# See Arnold Verruijt "Theory and Problems of Poroelasticity" 2015
# Section 3.2 Mandel's problem
# Cheng and Detournay (1988), A direct boundary element method for plane strain poroelasticity
#
# Time dimension is t = Cv * t / a^2
# Space dimension is x = x / a
[Mesh]
type = GeneratedMesh
dim = 3
nx = 20
ny = 20
nz = 20
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 1.0
[]
[Variables]
[pf]
order = FIRST
family = LAGRANGE
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[fluid_time_derivative]
type = BVSinglePhaseTimeDerivative
variable = pf
[]
[darcy]
type = BVSinglePhaseDarcy
variable = pf
[]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
fluid_pressure = pf
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
fluid_pressure = pf
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
fluid_pressure = pf
[]
[]
[BCs]
[confine_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[]
[base_fixed]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[]
[top_load]
type = NeumannBC
variable = disp_y
value = -1
boundary = 'top'
[]
[confine_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'front back'
[]
[sides_drained]
type = DirichletBC
variable = pf
value = 0
boundary = 'right'
[]
[]
[Materials]
[mechanical]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1
poisson_ratio = 0.25
[]
[fluid_flow_mat]
type = BVSinglePhaseFlowMaterial
[]
[single_phase_poromech]
type = BVPoroMechanicsMaterial
biot_coefficient = 0.6
[]
[permeability]
type = BVConstantPermeability
permeability = 1.5 # scaled by effective space
[]
[porosity]
type = BVConstantPorosity
porosity = 0.1
[]
[fluid]
type = BVFluidProperties
fluid_pressure = pf
temperature = 273
fp = simple_fluid
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
density0 = 1.0
viscosity = 3.636363636363636 # scaled by effective time
bulk_modulus = 8.0
[]
[]
[Preconditioning]
[asm]
type = SMP
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_type
-pc_type
-sub_pc_type
-snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type
-ksp_gmres_restart'
petsc_options_value = 'fgmres
asm
ilu
newtonls 1e-08 1e-10 120 bt
201'
[]
[]
[Postprocessors]
[U]
type = SideAverageValue
boundary = top
outputs = 'csv_t'
variable = disp_y
[]
[P1]
type = PointValue
outputs = 'csv_t'
point = '0.0 0.0 0.0'
variable = pf
[]
[P2]
type = PointValue
outputs = 'csv_t'
point = '0.25 0.0 0.0'
variable = pf
[]
[P3]
type = PointValue
outputs = 'csv_t'
point = '0.5 0.0 0.0'
variable = pf
[]
[P4]
type = PointValue
outputs = 'csv_t'
point = '0.75 0.0 0.0'
variable = pf
[]
[]
[VectorPostprocessors]
[line_pf]
type = LineValueSampler
variable = pf
start_point = '0.0 0.0 0.0'
end_point = '1.0 0.0 0.0'
num_points = 20
sort_by = 'x'
outputs = 'csv_p'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
automatic_scaling = true
start_time = 0
end_time = 10
[TimeStepper]
type = LogConstantDT
first_dt = 0.001
log_dt = 0.022
[]
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[csv_p]
type = CSV
sync_only = true
sync_times = '0.01 0.1 0.5 1.0 2.0'
[]
[csv_t]
type = CSV
[]
[]
(test/tests/elasticity/error_moduli.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 3
ny = 3
nz = 3
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_zz_aux]
type = BVStressComponentAux
variable = stress_zz
index_i = z
index_j = z
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.1
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
shear_modulus = 8.0e+09
poisson_ratio = 0.25
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
dtmin = 0.05
num_steps = 1
[]
[Outputs]
exodus = true
[]
(examples/poroelasticity/terzaghi/terzaghi.i)
# Terzaghi's problem of consolodation of a soil layer
#
# See Arnold Verruijt "Theory and Problems of Poroelasticity" 2015
# Section 2.2 Terzaghi's problem
#
# Time dimension is t = Cv * t / h^2
# Space dimension is z = z / h
[Mesh]
type = GeneratedMesh
dim = 3
nx = 5
ny = 100
nz = 5
xmin = -0.05
xmax = 0.05
ymin = 0
ymax = 1
zmin = -0.05
zmax = 0.05
[]
[Variables]
[pf]
order = FIRST
family = LAGRANGE
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[fluid_time_derivative]
type = BVSinglePhaseTimeDerivative
variable = pf
[]
[darcy]
type = BVSinglePhaseDarcy
variable = pf
[]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
fluid_pressure = pf
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
fluid_pressure = pf
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
fluid_pressure = pf
[]
[]
[BCs]
[confine_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confine_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'front back'
[]
[base_fixed]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[]
[top_load]
type = NeumannBC
variable = disp_y
value = -1
boundary = 'top'
[]
[topdrained]
type = DirichletBC
variable = pf
value = 0
boundary = 'top'
[]
[]
[Materials]
[mechanical]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 4
shear_modulus = 3
[]
[fluid_flow_mat]
type = BVSinglePhaseFlowMaterial
[]
[single_phase_poromech]
type = BVPoroMechanicsMaterial
biot_coefficient = 0.6
[]
[permeability]
type = BVConstantPermeability
permeability = 1.5e-02 # scaled by effective space
[]
[porosity]
type = BVConstantPorosity
porosity = 0.1
[]
[fluid]
type = BVFluidProperties
fluid_pressure = pf
temperature = 273
fp = simple_fluid
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
density0 = 1.0
viscosity = 0.13953488372093023 # scaled by effective time
bulk_modulus = 8.0
[]
[]
[Preconditioning]
[precond]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type'
petsc_options_value = 'fgmres ilu 1e-08 1e-10 100 basic'
[]
[]
[Postprocessors]
[U]
type = PointValue
outputs = 'csv_u'
point = '0 1 0'
variable = disp_y
[]
[]
[VectorPostprocessors]
[line_pf]
type = LineValueSampler
variable = pf
start_point = '0.0 0.0 0.0'
end_point = '0.0 1.0 0.0'
num_points = 100
sort_by = 'y'
outputs = 'csv_p'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
automatic_scaling = true
start_time = 0
end_time = 10
[TimeStepper]
type = LogConstantDT
first_dt = 0.0001
log_dt = 0.022
[]
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[csv_p]
type = CSV
sync_only = true
sync_times = '0.001 0.005 0.01 0.05 0.1 0.2 0.5 1.0'
[]
[csv_u]
type = CSV
[]
[]
(examples/viscoelasticity/lubby2/lubby2.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 20
ny = 20
nz = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 0.1
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[eqv_stress]
order = CONSTANT
family = MONOMIAL
[]
[eqv_strain]
order = CONSTANT
family = MONOMIAL
[]
[eqv_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[Kelvin_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[eqv_stress_aux]
type = BVMisesStressAux
variable = eqv_stress
execute_on = 'TIMESTEP_END'
[]
[eqv_strain_aux]
type = BVEqvStrainAux
variable = eqv_strain
execute_on = 'TIMESTEP_END'
[]
[eqv_strain_rate_aux]
type = BVEqvStrainRateAux
variable = eqv_strain_rate
execute_on = 'TIMESTEP_END'
[]
[Kelvin_creep_strain_aux]
type = ADMaterialRealAux
variable = Kelvin_creep_strain
property = eqv_Kelvin_creep_strain
execute_on = 'TIMESTEP_END'
[]
[strain_yy_aux]
type = BVStrainComponentAux
variable = strain_yy
index_i = y
index_j = y
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
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'front back'
value = 0.0
[]
[BVPressure]
[pressure_right]
boundary = 'right'
displacement_vars = 'disp_x disp_y disp_z'
value = 1.0
[]
[pressure_top]
boundary = 'top'
displacement_vars = 'disp_x disp_y disp_z'
value = -1.0
[]
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1.0
shear_modulus = 2.0
initial_stress = '-1.0 1.0 0.0'
inelastic_models = 'viscoelastic'
[]
[viscoelastic]
type = BVLubby2ModelUpdate
viscosity_maxwell = 10.0
viscosity_kelvin = 1.0
shear_modulus_kelvin = 1.0
sigma_0 = 1.0
m_1 = 0.327
m_2 = 0.267
m_G = 0.254
[]
[]
[Preconditioning]
active = 'hypre'
[hypre]
type = SMP
full = true
petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -pc_hypre_type
-snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type'
petsc_options_value = 'hypre boomeramg
1.0e-10 1.0e-12 0 20
basic'
[]
[]
[Postprocessors]
[e]
type = ElementAverageValue
variable = eqv_strain
outputs = csv
[]
[e_rate]
type = ElementAverageValue
variable = eqv_strain_rate
outputs = csv
[]
[Kelvin_creep]
type = ElementAverageValue
variable = Kelvin_creep_strain
outputs = csv
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 10.0
dt = 0.05
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[csv]
type = CSV
[]
[]
(examples/viscoelasticity/linear_maxwell/linear_maxwell.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 20
ny = 20
nz = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 0.1
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_yy_aux]
type = BVStressComponentAux
variable = stress_yy
index_i = y
index_j = y
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
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'front back'
value = 0.0
[]
[v_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = '-0.5*t'
[]
[v_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '0.5*t'
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1.0
shear_modulus = 1.0
inelastic_models = 'viscoelastic'
[]
[viscoelastic]
type = BVMaxwellViscoelasticUpdate
viscosity = 1.0
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Postprocessors]
[tau]
type = ElementAverageValue
variable = stress_yy
outputs = csv
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 10.0
dt = 0.05
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[csv]
type = CSV
[]
[]
(test/tests/interfaces/constant_friction_3D.i)
[Mesh]
[file]
type = FileMeshGenerator
file = mesh-3D.msh
[]
[fault_gen]
type = BVFaultInterfaceGenerator
input = file
sidesets = 'interface'
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[InterfaceKernels]
[traction_x]
type = BVMechanicalInterface
boundary = 'interface'
component = x
variable = disp_x
neighbor_var = disp_x
[]
[traction_y]
type = BVMechanicalInterface
boundary = 'interface'
component = y
variable = disp_y
neighbor_var = disp_y
[]
[traction_z]
type = BVMechanicalInterface
boundary = 'interface'
component = Z
variable = disp_z
neighbor_var = disp_z
[]
[]
[AuxVariables]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[normal_stress]
order = CONSTANT
family = MONOMIAL
[]
[shear_stress]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[strain_xy_aux]
type = BVStrainComponentAux
variable = strain_xy
index_i = x
index_j = y
execute_on = 'TIMESTEP_END'
[]
[stress_xy_aux]
type = BVStressComponentAux
variable = stress_xy
index_i = x
index_j = y
execute_on = 'TIMESTEP_END'
[]
[stress_yy_aux]
type = BVStressComponentAux
variable = stress_yy
index_i = y
index_j = y
execute_on = 'TIMESTEP_END'
[]
[normal_stress_aux]
type = BVFaultNormalStressAux
variable = normal_stress
boundary = 'interface'
execute_on = 'TIMESTEP_END'
[]
[shear_stress_aux]
type = BVFaultShearStressAux
variable = shear_stress
boundary = 'interface'
execute_on = 'TIMESTEP_END'
[]
[]
[Functions]
[disp_x_func]
type = ParsedFunction
expression = 'm*t*y'
symbol_names = 'm'
symbol_values = '0.1'
[]
[]
[BCs]
[Periodic]
[all]
variable = 'disp_x disp_y disp_z'
auto_direction = 'x z'
[]
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[]
[disp_x_plate]
type = FunctionDirichletBC
variable = disp_x
boundary = 'bottom top'
function = disp_x_func
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'bottom top'
value = 0.0
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
young_modulus = 10.0
poisson_ratio = 0.25
initial_stress = '0.0 1.6 0.0'
[]
[interface]
type = BVMechanicalInterfaceMaterial
boundary = 'interface'
displacements = 'disp_x disp_y disp_z'
normal_stiffness = 1.0e+03
tangent_stiffness = 1.0e+03
friction_model = 'constant_friction'
[]
[constant_friction]
type = BVConstantFrictionUpdate
friction = 0.5
[]
[]
# [Preconditioning]
# [hypre]
# type = SMP
# full = true
# petsc_options_iname = '-pc_type -pc_hypre_type'
# petsc_options_value = 'hypre boomeramg'
# []
# []
[Preconditioning]
[asm]
type = SMP
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_type -ksp_rtol -ksp_max_it
-pc_type
-sub_pc_type
-snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type
-ksp_gmres_restart'
petsc_options_value = 'fgmres 1e-10 100
asm
ilu
newtonls 1e-12 1e-08 100 basic
201'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 4.0
dt = 1.0
[]
[Outputs]
exodus = true
[]
(test/tests/elasticity/uniaxial.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 3
ny = 3
nz = 3
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_zz_aux]
type = BVStressComponentAux
variable = stress_zz
index_i = z
index_j = z
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.1
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 8.0e+09
shear_modulus = 3.5e+09
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
dtmin = 0.05
num_steps = 1
[]
[Outputs]
exodus = true
[]
(examples/poroelasticity/cryer/cryer_fv.i)
# Cryer's problem
#
# See Arnold Verruijt "Theory and Problems of Poroelasticity" 2015
# Section 3.3 Cryer's problem
#
# Time dimension is t = Cv * t / a^2
# Space dimension is x = x / a
[Mesh]
type = FileMesh
file = 'mesh.msh'
[]
[Variables]
[pf]
type = MooseVariableFVReal
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
fluid_pressure = pf
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
fluid_pressure = pf
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
fluid_pressure = pf
[]
[]
[FVKernels]
[fluid_time_derivative]
type = BVFVSinglePhaseTimeDerivative
variable = pf
[]
[darcy]
type = BVFVSinglePhaseDarcy
variable = pf
[]
[]
[BCs]
[confine_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[]
[confine_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'back'
[]
[confine_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'bottom'
[]
[BVPressure]
[out_pressure]
boundary = 'out'
displacement_vars = 'disp_x disp_y disp_z'
value = 1.0
[]
[]
[]
[FVBCs]
[out_drained]
type = FVDirichletBC
variable = pf
value = 0
boundary = 'out'
[]
[]
[Materials]
[mechanical]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1
poisson_ratio = 0.25
[]
[fluid_flow_mat]
type = BVSinglePhaseFlowMaterial
[]
[single_phase_poromech]
type = BVPoroMechanicsMaterial
biot_coefficient = 0.6
[]
[permeability]
type = BVConstantPermeability
permeability = 1.5 # scaled by effective space
[]
[porosity]
type = BVConstantPorosity
porosity = 0.1
[]
[fluid]
type = BVFluidProperties
fluid_pressure = pf
temperature = 273
fp = simple_fluid
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
density0 = 1.0
viscosity = 3.636363636363636 # scaled by effective time
bulk_modulus = 8.0
[]
[]
[Preconditioning]
[asm]
type = SMP
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_type
-pc_type
-sub_pc_type
-snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type
-ksp_gmres_restart'
petsc_options_value = 'fgmres
asm
ilu
newtonls 1e-08 1e-10 200 basic
201'
[]
[]
[Postprocessors]
[Pc]
type = PointValue
outputs = 'csv_t'
point = '0.0 0.0 0.0'
variable = pf
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
automatic_scaling = true
start_time = 0
end_time = 10
[TimeStepper]
type = LogConstantDT
first_dt = 0.0001
log_dt = 0.022
[]
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[csv_t]
type = CSV
[]
[]
(test/tests/viscoelasticity/burger.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 8
ny = 8
nz = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 0.1
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[eqv_stress]
order = CONSTANT
family = MONOMIAL
[]
[eqv_strain]
order = CONSTANT
family = MONOMIAL
[]
[eqv_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[Kelvin_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[eqv_stress_aux]
type = BVMisesStressAux
variable = eqv_stress
execute_on = 'TIMESTEP_END'
[]
[eqv_strain_aux]
type = BVEqvStrainAux
variable = eqv_strain
execute_on = 'TIMESTEP_END'
[]
[eqv_strain_rate_aux]
type = BVEqvStrainRateAux
variable = eqv_strain_rate
execute_on = 'TIMESTEP_END'
[]
[Kelvin_creep_strain_aux]
type = ADMaterialRealAux
variable = Kelvin_creep_strain
property = eqv_Kelvin_creep_strain
execute_on = 'TIMESTEP_END'
[]
[strain_yy_aux]
type = BVStrainComponentAux
variable = strain_yy
index_i = y
index_j = y
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
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'front back'
value = 0.0
[]
[BVPressure]
[pressure_right]
boundary = 'right'
displacement_vars = 'disp_x disp_y disp_z'
value = 1.0
[]
[pressure_top]
boundary = 'top'
displacement_vars = 'disp_x disp_y disp_z'
value = -1.0
[]
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1.0
shear_modulus = 1.0
initial_stress = '-1.0 1.0 0.0'
inelastic_models = 'viscoelastic'
[]
[viscoelastic]
type = BVBurgerModelUpdate
viscosity_maxwell = 10.0
viscosity_kelvin = 1.0
shear_modulus_kelvin = 1.0
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 1.0
dt = 0.1
[]
[Outputs]
exodus = true
[]
(examples/viscoelasticity/burger/burger.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 20
ny = 20
nz = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 0.1
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[eqv_stress]
order = CONSTANT
family = MONOMIAL
[]
[eqv_strain]
order = CONSTANT
family = MONOMIAL
[]
[eqv_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[Kelvin_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[eqv_stress_aux]
type = BVMisesStressAux
variable = eqv_stress
execute_on = 'TIMESTEP_END'
[]
[eqv_strain_aux]
type = BVEqvStrainAux
variable = eqv_strain
execute_on = 'TIMESTEP_END'
[]
[eqv_strain_rate_aux]
type = BVEqvStrainRateAux
variable = eqv_strain_rate
execute_on = 'TIMESTEP_END'
[]
[Kelvin_creep_strain_aux]
type = ADMaterialRealAux
variable = Kelvin_creep_strain
property = eqv_Kelvin_creep_strain
execute_on = 'TIMESTEP_END'
[]
[strain_yy_aux]
type = BVStrainComponentAux
variable = strain_yy
index_i = y
index_j = y
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
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'front back'
value = 0.0
[]
[BVPressure]
[pressure_right]
boundary = 'right'
displacement_vars = 'disp_x disp_y disp_z'
value = 1.0
[]
[pressure_top]
boundary = 'top'
displacement_vars = 'disp_x disp_y disp_z'
value = -1.0
[]
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1.0
shear_modulus = 1.0
initial_stress = '-1.0 1.0 0.0'
inelastic_models = 'viscoelastic'
[]
[viscoelastic]
type = BVBurgerModelUpdate
viscosity_maxwell = 10.0
viscosity_kelvin = 1.0
shear_modulus_kelvin = 1.0
[]
[]
[Preconditioning]
active = 'hypre'
[hypre]
type = SMP
full = true
petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -pc_hypre_type
-snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type'
petsc_options_value = 'hypre boomeramg
1.0e-10 1.0e-12 0 20
basic'
[]
[]
[Postprocessors]
[e]
type = ElementAverageValue
variable = eqv_strain
outputs = csv
[]
[e_rate]
type = ElementAverageValue
variable = eqv_strain_rate
outputs = csv
[]
[Kelvin_creep]
type = ElementAverageValue
variable = Kelvin_creep_strain
outputs = csv
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 10.0
dt = 0.05
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[csv]
type = CSV
[]
[]
(test/tests/interfaces/stick_3D.i)
[Mesh]
[file]
type = FileMeshGenerator
file = mesh-3D.msh
[]
[interface_gen]
type = BVFaultInterfaceGenerator
input = file
sidesets = 'interface'
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[InterfaceKernels]
[traction_x]
type = BVMechanicalInterface
boundary = 'interface'
component = x
variable = disp_x
neighbor_var = disp_x
[]
[traction_y]
type = BVMechanicalInterface
boundary = 'interface'
component = y
variable = disp_y
neighbor_var = disp_y
[]
[traction_z]
type = BVMechanicalInterface
boundary = 'interface'
component = Z
variable = disp_z
neighbor_var = disp_z
[]
[]
[AuxVariables]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[strain_xy_aux]
type = BVStrainComponentAux
variable = strain_xy
index_i = x
index_j = y
execute_on = 'TIMESTEP_END'
[]
[stress_xy_aux]
type = BVStressComponentAux
variable = stress_xy
index_i = x
index_j = y
execute_on = 'TIMESTEP_END'
[]
[]
[Functions]
[disp_x_func]
type = ParsedFunction
expression = 'm*t*y'
symbol_names = 'm'
symbol_values = '0.1'
[]
[]
[BCs]
[Periodic]
[all]
variable = 'disp_x disp_y disp_z'
auto_direction = 'x'
[]
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[]
[disp_x_plate]
type = FunctionDirichletBC
variable = disp_x
boundary = 'bottom top'
function = disp_x_func
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'bottom top'
value = 0.0
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
young_modulus = 10.0e+09
poisson_ratio = 0.25
[]
[interface]
type = BVMechanicalInterfaceMaterial
boundary = 'interface'
displacements = 'disp_x disp_y disp_z'
normal_stiffness = 1.0e+12
tangent_stiffness = 1.0e+12
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 2.0
dt = 1.0
[]
[Outputs]
exodus = true
[]
(test/tests/elasticity/uniaxial_load.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 2
nz = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 0.1
zmin = 0
zmax = 0.1
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_xx_aux]
type = BVStressComponentAux
variable = stress_xx
index_i = x
index_j = x
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[no_x_left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[load_x_right]
type = NeumannBC
variable = disp_x
boundary = right
value = 2.0e+06
[]
[no_y_bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[no_z_back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
young_modulus = 10.0e+09
poisson_ratio = 0.25
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 1.0
dt = 1.0
[]
[Outputs]
exodus = true
[]
(examples/poroelasticity/terzaghi/terzaghi_fv.i)
# Terzaghi's problem of consolodation of a soil layer
#
# See Arnold Verruijt "Theory and Problems of Poroelasticity" 2015
# Section 2.2 Terzaghi's problem
#
# Time dimension is t = Cv * t / h^2
# Space dimension is z = z / h
[Mesh]
type = GeneratedMesh
dim = 3
nx = 5
ny = 100
nz = 5
xmin = -0.05
xmax = 0.05
ymin = 0
ymax = 1
zmin = -0.05
zmax = 0.05
[]
[Variables]
[pf]
type = MooseVariableFVReal
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
fluid_pressure = pf
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
fluid_pressure = pf
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
fluid_pressure = pf
[]
[]
[FVKernels]
[fluid_time_derivative]
type = BVFVSinglePhaseTimeDerivative
variable = pf
[]
[darcy]
type = BVFVSinglePhaseDarcy
variable = pf
[]
[]
[BCs]
[confine_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left right'
[]
[confine_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'front back'
[]
[base_fixed]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[]
[top_load]
type = NeumannBC
variable = disp_y
value = -1
boundary = 'top'
[]
[]
[FVBCs]
[topdrained]
type = FVDirichletBC
variable = pf
value = 0
boundary = 'top'
[]
[]
[Materials]
[mechanical]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 4
shear_modulus = 3
[]
[fluid_flow_mat]
type = BVSinglePhaseFlowMaterial
[]
[single_phase_poromech]
type = BVPoroMechanicsMaterial
biot_coefficient = 0.6
[]
[permeability]
type = BVConstantPermeability
permeability = 1.5e-02 # scaled by effective space
[]
[porosity]
type = BVConstantPorosity
porosity = 0.1
[]
[fluid]
type = BVFluidProperties
fluid_pressure = pf
temperature = 273
fp = simple_fluid
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
density0 = 1.0
viscosity = 0.13953488372093023 # scaled by effective time
bulk_modulus = 8.0
[]
[]
[Preconditioning]
[precond]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type'
petsc_options_value = 'bcgs bjacobi 1e-08 1e-10 100 basic'
[]
[]
[Postprocessors]
[U]
type = PointValue
outputs = 'csv_u'
point = '0 1 0'
variable = disp_y
[]
[]
[VectorPostprocessors]
[line_pf]
type = LineValueSampler
variable = pf
start_point = '0.0 0.0 0.0'
end_point = '0.0 1.0 0.0'
num_points = 100
sort_by = 'y'
outputs = 'csv_p'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
automatic_scaling = true
start_time = 0
end_time = 10
[TimeStepper]
type = LogConstantDT
first_dt = 0.0001
log_dt = 0.022
[]
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[csv_p]
type = CSV
sync_only = true
sync_times = '0.001 0.005 0.01 0.05 0.1 0.2 0.5 1.0'
[]
[csv_u]
type = CSV
[]
[]
(examples/viscoelasticity/linear_kelvin/linear_kelvin.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 20
ny = 20
nz = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 0.1
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[eqv_stress]
order = CONSTANT
family = MONOMIAL
[]
[eqv_strain]
order = CONSTANT
family = MONOMIAL
[]
[eqv_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[eqv_stress_aux]
type = BVMisesStressAux
variable = eqv_stress
execute_on = 'TIMESTEP_END'
[]
[eqv_strain_aux]
type = BVEqvStrainAux
variable = eqv_strain
execute_on = 'TIMESTEP_END'
[]
[eqv_strain_rate_aux]
type = BVEqvStrainRateAux
variable = eqv_strain_rate
execute_on = 'TIMESTEP_END'
[]
[creep_strain_aux]
type = ADMaterialRealAux
variable = creep_strain
property = eqv_creep_strain
execute_on = 'TIMESTEP_END'
[]
[strain_yy_aux]
type = BVStrainComponentAux
variable = strain_yy
index_i = y
index_j = y
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
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'front back'
value = 0.0
[]
[BVPressure]
[pressure_right]
boundary = 'right'
displacement_vars = 'disp_x disp_y disp_z'
value = 1.0
[]
[pressure_top]
boundary = 'top'
displacement_vars = 'disp_x disp_y disp_z'
value = -1.0
[]
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1.0
shear_modulus = 1.0
initial_stress = '-1.0 1.0 0.0'
inelastic_models = 'viscoelastic'
[]
[viscoelastic]
type = BVKelvinViscoelasticUpdate
viscosity = 1.0
shear_modulus = 1.0
[]
[]
[Preconditioning]
active = 'hypre'
[hypre]
type = SMP
full = true
petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason -ksp_diagonal_scale -ksp_diagonal_scale_fix'
petsc_options_iname = '-pc_type -pc_hypre_type
-snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type'
petsc_options_value = 'hypre boomeramg
1.0e-10 1.0e-12 0 20
basic'
[]
[]
[Postprocessors]
[e]
type = ElementAverageValue
variable = eqv_strain
outputs = csv
[]
[e_rate]
type = ElementAverageValue
variable = eqv_strain_rate
outputs = csv
[]
[e_creep]
type = ElementAverageValue
variable = creep_strain
outputs = csv
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 10.0
dt = 0.05
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[csv]
type = CSV
[]
[]
(test/tests/elasticity/triax.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
nx = 4
ny = 4
nz = 8
xmin = -0.25
xmax = 0.25
ymin = -0.25
ymax = 0.25
zmin = 0
zmax = 1
[]
[no_ux]
type = ExtraNodesetGenerator
input = gen
coord = '0.0 -0.25 0.0; 0.0 0.25 0.0'
new_boundary = 'no_disp_x'
[]
[no_uy]
type = ExtraNodesetGenerator
input = no_ux
coord = '-0.25 0.0 0.0; 0.25 0.0 0.0'
new_boundary = 'no_disp_y'
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[pressure]
order = CONSTANT
family = MONOMIAL
[]
[dev_stress]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[strain_zz_aux]
type = BVStrainComponentAux
variable = strain_zz
index_i = z
index_j = z
execute_on = 'TIMESTEP_END'
[]
[stress_zz_aux]
type = BVStressComponentAux
variable = stress_zz
index_i = z
index_j = z
execute_on = 'TIMESTEP_END'
[]
[pressure_aux]
type = BVPressureAux
variable = pressure
execute_on = 'INITIAL TIMESTEP_END'
[]
[dev_stress_aux]
type = BVMisesStressAux
variable = dev_stress
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[BCs]
[BVPressure]
[pressure_conf]
boundary = 'left right bottom top front'
displacement_vars = 'disp_x disp_y'
value = 10.0e+06
[]
[]
[no_x]
type = DirichletBC
variable = disp_x
boundary = 'no_disp_x'
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 'no_disp_y'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0.0
[]
[axial_load]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front'
function = '-1.0e-02*t'
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
young_modulus = 10.0e+09
poisson_ratio = 0.25
initial_stress = '-10.0e+06 -10.0e+06 -10.0e+06'
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type -snes_atol'
petsc_options_value = 'hypre boomeramg 1.0e-12'
[]
[]
[Executioner]
type = Transient
automatic_scaling = true
solve_type = 'NEWTON'
start_time = 0.0
end_time = 2.0
dt = 1.0
[]
[Outputs]
exodus = true
[]
(test/tests/elasticity/shear.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 8
ny = 8
nz = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 10
zmin = 0
zmax = 2.5
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[strain_xy_aux]
type = BVStrainComponentAux
variable = strain_xy
index_i = x
index_j = y
execute_on = 'TIMESTEP_END'
[]
[stress_xy_aux]
type = BVStressComponentAux
variable = stress_xy
index_i = x
index_j = y
execute_on = 'TIMESTEP_END'
[]
[]
[Functions]
[disp_y_func]
type = ParsedFunction
expression = 'm*t*x'
symbol_names = 'm'
symbol_values = '-0.1'
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = 'left right bottom top front back'
value = 0.0
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'left right bottom top front back'
value = 0.0
[]
[disp_y_plate]
type = FunctionDirichletBC
variable = disp_y
boundary = 'left right bottom top front back'
function = disp_y_func
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
young_modulus = 10.0e+09
poisson_ratio = 0.25
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 2.0
dt = 1.0
[]
[Outputs]
exodus = true
[]
(test/tests/viscoelasticity/linear_kelvin.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 8
ny = 8
nz = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 0.1
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[strain_yy_aux]
type = BVStrainComponentAux
variable = strain_yy
index_i = y
index_j = y
execute_on = 'TIMESTEP_END'
[]
[stress_yy_aux]
type = BVStressComponentAux
variable = stress_yy
index_i = y
index_j = y
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
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'front back'
value = 0.0
[]
[BVPressure]
[pressure_right]
boundary = 'right'
displacement_vars = 'disp_x disp_y disp_z'
value = 1.0
[]
[pressure_top]
boundary = 'top'
displacement_vars = 'disp_x disp_y disp_z'
value = -1.0
[]
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1.0
shear_modulus = 1.0
initial_stress = '-1.0 1.0 0.0'
inelastic_models = 'viscoelastic'
[]
[viscoelastic]
type = BVKelvinViscoelasticUpdate
viscosity = 1.0
shear_modulus = 1.0
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 1.0
dt = 0.1
[]
[Outputs]
exodus = true
[]
(test/tests/viscoelasticity/linear_maxwell.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 8
ny = 8
nz = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 0.1
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[strain_yy_aux]
type = BVStrainComponentAux
variable = strain_yy
index_i = y
index_j = y
execute_on = 'TIMESTEP_END'
[]
[stress_yy_aux]
type = BVStressComponentAux
variable = stress_yy
index_i = y
index_j = y
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
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'front back'
value = 0.0
[]
[v_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = '-0.5*t'
[]
[v_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '0.5*t'
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1.0
shear_modulus = 1.0
inelastic_models = 'viscoelastic'
[]
[viscoelastic]
type = BVMaxwellViscoelasticUpdate
viscosity = 1.0
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 1.0
dt = 0.1
[]
[Outputs]
exodus = true
[]
(test/tests/elasticity/stress_state.i)
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = -1
xmax = 1
ymin = -0.5
ymax = 0.5
nx = 20
ny = 10
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[mech_x]
type = BVStressDivergence
variable = disp_x
component = x
[]
[mech_y]
type = BVStressDivergence
variable = disp_y
component = y
[]
[]
[AuxVariables]
# Mechanical ouputs
[pressure]
order = CONSTANT
family = MONOMIAL
[]
[dev_stress]
order = CONSTANT
family = MONOMIAL
[]
[normal_stress]
order = CONSTANT
family = MONOMIAL
[]
[shear_stress]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
# Mechanical outputs
[pressure_aux]
type = BVPressureAux
variable = pressure
execute_on = 'TIMESTEP_END'
[]
[dev_stress_aux]
type = BVMisesStressAux
variable = dev_stress
execute_on = 'TIMESTEP_END'
[]
[normal_stress_aux]
type = BVFaultNormalStressAux
variable = normal_stress
normal = '0 1 0'
execute_on = 'TIMESTEP_END'
[]
[shear_stress_aux]
type = BVFaultShearStressAux
variable = shear_stress
normal = '0 1 0'
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[BVPressure]
[pressure]
boundary = 'top bottom left right'
displacement_vars = 'disp_x disp_y'
value = 2.0
[]
[]
[BVShearTraction]
[shear_stress_bottom_top]
boundary = 'bottom top'
displacement_vars = 'disp_x disp_y'
value = 1.0
[]
[shear_stress_left_right]
boundary = 'left right'
displacement_vars = 'disp_x disp_y'
value = -1.0
[]
[]
[]
[Materials]
[mech_elastic]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y'
bulk_modulus = 33.33e+03
shear_modulus = 20.0e+03
initial_stress = '-2.0 -2.0 -2.0 0.0 0.0 1.0'
[]
[]
[Preconditioning]
active = 'hypre'
[hypre]
type = SMP
full = true
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_hypre_type
-snes_atol -snes_rtol -snes_stol -snes_max_it -snes_linesearch_type'
petsc_options_value = 'hypre boomeramg
1.0e-12 1.0e-12 0 20
basic'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
automatic_scaling = true
start_time = 0.0
end_time = 1.0
dt = 1.0
[]
[Outputs]
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
perf_graph = true
exodus = true
[]
(examples/poroelasticity/mandel/mandel_fv.i)
# Mandel's problem
#
# See Arnold Verruijt "Theory and Problems of Poroelasticity" 2015
# Section 3.2 Mandel's problem
# Cheng and Detournay (1988), A direct boundary element method for plane strain poroelasticity
#
# Time dimension is t = Cv * t / a^2
# Space dimension is x = x / a
[Mesh]
type = GeneratedMesh
dim = 3
nx = 20
ny = 20
nz = 20
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 1.0
[]
[Variables]
[pf]
type = MooseVariableFVReal
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
fluid_pressure = pf
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
fluid_pressure = pf
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
fluid_pressure = pf
[]
[]
[FVKernels]
[fluid_time_derivative]
type = BVFVSinglePhaseTimeDerivative
variable = pf
[]
[darcy]
type = BVFVSinglePhaseDarcy
variable = pf
[]
[]
[BCs]
[confine_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[]
[base_fixed]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'bottom'
[]
[top_load]
type = NeumannBC
variable = disp_y
value = -1
boundary = 'top'
[]
[confine_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'front back'
[]
[]
[FVBCs]
[sides_drained]
type = FVDirichletBC
variable = pf
value = 0
boundary = 'right'
[]
[]
[Materials]
[mechanical]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1
poisson_ratio = 0.25
[]
[fluid_flow_mat]
type = BVSinglePhaseFlowMaterial
[]
[single_phase_poromech]
type = BVPoroMechanicsMaterial
biot_coefficient = 0.6
[]
[permeability]
type = BVConstantPermeability
permeability = 1.5 # scaled by effective space
[]
[porosity]
type = BVConstantPorosity
porosity = 0.1
[]
[fluid]
type = BVFluidProperties
fluid_pressure = pf
temperature = 273
fp = simple_fluid
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
density0 = 1.0
viscosity = 3.636363636363636 # scaled by effective time
bulk_modulus = 8.0
[]
[]
[Preconditioning]
[asm]
type = SMP
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_type
-pc_type
-sub_pc_type
-snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type
-ksp_gmres_restart'
petsc_options_value = 'fgmres
asm
ilu
newtonls 1e-08 1e-10 120 basic
201'
[]
[]
[Postprocessors]
[U]
type = SideAverageValue
boundary = top
outputs = 'csv_t'
variable = disp_y
[]
[P1]
type = PointValue
outputs = 'csv_t'
point = '0.0 0.0 0.0'
variable = pf
[]
[P2]
type = PointValue
outputs = 'csv_t'
point = '0.25 0.0 0.0'
variable = pf
[]
[P3]
type = PointValue
outputs = 'csv_t'
point = '0.5 0.0 0.0'
variable = pf
[]
[P4]
type = PointValue
outputs = 'csv_t'
point = '0.75 0.0 0.0'
variable = pf
[]
[]
[VectorPostprocessors]
[line_pf]
type = LineValueSampler
variable = pf
start_point = '0.0 0.0 0.0'
end_point = '1.0 0.0 0.0'
num_points = 20
sort_by = 'x'
outputs = 'csv_p'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
automatic_scaling = true
start_time = 0
end_time = 10
[TimeStepper]
type = LogConstantDT
first_dt = 0.001
log_dt = 0.022
[]
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[csv_p]
type = CSV
sync_only = true
sync_times = '0.01 0.1 0.5 1.0 2.0'
[]
[csv_t]
type = CSV
[]
[]
(test/tests/interfaces/stick_2D.i)
[Mesh]
[file]
type = FileMeshGenerator
file = mesh-2D.msh
[]
[interface_gen]
type = BVFaultInterfaceGenerator
input = file
sidesets = 'interface'
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[]
[InterfaceKernels]
[traction_x]
type = BVMechanicalInterface
boundary = 'interface'
component = x
variable = disp_x
neighbor_var = disp_x
[]
[traction_y]
type = BVMechanicalInterface
boundary = 'interface'
component = y
variable = disp_y
neighbor_var = disp_y
[]
[]
[AuxVariables]
[strain_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[strain_xy_aux]
type = BVStrainComponentAux
variable = strain_xy
index_i = x
index_j = y
execute_on = 'TIMESTEP_END'
[]
[stress_xy_aux]
type = BVStressComponentAux
variable = stress_xy
index_i = x
index_j = y
execute_on = 'TIMESTEP_END'
[]
[]
[Functions]
[disp_x_func]
type = ParsedFunction
expression = 'm*t*y'
symbol_names = 'm'
symbol_values = '0.1'
[]
[]
[BCs]
[Periodic]
[all]
variable = 'disp_x disp_y'
auto_direction = 'x'
[]
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.0
[]
[disp_x_plate]
type = FunctionDirichletBC
variable = disp_x
boundary = 'bottom top'
function = disp_x_func
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y'
young_modulus = 10.0e+09
poisson_ratio = 0.25
[]
[interface]
type = BVMechanicalInterfaceMaterial
boundary = 'interface'
displacements = 'disp_x disp_y'
normal_stiffness = 1.0e+12
tangent_stiffness = 1.0e+12
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 2.0
dt = 1.0
[]
[Outputs]
exodus = true
[]
(test/tests/viscoelasticity/lubby2.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 8
ny = 8
nz = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
zmin = 0
zmax = 0.1
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
[]
[]
[AuxVariables]
[eqv_stress]
order = CONSTANT
family = MONOMIAL
[]
[eqv_strain]
order = CONSTANT
family = MONOMIAL
[]
[eqv_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[Kelvin_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[eqv_stress_aux]
type = BVMisesStressAux
variable = eqv_stress
execute_on = 'TIMESTEP_END'
[]
[eqv_strain_aux]
type = BVEqvStrainAux
variable = eqv_strain
execute_on = 'TIMESTEP_END'
[]
[eqv_strain_rate_aux]
type = BVEqvStrainRateAux
variable = eqv_strain_rate
execute_on = 'TIMESTEP_END'
[]
[Kelvin_creep_strain_aux]
type = ADMaterialRealAux
variable = Kelvin_creep_strain
property = eqv_Kelvin_creep_strain
execute_on = 'TIMESTEP_END'
[]
[strain_yy_aux]
type = BVStrainComponentAux
variable = strain_yy
index_i = y
index_j = y
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
[]
[no_z]
type = DirichletBC
variable = disp_z
boundary = 'front back'
value = 0.0
[]
[BVPressure]
[pressure_right]
boundary = 'right'
displacement_vars = 'disp_x disp_y disp_z'
value = 1.0
[]
[pressure_top]
boundary = 'top'
displacement_vars = 'disp_x disp_y disp_z'
value = -1.0
[]
[]
[]
[Materials]
[elasticity]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1.0
shear_modulus = 1.0
initial_stress = '-1.0 1.0 0.0'
inelastic_models = 'viscoelastic'
[]
[viscoelastic]
type = BVLubby2ModelUpdate
viscosity_maxwell = 10.0
viscosity_kelvin = 1.0
shear_modulus_kelvin = 1.0
m_1 = 0.327
m_2 = 0.267
m_G = 0.254
[]
[]
[Preconditioning]
[hypre]
type = SMP
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0.0
end_time = 1.0
dt = 0.1
[]
[Outputs]
exodus = true
[]
(examples/poroelasticity/cryer/cryer.i)
# Cryer's problem
#
# See Arnold Verruijt "Theory and Problems of Poroelasticity" 2015
# Section 3.3 Cryer's problem
#
# Time dimension is t = Cv * t / a^2
# Space dimension is x = x / a
[Mesh]
type = FileMesh
file = 'mesh.msh'
[]
[Variables]
[pf]
order = FIRST
family = LAGRANGE
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[fluid_time_derivative]
type = BVSinglePhaseTimeDerivative
variable = pf
[]
[darcy]
type = BVSinglePhaseDarcy
variable = pf
[]
[stress_x]
type = BVStressDivergence
component = x
variable = disp_x
fluid_pressure = pf
[]
[stress_y]
type = BVStressDivergence
component = y
variable = disp_y
fluid_pressure = pf
[]
[stress_z]
type = BVStressDivergence
component = z
variable = disp_z
fluid_pressure = pf
[]
[]
[BCs]
[confine_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = 'left'
[]
[confine_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = 'back'
[]
[confine_z]
type = DirichletBC
variable = disp_z
value = 0
boundary = 'bottom'
[]
[BVPressure]
[out_pressure]
boundary = 'out'
displacement_vars = 'disp_x disp_y disp_z'
value = 1.0
[]
[]
[out_drained]
type = DirichletBC
variable = pf
value = 0
boundary = 'out'
[]
[]
[Materials]
[mechanical]
type = BVMechanicalMaterial
displacements = 'disp_x disp_y disp_z'
bulk_modulus = 1
poisson_ratio = 0.25
[]
[fluid_flow_mat]
type = BVSinglePhaseFlowMaterial
[]
[single_phase_poromech]
type = BVPoroMechanicsMaterial
biot_coefficient = 0.6
[]
[permeability]
type = BVConstantPermeability
permeability = 1.5 # scaled by effective space
[]
[porosity]
type = BVConstantPorosity
porosity = 0.1
[]
[fluid]
type = BVFluidProperties
fluid_pressure = pf
temperature = 273
fp = simple_fluid
[]
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
density0 = 1.0
viscosity = 3.636363636363636 # scaled by effective time
bulk_modulus = 8.0
[]
[]
[Preconditioning]
[asm]
type = SMP
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_type
-pc_type
-sub_pc_type
-snes_type -snes_atol -snes_rtol -snes_max_it -snes_linesearch_type
-ksp_gmres_restart'
petsc_options_value = 'fgmres
asm
ilu
newtonls 1e-08 1e-10 200 basic
201'
[]
[]
[Postprocessors]
[Pc]
type = PointValue
outputs = 'csv_t'
point = '0.0 0.0 0.0'
variable = pf
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
automatic_scaling = true
start_time = 0
end_time = 10
[TimeStepper]
type = LogConstantDT
first_dt = 0.0001
log_dt = 0.022
[]
[]
[Outputs]
perf_graph = true
execute_on = 'TIMESTEP_END'
print_linear_residuals = false
exodus = true
[csv_t]
type = CSV
[]
[]