- variableThe name of the variable that this Kernel operates on
C++ Type:NonlinearVariableName
Description:The name of the variable that this Kernel operates on
InertialForce
Calculates the residual for the interial force () and the contribution of mass dependent Rayleigh damping and HHT time integration scheme ($\eta \cdot M \cdot ((1+\alpha)velq2-\alpha \cdot vel-old) $)
Description
This class computes the inertial force using a consistent mass matrix and also computes the mass proportional Rayleigh damping. More information about the residual calculation and usage can be found at Dynamics. Each InertialForce kernel calculates the force only along one coordinate direction. So, a separate InertialForce input block should be set up for each coordinate direction.
Input Parameters
- accelerationacceleration variable
C++ Type:std::vector
Options:
Description:acceleration variable
- densitydensityName of Material Property that provides the density
Default:density
C++ Type:MaterialPropertyName
Options:
Description:Name of Material Property that provides the density
- betabeta parameter for Newmark Time integration
C++ Type:double
Options:
Description:beta parameter for Newmark Time integration
- eta0Name of material property or a constant real number defining the eta parameter for the Rayleigh damping.
Default:0
C++ Type:MaterialPropertyName
Options:
Description:Name of material property or a constant real number defining the eta parameter for the Rayleigh damping.
- blockThe list of block ids (SubdomainID) that this object will be applied
C++ Type:std::vector
Options:
Description:The list of block ids (SubdomainID) that this object will be applied
- velocityvelocity variable
C++ Type:std::vector
Options:
Description:velocity variable
- alpha0alpha parameter for mass dependent numerical damping induced by HHT time integration scheme
Default:0
C++ Type:double
Options:
Description:alpha parameter for mass dependent numerical damping induced by HHT time integration scheme
- displacementsThe displacements
C++ Type:std::vector
Options:
Description:The displacements
- gammagamma parameter for Newmark Time integration
C++ Type:double
Options:
Description:gamma parameter for Newmark Time integration
Optional Parameters
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
Description:Set the enabled status of the MooseObject.
- save_inThe name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector
Options:
Description:The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- use_displaced_meshTrueWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:True
C++ Type:bool
Options:
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Options:
Description:The seed for the master random number generator
- diag_save_inThe name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector
Options:
Description:The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Options:
Description:Determines whether this object is calculated using an implicit or explicit form
Advanced Parameters
- vector_tagstimeThe tag for the vectors this Kernel should fill
Default:time
C++ Type:MultiMooseEnum
Options:nontime time
Description:The tag for the vectors this Kernel should fill
- extra_vector_tagsThe extra tags for the vectors this Kernel should fill
C++ Type:std::vector
Options:
Description:The extra tags for the vectors this Kernel should fill
- matrix_tagssystem timeThe tag for the matrices this Kernel should fill
Default:system time
C++ Type:MultiMooseEnum
Options:nontime system time
Description:The tag for the matrices this Kernel should fill
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector
Options:
Description:The extra tags for the matrices this Kernel should fill
Tagging Parameters
Input Files
- modules/tensor_mechanics/test/tests/capped_weak_plane/push_and_shear.i
- modules/combined/test/tests/solid_mechanics/Time_integration/Newmark_time_integration/Newmark_test.i
- modules/tensor_mechanics/test/tests/dynamics/time_integration/hht_test_ti.i
- modules/tensor_mechanics/test/tests/dynamics/acceleration_bc/AccelerationBC_test.i
- modules/tensor_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement_with_gravity.i
- modules/tensor_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement.i
- modules/combined/test/tests/solid_mechanics/Rayleigh_damping/Newmark_time_integration/Rayleigh_Newmark.i
- modules/tensor_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_newmark_material_dependent.i
- modules/combined/test/tests/solid_mechanics/HHT_time_integrator/one_element_b_0_3025_g_0_6_cubic.i
- modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_newmark.i
- modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_newmark.i
- modules/tensor_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_hht_ti.i
- modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_hht.i
- modules/combined/test/tests/solid_mechanics/Wave_1_D/Rayleigh_Newmark/wave_bc_1d.i
- modules/tensor_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_hht.i
- modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_hht.i
- modules/tensor_mechanics/test/tests/dynamics/time_integration/newmark_test.i
- modules/tensor_mechanics/test/tests/dynamics/acceleration_bc/AccelerationBC_test_ti.i
- modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_hht_ti.i
- modules/combined/test/tests/solid_mechanics/Rayleigh_damping/HHT_time_integration/Rayleigh_HHT.i
- modules/combined/test/tests/solid_mechanics/Wave_1_D/HHT_time_integration/wave_bc_1d.i
- modules/combined/test/tests/solid_mechanics/Wave_1_D/Rayleigh_HHT/wave_bc_1d.i
- modules/tensor_mechanics/test/tests/dynamics/time_integration/hht_test.i
- modules/combined/test/tests/solid_mechanics/Time_integration/HHT_time_integration/HHT_test.i
- modules/combined/test/tests/solid_mechanics/Wave_1_D/Newmark_time_integration/wave_bc_1d.i
- modules/tensor_mechanics/test/tests/capped_weak_plane/pull_and_shear.i
- modules/tensor_mechanics/test/tests/dynamics/prescribed_displacement/3D_QStatic_1_Ramped_Displacement_ti.i
- modules/tensor_mechanics/test/tests/dynamics/rayleigh_damping/rayleigh_newmark.i
modules/tensor_mechanics/test/tests/capped_weak_plane/push_and_shear.i
# Dynamic problem with plasticity.
# A column of material (not subject to gravity) has the z-displacement
# of its sides fixed, but the centre of its bottom side is pushed
# upwards. This causes failure in the bottom elements.
#
# The problem utilises damping in the following way.
# The DynamicStressDivergenceTensors forms the residual
# integral grad(stress) + zeta*grad(stress-dot)
# = V/L * elasticity * (du/dx + zeta * dv/dx)
# where V is the elemental volume, and L is the length-scale,
# and u is the displacement, and v is the velocity.
# The InertialForce forms the residual
# integral density * (accel + eta * velocity)
# = V * density * (a + eta * v)
# where a is the acceleration.
# So, a damped oscillator description with both these
# kernels looks like
# 0 = V * (density * a + density * eta * v + elasticity * zeta * v / L^2 + elasticity / L^2 * u)
# Critical damping is when the coefficient of v is
# 2 * sqrt(density * elasticity / L^2)
# In the case at hand, density=1E4, elasticity~1E10 (Young is 16GPa),
# L~1 to 10 (in the horizontal or vertical direction), so this coefficient ~ 1E7 to 1E6.
# Choosing eta = 1E3 and zeta = 1E-2 gives approximate critical damping.
# If zeta is high then steady-state is achieved very quickly.
#
# In the case of plasticity, the effective stiffness of the elements
# is significantly less. Therefore, the above parameters give
# overdamping.
#
# This simulation is a nice example of the irreversable and non-uniqueness
# of simulations involving plasticity. The result depends on the damping
# parameters and the time stepping.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 1
nz = 5
bias_z = 1.5
xmin = -10
xmax = 10
ymin = -10
ymax = 10
zmin = -100
zmax = 0
[]
[MeshModifiers]
[./bottomz_middle]
type = BoundingBoxNodeSet
new_boundary = bottomz_middle
bottom_left = '-1 -1500 -105'
top_right = '1 1500 -95'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
beta = 0.25 # Newmark time integration
gamma = 0.5 # Newmark time integration
eta = 1E3 #0.3E4 # higher values mean more damping via density
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./DynamicTensorMechanics] # zeta*K*vel + K * disp
displacements = 'disp_x disp_y disp_z'
zeta = 1E-2 # higher values mean more damping via stiffness
alpha = 0 # better nonlinear convergence than for alpha>0
[../]
[./inertia_x] # M*accel + eta*M*vel
type = InertialForce
use_displaced_mesh = false
variable = disp_x
velocity = vel_x
acceleration = accel_x
[../]
[./inertia_y]
type = InertialForce
use_displaced_mesh = false
variable = disp_y
velocity = vel_y
acceleration = accel_y
[../]
[./inertia_z]
type = InertialForce
use_displaced_mesh = false
variable = disp_z
velocity = vel_z
acceleration = accel_z
[../]
[]
[BCs]
[./no_x2]
type = PresetBC
variable = disp_x
boundary = right
value = 0.0
[../]
[./no_x1]
type = PresetBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_y1]
type = PresetBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./no_y2]
type = PresetBC
variable = disp_y
boundary = top
value = 0.0
[../]
[./z_fixed_sides_xmin]
type = PresetBC
variable = disp_z
boundary = left
value = 0
[../]
[./z_fixed_sides_xmax]
type = PresetBC
variable = disp_z
boundary = right
value = 0
[../]
[./bottomz]
type = FunctionPresetBC
variable = disp_z
boundary = bottomz_middle
function = min(10*t,1)
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[./accel_y]
[../]
[./vel_y]
[../]
[./accel_z]
[../]
[./vel_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./accel_x] # Calculates and stores acceleration at the end of time step
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
execute_on = timestep_end
[../]
[./vel_x] # Calculates and stores velocity at the end of the time step
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
execute_on = timestep_end
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[UserObjects]
[./coh]
type = TensorMechanicsHardeningConstant
value = 1E6
[../]
[./tanphi]
type = TensorMechanicsHardeningConstant
value = 0.5
[../]
[./tanpsi]
type = TensorMechanicsHardeningConstant
value = 0.166666666667
[../]
[./t_strength]
type = TensorMechanicsHardeningConstant
value = 1E80
[../]
[./c_strength]
type = TensorMechanicsHardeningConstant
value = 0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '6.4E9 6.4E9' # young 16MPa, Poisson 0.25
[../]
[./strain]
type = ComputeIncrementalSmallStrain
[../]
[./admissible]
type = ComputeMultipleInelasticStress
inelastic_models = stress
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakPlaneStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 0.5E6
smoothing_tol = 0.5E6
yield_function_tol = 1E-2
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 1E4
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[../]
[]
[Executioner]
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
line_search = bt
nl_abs_tol = 1E1
nl_rel_tol = 1e-5
l_tol = 1E-10
l_max_its = 100
nl_max_its = 100
end_time = 0.5
dt = 0.1
type = Transient
[]
[Outputs]
file_base = push_and_shear
exodus = true
csv = true
[]
modules/combined/test/tests/solid_mechanics/Time_integration/Newmark_time_integration/Newmark_test.i
# Test for Newmark time integration
#
# The test is for an 1-D 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 StressDivergence
# Kernel The residual due to Pressure is evaluated using Pressure
# boundary condition
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[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]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25
gamma = 0.5
[../]
[./stiffness_x]
type = StressDivergence
variable = disp_x
component = 0
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
[../]
[./stiffness_y]
type = StressDivergence
variable = disp_y
component = 1
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
[../]
[./stiffness_z]
type = StressDivergence
variable = disp_z
component = 2
[../]
[]
[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 = MaterialTensorAux
variable = stress_yy
tensor = stress
index = 1
[../]
[./strain_yy]
type = MaterialTensorAux
variable = strain_yy
tensor = total_strain
index = 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
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
factor = 1
[../]
[../]
[]
[Materials]
[./constant]
type = Elastic
block = 0
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 210e+09
poissons_ratio = 0
thermal_expansion = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '7750'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dtmax = 0.1
dtmin = 0.1
[./TimeStepper]
type = ConstantDT
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
[../]
[./vel_ic]
type = PiecewiseLinear
x = '0.0 0.5 1.0'
y = '0.1 0.1 0.1'
scale_factor = 1
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp]
type = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
variable = accel_y
boundary = bottom
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
[../]
[]
[Outputs]
exodus = 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'
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
disp_x = disp_x
disp_y = disp_y
disp_z = 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 = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
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/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/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'
zeta = 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 = PresetBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./anchor_y]
type = PresetBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./anchor_z]
type = PresetBC
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/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'
zeta = 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 = PresetBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./anchor_y]
type = PresetBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./anchor_z]
type = PresetBC
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/combined/test/tests/solid_mechanics/Rayleigh_damping/Newmark_time_integration/Rayleigh_Newmark.i
# Test for rayleigh damping implemented using Newmark time integration
# The test is for an 1-D 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 ise
# evaluated using the StressDivergence 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.
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[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]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25
gamma = 0.5
eta=0.1
[../]
[./stiffness_x]
type = StressDivergence
variable = disp_x
component = 0
zeta = 0.1
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
eta=0.1
[../]
[./stiffness_y]
type = StressDivergence
variable = disp_y
component = 1
zeta = 0.1
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
eta = 0.1
[../]
[./stiffness_z]
type = StressDivergence
variable = disp_z
component = 2
zeta = 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 = MaterialTensorAux
variable = stress_yy
tensor = stress
index = 1
[../]
[./strain_yy]
type = MaterialTensorAux
variable = strain_yy
tensor = total_strain
index = 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
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
factor = 1
[../]
[../]
[]
[Materials]
[./constant]
type = Elastic
block = 0
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 210e+09
poissons_ratio = 0
thermal_expansion = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '7750'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dtmax = 0.1
dtmin = 0.1
[./TimeStepper]
type = ConstantDT
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
[../]
[./vel_ic]
type = PiecewiseLinear
x = '0.0 0.5 1.0'
y = '0.1 0.1 0.1'
scale_factor = 1
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp]
type = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
variable = accel_y
boundary = bottom
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
[../]
[]
[Outputs]
exodus = 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'
zeta = '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 = 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
disp_x = disp_x
disp_y = disp_y
disp_z = 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 = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
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/combined/test/tests/solid_mechanics/HHT_time_integrator/one_element_b_0_3025_g_0_6_cubic.i
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
file = one_element.e
# displacements = 'disp_x disp_y disp_z'
[]
#[Problem]
# type = ReferenceResidualProblem
# solution_variables = 'disp_x disp_y disp_z'
# reference_residual_variables = 'saved_x saved_y saved_z'
#[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./vel_y]
[../]
[./vel_z]
[../]
[./accel_x]
[../]
[./accel_y]
[../]
[./accel_z]
[../]
# [./saved_x]
# [../]
# [./saved_y]
# [../]
# [./saved_z]
# [../]
[]
[SolidMechanics]
[./solid]
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
# save_in_disp_x = saved_x
# save_in_disp_y = saved_y
# save_in_disp_z = saved_z
[../]
[]
[Kernels]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.3025
gamma = 0.6
# save_in = saved_x
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.3025
gamma = 0.6
# save_in = saved_y
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.3025
gamma = 0.6
# save_in = saved_z
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.3025
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.3025
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_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.6
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.6
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.6
execute_on = timestep_end
[../]
[]
[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
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = 2
value = 0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = pull
[../]
[]
[Materials]
[./constant]
type = Elastic
block = 1
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 1.26e6
poissons_ratio = .33
thermal_expansion = 1e-5
[../]
[./density]
type = GenericConstantMaterial
block = 1
prop_names = 'density'
prop_values = '0.00023832'
[../]
[]
[Executioner]
# type = Transient
# #Preconditioned JFNK (default)
# solve_type = 'PJFNK'
# nl_rel_tol = 1e-10
# l_tol = 1e-3
# l_max_its = 100
# dt = 2e-6
# end_time = 2e-5
type = Transient
# PETSC options
#Preconditioned JFNK (default)
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 4'
line_search = 'none'
# controls for linear iterations
# l_max_its = 80
# l_tol = 8e-3
# controls for nonlinear iterations
# nl_max_its = 10
# nl_rel_tol = 1e-4
# nl_abs_tol = 1e-7
# time control
# Time steps set up to match halden data
start_time = 0
end_time = 1
# num_steps = 5000
dtmax = 0.1
dtmin = 0.1
# control for adaptive time steping
[./TimeStepper]
type = ConstantDT
dt = 0.1
# optimal_iterations = 12
# linear_iteration_ratio = 100
# time_t = '-100 0' # direct control of time steps vs time (optional)
# time_dt = '100 900'
[../]
# [./Quadrature]
# order = THIRD
# [../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0'
y = '0.0 0.000167 0.00133 0.0045 0.010667 0.020833 0.036 0.057167 0.0853 0.1215 0.16667'
scale_factor = 1
# type = PiecewiseLinear
# data_file = wave_one_element.csv
# format = columns
[../]
[]
[Postprocessors]
# [./ref_resid_x]
# type = NodalL2Norm
# execute_on = timestep_end
# variable = saved_x
# [../]
# [./ref_resid_y]
# type = NodalL2Norm
# execute_on = timestep_end
# variable = saved_y
# [../]
# [./ref_resid_z]
# type = NodalL2Norm
# execute_on = timestep_end
# variable = saved_z
# [../]
# [./nonlinear_its]
# type = NumNonlinearIterations
# []
[./_dt]
type = TimestepSize
[../]
[./nonlinear_its]
type = NumNonlinearIterations
# [../]
# [./disp_8]
# type =
[../]
[]
[Outputs]
file_base = one_element_b_0_3025_g_0_6_cubic_out
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'
zeta = 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 = FunctionPresetBC
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/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 = FunctionPresetBC
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/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'
zeta = 0.1
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 = 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
disp_x = disp_x
disp_y = disp_y
disp_z = 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 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 = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
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/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
[]
[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'
alpha = -0.3
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.3025
gamma = 0.6
alpha = -0.3
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.3025
gamma = 0.6
alpha = -0.3
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.3025
gamma = 0.6
alpha = -0.3
[../]
[]
[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
[../]
[]
[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 = FunctionPresetBC
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 = 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/combined/test/tests/solid_mechanics/Wave_1_D/Rayleigh_Newmark/wave_bc_1d.i
# Wave propogation in 1-D using Newmark time integration in the
# presence of Rayleigh damping
#
# The test is for an 1-D 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
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[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
[../]
[]
[SolidMechanics]
[./solid]
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
zeta = 0.1
[../]
[]
[Kernels]
[./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
[../]
[]
[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 = FunctionPresetBC
variable = disp_y
boundary = bottom
function = displacement_bc
[../]
[]
[Materials]
[./constant]
type = Elastic
block = 0
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 1
poissons_ratio = 0
thermal_expansion = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 6.0
dtmax = 0.1
dtmin = 0.1
# l_tol = 1e-8
# nl_rel_tol = 1e-8
[./TimeStepper]
type = ConstantDT
dt = 0.1
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.001 1 0.001 0.0 0.0'
scale_factor = 7750
[../]
[./displacement_ic]
type = PiecewiseLinear
axis = y
x = '0.0 0.3 0.4 0.5 0.6 0.7 1.0'
y = '0.0 0.0 0.0001 1.0 0.0001 0.0 0.0'
scale_factor = 0.1
[../]
[./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
print_linear_residuals = true
perf_graph = true
[]
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
[]
[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'
zeta = 0.1
alpha = 0.11
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25
gamma = 0.5
eta=0.1
alpha = 0.11
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
eta=0.1
alpha = 0.11
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
eta = 0.1
alpha = 0.11
[../]
[]
[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
disp_x = disp_x
disp_y = disp_y
disp_z = 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
[]
[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 = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
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/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'
alpha = -0.3
zeta = 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 = FunctionPresetBC
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/newmark_test.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
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]
[./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 = 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
disp_x = disp_x
disp_y = disp_y
disp_z = 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'
[../]
[]
[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 = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
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/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/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'
alpha = -0.3
zeta = 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 = FunctionPresetBC
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/combined/test/tests/solid_mechanics/Rayleigh_damping/HHT_time_integration/Rayleigh_HHT.i
# Test for rayleigh damping implemented using HHT time integration
#
# The test is for an 1-D 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 StressDivergence 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.
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[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]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25
gamma = 0.5
eta=0.1
[../]
[./stiffness_x]
type = StressDivergence
variable = disp_x
component = 0
zeta = 0.1
alpha = 0.11
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
eta=0.1
[../]
[./stiffness_y]
type = StressDivergence
variable = disp_y
component = 1
zeta = 0.1
alpha = 0.11
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
eta = 0.1
[../]
[./stiffness_z]
type = StressDivergence
variable = disp_z
component = 2
zeta = 0.1
alpha = 0.11
[../]
[]
[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 = MaterialTensorAux
variable = stress_yy
tensor = stress
index = 1
[../]
[./strain_yy]
type = MaterialTensorAux
variable = strain_yy
tensor = total_strain
index = 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
[../]
[./Pressure]
[./Side1]
boundary = bottom
function = pressure
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
factor = 1
alpha = 0.11
[../]
[../]
[]
[Materials]
[./constant]
type = Elastic
block = 0
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 210e+09
poissons_ratio = 0
thermal_expansion = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '7750'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dtmax = 0.1
dtmin = 0.1
[./TimeStepper]
type = ConstantDT
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
[../]
[./vel_ic]
type = PiecewiseLinear
x = '0.0 0.5 1.0'
y = '0.1 0.1 0.1'
scale_factor = 1
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp]
type = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
variable = accel_y
boundary = bottom
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
[../]
[]
[Outputs]
exodus = true
[]
modules/combined/test/tests/solid_mechanics/Wave_1_D/HHT_time_integration/wave_bc_1d.i
# Wave propogation in 1-D using HHT time integration
#
# The test is for an 1-D 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.
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[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
[../]
[]
[SolidMechanics]
[./solid]
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
alpha = -0.3
[../]
[]
[Kernels]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.3025
gamma = 0.6
alpha = -0.3
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.3025
gamma = 0.6
alpha = -0.3
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.3025
gamma = 0.6
alpha = -0.3
[../]
[]
[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
[../]
[]
[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 = FunctionPresetBC
variable = disp_y
boundary = bottom
function = displacement_bc
[../]
[]
[Materials]
[./constant]
type = Elastic
block = 0
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 1
poissons_ratio = 0
thermal_expansion = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 6.0
dtmax = 0.1
dtmin = 0.1
l_tol = 1e-8
nl_rel_tol = 1e-8
[./TimeStepper]
type = ConstantDT
dt = 0.1
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.001 1 0.001 0.0 0.0'
scale_factor = 7750
[../]
[./displacement_ic]
type = PiecewiseLinear
axis = y
x = '0.0 0.3 0.4 0.5 0.6 0.7 1.0'
y = '0.0 0.0 0.0001 1.0 0.0001 0.0 0.0'
scale_factor = 0.1
[../]
[./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
csv = true
perf_graph = true
[]
modules/combined/test/tests/solid_mechanics/Wave_1_D/Rayleigh_HHT/wave_bc_1d.i
# Wave propogation in 1-D using HHT time integration in the presence
# of Rayleigh damping
#
# The test is for an 1-D 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.
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[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
[../]
[]
[SolidMechanics]
[./solid]
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
zeta = 0.1
alpha = -0.3
[../]
[]
[Kernels]
[./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 = FunctionPresetBC
variable = disp_y
boundary = bottom
function = displacement_bc
[../]
[]
[Materials]
[./constant]
type = Elastic
block = 0
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 1
poissons_ratio = 0
thermal_expansion = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 6.0
dtmax = 0.1
dtmin = 0.1
l_tol = 1e-8
nl_rel_tol = 1e-8
[./TimeStepper]
type = ConstantDT
dt = 0.1
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.001 1 0.001 0.0 0.0'
scale_factor = 7750
[../]
[./displacement_ic]
type = PiecewiseLinear
axis = y
x = '0.0 0.3 0.4 0.5 0.6 0.7 1.0'
y = '0.0 0.0 0.0001 1.0 0.0001 0.0 0.0'
scale_factor = 0.1
[../]
[./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
csv = true
print_linear_residuals = true
perf_graph = 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'
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
disp_x = disp_x
disp_y = disp_y
disp_z = 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
[]
[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 = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
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/solid_mechanics/Time_integration/HHT_time_integration/HHT_test.i
# Test for HHT time integration
# The test is for an 1-D 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 is evaluated
# using the StressDivergence 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.
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[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]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.25
gamma = 0.5
[../]
[./stiffness_x]
type = StressDivergence
variable = disp_x
component = 0
alpha = 0.11
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.25
gamma = 0.5
[../]
[./stiffness_y]
type = StressDivergence
variable = disp_y
component = 1
alpha = 0.11
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.25
gamma = 0.5
[../]
[./stiffness_z]
type = StressDivergence
variable = disp_z
component = 2
alpha = 0.11
[../]
[]
[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 = MaterialTensorAux
variable = stress_yy
tensor = stress
index = 1
[../]
[./strain_yy]
type = MaterialTensorAux
variable = strain_yy
tensor = total_strain
index = 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
[../]
[./Pressure]
[./Side1]
boundary = bottom
function = pressure
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
factor = 1
alpha = 0.11
[../]
[../]
[]
[Materials]
[./constant]
type = Elastic
block = 0
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 210e+09
poissons_ratio = 0
thermal_expansion = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '7750'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 2
dtmax = 0.1
dtmin = 0.1
[./TimeStepper]
type = ConstantDT
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
[../]
[./vel_ic]
type = PiecewiseLinear
x = '0.0 0.5 1.0'
y = '0.1 0.1 0.1'
scale_factor = 1
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp]
type = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
variable = accel_y
boundary = bottom
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
[../]
[]
[Outputs]
exodus = true
[]
modules/combined/test/tests/solid_mechanics/Wave_1_D/Newmark_time_integration/wave_bc_1d.i
# Wave propogation in 1-D using Newmark time integration
#
# The test is for an 1-D 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
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[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]
[../]
[]
[SolidMechanics]
[./solid]
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
alpha = 0.0
zeta = 0.0
[../]
[]
[Kernels]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.3025
gamma = 0.6
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.3025
gamma = 0.6
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.3025
gamma = 0.6
[../]
[]
[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
[../]
[]
[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 = FunctionPresetBC
variable = disp_y
boundary = bottom
function = displacement_bc
[../]
[]
[Materials]
[./constant]
type = Elastic
block = 0
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 1.0
poissons_ratio = 0.0
thermal_expansion = 0.0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1'
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 6.0
dtmax = 0.1
dtmin = 0.1
l_tol = 1e-12
nl_rel_tol = 1e-12
[./TimeStepper]
type = ConstantDT
dt = 0.1
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0.0 0.1 0.2 1.0 2.0 5.0'
y = '0.0 0.001 1 0.001 0.0 0.0'
scale_factor = 7750
[../]
[./displacement_ic]
type = PiecewiseLinear
axis = y
x = '0.0 0.3 0.4 0.5 0.6 0.7 1.0'
y = '0.0 0.0 0.0001 1.0 0.0001 0.0 0.0'
scale_factor = 0.1
[../]
[./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
print_linear_residuals = true
perf_graph = true
[]
modules/tensor_mechanics/test/tests/capped_weak_plane/pull_and_shear.i
# Dynamic problem with plasticity.
# A column of material (not subject to gravity) has the z-displacement
# of its sides fixed, but the centre of its bottom side is pulled
# downwards. This causes failure in the bottom elements.
#
# The problem utilises damping in the following way.
# The DynamicStressDivergenceTensors forms the residual
# integral grad(stress) + zeta*grad(stress-dot)
# = V/L * elasticity * (du/dx + zeta * dv/dx)
# where V is the elemental volume, and L is the length-scale,
# and u is the displacement, and v is the velocity.
# The InertialForce forms the residual
# integral density * (accel + eta * velocity)
# = V * density * (a + eta * v)
# where a is the acceleration.
# So, a damped oscillator description with both these
# kernels looks like
# 0 = V * (density * a + density * eta * v + elasticity * zeta * v / L^2 + elasticity / L^2 * u)
# Critical damping is when the coefficient of v is
# 2 * sqrt(density * elasticity / L^2)
# In the case at hand, density=1E4, elasticity~1E10 (Young is 16GPa),
# L~1 to 10 (in the horizontal or vertical direction), so this coefficient ~ 1E7 to 1E6.
# Choosing eta = 1E3 and zeta = 1E-2 gives approximate critical damping.
# If zeta is high then steady-state is achieved very quickly.
#
# In the case of plasticity, the effective stiffness of the elements
# is significantly less. Therefore, the above parameters give
# overdamping.
#
# This simulation is a nice example of the irreversable and non-uniqueness
# of simulations involving plasticity. The result depends on the damping
# parameters and the time stepping.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 1
nz = 5
bias_z = 1.5
xmin = -10
xmax = 10
ymin = -10
ymax = 10
zmin = -100
zmax = 0
[]
[MeshModifiers]
[./bottomz_middle]
type = BoundingBoxNodeSet
new_boundary = bottomz_middle
bottom_left = '-1 -1500 -105'
top_right = '1 1500 -95'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
beta = 0.25 # Newmark time integration
gamma = 0.5 # Newmark time integration
eta = 1E3 #0.3E4 # higher values mean more damping via density
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./DynamicTensorMechanics] # zeta*K*vel + K * disp
zeta = 1E-2 # higher values mean more damping via stiffness
alpha = 0 # better nonlinear convergence than for alpha>0
[../]
[./inertia_x] # M*accel + eta*M*vel
type = InertialForce
use_displaced_mesh = false
variable = disp_x
velocity = vel_x
acceleration = accel_x
[../]
[./inertia_y]
type = InertialForce
use_displaced_mesh = false
variable = disp_y
velocity = vel_y
acceleration = accel_y
[../]
[./inertia_z]
type = InertialForce
use_displaced_mesh = false
variable = disp_z
velocity = vel_z
acceleration = accel_z
[../]
[]
[BCs]
[./no_x2]
type = PresetBC
variable = disp_x
boundary = right
value = 0.0
[../]
[./no_x1]
type = PresetBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_y1]
type = PresetBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./no_y2]
type = PresetBC
variable = disp_y
boundary = top
value = 0.0
[../]
[./z_fixed_sides_xmin]
type = PresetBC
variable = disp_z
boundary = left
value = 0
[../]
[./z_fixed_sides_xmax]
type = PresetBC
variable = disp_z
boundary = right
value = 0
[../]
[./bottomz]
type = FunctionPresetBC
variable = disp_z
boundary = bottomz_middle
function = max(-10*t,-10)
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[./accel_y]
[../]
[./vel_y]
[../]
[./accel_z]
[../]
[./vel_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./strainp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./straint_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./f_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./f_compressive]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_shear]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl_tensile]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[./ls]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./accel_x] # Calculates and stores acceleration at the end of time step
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
execute_on = timestep_end
[../]
[./vel_x] # Calculates and stores velocity at the end of the time step
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
execute_on = timestep_end
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./strainp_xx]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xx
index_i = 0
index_j = 0
[../]
[./strainp_xy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xy
index_i = 0
index_j = 1
[../]
[./strainp_xz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_xz
index_i = 0
index_j = 2
[../]
[./strainp_yy]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yy
index_i = 1
index_j = 1
[../]
[./strainp_yz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_yz
index_i = 1
index_j = 2
[../]
[./strainp_zz]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = strainp_zz
index_i = 2
index_j = 2
[../]
[./straint_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xx
index_i = 0
index_j = 0
[../]
[./straint_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xy
index_i = 0
index_j = 1
[../]
[./straint_xz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_xz
index_i = 0
index_j = 2
[../]
[./straint_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yy
index_i = 1
index_j = 1
[../]
[./straint_yz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_yz
index_i = 1
index_j = 2
[../]
[./straint_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = straint_zz
index_i = 2
index_j = 2
[../]
[./f_shear]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f_shear
[../]
[./f_tensile]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f_tensile
[../]
[./f_compressive]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f_compressive
[../]
[./intnl_shear]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = intnl_shear
[../]
[./intnl_tensile]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 1
variable = intnl_tensile
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[./ls]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = ls
[../]
[]
[UserObjects]
[./coh]
type = TensorMechanicsHardeningConstant
value = 1E6
[../]
[./tanphi]
type = TensorMechanicsHardeningConstant
value = 0.5
[../]
[./tanpsi]
type = TensorMechanicsHardeningConstant
value = 0.166666666667
[../]
[./t_strength]
type = TensorMechanicsHardeningConstant
value = 0
[../]
[./c_strength]
type = TensorMechanicsHardeningConstant
value = 1E80
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '6.4E9 6.4E9' # young 16MPa, Poisson 0.25
[../]
[./strain]
type = ComputeIncrementalSmallStrain
[../]
[./admissible]
type = ComputeMultipleInelasticStress
inelastic_models = stress
perform_finite_strain_rotations = false
[../]
[./stress]
type = CappedWeakPlaneStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 1E6
smoothing_tol = 0.5E6
yield_function_tol = 1E-2
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 1E4
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options = '-snes_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
[../]
[]
[Executioner]
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
line_search = bt
nl_abs_tol = 1E1
nl_rel_tol = 1e-5
l_tol = 1E-10
l_max_its = 100
nl_max_its = 100
num_steps = 8
dt = 0.1
type = Transient
[]
[Outputs]
file_base = pull_and_shear
exodus = true
csv = true
[]
modules/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'
zeta = 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 = PresetBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./anchor_y]
type = PresetBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./anchor_z]
type = PresetBC
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/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'
zeta = 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 = 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
disp_x = disp_x
disp_y = disp_y
disp_z = 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'
[../]
[]
[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 = NodalMaxValue
variable = disp_y
boundary = bottom
[../]
[./vel]
type = NodalMaxValue
variable = vel_y
boundary = bottom
[../]
[./accel]
type = NodalMaxValue
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
[]