- functionThe forcing function
C++ Type:FunctionName
Controllable:No
Description:The forcing function
- variableThe name of the variable that this residual object operates on
C++ Type:NonlinearVariableName
Controllable:No
Description:The name of the variable that this residual object operates on
UserForcingFunctionNodalKernel
Residual contribution to an ODE from a source function acting at nodes.
The forcing function is a space and time dependent Function.
The contribution to the Jacobian from this nodal kernel is 0, as the function is deemed to not have any dependence on nonlinear variables, as functions generally do not.
Example input syntax
In this example, the nodal scalar variable v
, which lives independently on each node, is the solution to the following equation:
The time dependent term on the right is specified using a UserForcingFunctionNodalKernel
.
[NodalKernels]
[./td]
type = TimeDerivativeNodalKernel
variable = v
[../]
[./f]
type = UserForcingFunctionNodalKernel
variable = v
function = t*t*t+4
[../]
[]
(test/tests/nodalkernels/high_order_time_integration/high_order_time_integration.i)Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
Optional Parameters
- absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution
C++ Type:std::vector<TagName>
Controllable:No
Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector<TagName>
Controllable:No
Description:The extra tags for the matrices this Kernel should fill
- extra_vector_tagsThe extra tags for the vectors this Kernel should fill
C++ Type:std::vector<TagName>
Controllable:No
Description:The extra tags for the vectors this Kernel should fill
- matrix_tagssystemThe tag for the matrices this Kernel should fill
Default:system
C++ Type:MultiMooseEnum
Options:nontime, system
Controllable:No
Description:The tag for the matrices this Kernel should fill
- vector_tagsnontimeThe tag for the vectors this Kernel should fill
Default:nontime
C++ Type:MultiMooseEnum
Options:nontime, time
Controllable:No
Description:The tag for the vectors this Kernel should fill
Tagging Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- diag_save_inThe name of auxiliary variables to save this BC'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<AuxVariableName>
Controllable:No
Description:The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- save_inThe name of auxiliary variables to save this BC'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<AuxVariableName>
Controllable:No
Description:The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
Input Files
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass_inertia_damping.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass_inertia_damping_ti.i)
- (modules/solid_mechanics/test/tests/beam/static_vm/ansys_vm2.i)
- (modules/solid_mechanics/test/tests/beam/static/euler_finite_rot_y.i)
- (modules/solid_mechanics/test/tests/central_difference/lumped/1D/1d_lumped_explicit.i)
- (modules/scalar_transport/test/tests/ncp-lms/ncp-lm.i)
- (modules/solid_mechanics/test/tests/beam/static/euler_finite_rot_y_action.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_rayleigh_hht_ti.i)
- (modules/solid_mechanics/test/tests/central_difference/consistent/1D/1d_consistent_explicit.i)
- (test/tests/nodalkernels/multiple-subdomains/test.i)
- (modules/solid_mechanics/test/tests/central_difference/lumped/1D/1d_nodalmass_implicit.i)
- (modules/solid_mechanics/test/tests/central_difference/lumped/1D/1d_nodalmass_explicit.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass_dyn_variable_action.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_rayleigh_hht.i)
- (modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_rayleigh_hht_action.i)
- (modules/solid_mechanics/test/tests/beam/constraints/frictional_constraint.i)
- (test/tests/nodalkernels/high_order_time_integration/high_order_time_integration.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass_inertia_damping_action.i)
- (modules/solid_mechanics/test/tests/shell/static/large_strain_m_40_AD.i)
- (modules/solid_mechanics/test/tests/beam/constraints/frictionless_constraint.i)
- (modules/solid_mechanics/test/tests/beam/constraints/glued_constraint.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass_file.i)
- (test/tests/outputs/debug/show_execution_nodal_kernels_bcs.i)
- (modules/solid_mechanics/test/tests/beam/static/euler_finite_rot_z.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_timoshenko_small.i)
- (modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free_orientation_inclined_hht.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass2.i)
- (modules/solid_mechanics/test/tests/central_difference/consistent/1D/1d_consistent_implicit.i)
- (modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment.i)
- (test/tests/functors/matching-analytic-solution/test.i)
- (test/tests/nodalkernels/scaling/scaling.i)
- (modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free_orientation_inclined.i)
- (modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass.i)
(test/tests/nodalkernels/high_order_time_integration/high_order_time_integration.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[./v]
[../]
[]
[AuxVariables]
[./exact_solution]
[../]
[]
[Kernels]
[./diff]
type = CoefDiffusion
variable = u
coef = 0.1
[../]
[./time]
type = TimeDerivative
variable = u
[../]
[]
[NodalKernels]
[./td]
type = TimeDerivativeNodalKernel
variable = v
[../]
[./f]
type = UserForcingFunctionNodalKernel
variable = v
function = t*t*t+4
[../]
[]
[AuxKernels]
[./exact]
type = FunctionAux
variable = exact_solution
function = exact_solution_function
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[Functions]
[./exact_solution_function]
type = ParsedFunction
expression = (1.0/4.0)*(16*t+t*t*t*t)
[../]
[]
[Postprocessors]
[./error]
type = NodalL2Error
variable = v
function = exact_solution_function
[../]
[]
[Executioner]
type = Transient
end_time = 10
dt = 1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
scheme = 'crank-nicolson'
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass_inertia_damping.i)
# Test for small strain euler beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The beam is massless with a lumped mass at the end of the beam. The lumped
# mass also has a moment of inertia associated with it.
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 1e4
# Shear modulus (G) = 4e7
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 0.01
# Iy = 1e-4 = Iz
# Length (L)= 4 m
# mass (m) = 0.01899772
# Moment of inertia of lumped mass:
# Ixx = 0.2
# Iyy = 0.1
# Izz = 0.1
# mass proportional damping coefficient (eta) = 0.1
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 6.4e6
# Therefore, the beam behaves like a Euler-Bernoulli beam.
# The displacement time history from this analysis matches with that obtained from Abaqus.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0.0 0.0 0.0 0.0
# 0.1 0.001278249649738 0.025564992994761 0.51129985989521
# 0.2 0.0049813090917644 0.048496195845768 -0.052675802875074
# 0.3 0.0094704658873002 0.041286940064947 -0.091509312741339
# 0.4 0.013082280729802 0.03094935678508 -0.115242352856
# 0.5 0.015588313103503 0.019171290688959 -0.12031896906642
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0.0
xmax = 4.0
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_z]
order = FIRST
family = LAGRANGE
[../]
[]
[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
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_z]
type = NewmarkAccelAux
variable = rot_accel_z
displacement = rot_z
velocity = rot_vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_z]
type = NewmarkVelAux
variable = rot_vel_z
acceleration = rot_accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[./x_inertial]
type = NodalTranslationalInertia
variable = disp_x
velocity = vel_x
acceleration = accel_x
boundary = right
beta = 0.25
gamma = 0.5
mass = 0.01899772
eta = 0.1
[../]
[./y_inertial]
type = NodalTranslationalInertia
variable = disp_y
velocity = vel_y
acceleration = accel_y
boundary = right
beta = 0.25
gamma = 0.5
mass = 0.01899772
eta = 0.1
[../]
[./z_inertial]
type = NodalTranslationalInertia
variable = disp_z
velocity = vel_z
acceleration = accel_z
boundary = right
beta = 0.25
gamma = 0.5
mass = 0.01899772
eta = 0.1
[../]
[./rot_x_inertial]
type = NodalRotationalInertia
variable = rot_x
rotations = 'rot_x rot_y rot_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations= 'rot_accel_x rot_accel_y rot_accel_z'
boundary = right
beta = 0.25
gamma = 0.5
Ixx = 2e-1
Iyy = 1e-1
Izz = 1e-1
eta = 0.1
component = 0
[../]
[./rot_y_inertial]
type = NodalRotationalInertia
variable = rot_y
rotations = 'rot_x rot_y rot_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations= 'rot_accel_x rot_accel_y rot_accel_z'
boundary = right
beta = 0.25
gamma = 0.5
Ixx = 2e-1
Iyy = 1e-1
Izz = 1e-1
eta = 0.1
component = 1
[../]
[./rot_z_inertial]
type = NodalRotationalInertia
variable = rot_z
rotations = 'rot_x rot_y rot_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations= 'rot_accel_x rot_accel_y rot_accel_z'
boundary = right
beta = 0.25
gamma = 0.5
Ixx = 2e-1
Iyy = 1e-1
Izz = 1e-1
eta = 0.1
component = 2
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.1 0.2 10.0'
y = '0.0 1e-2 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type'
petsc_options_value = 'preonly lu'
dt = 0.1
end_time = 5.0
timestep_tolerance = 1e-6
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e4
poissons_ratio = -0.999875
shear_coefficient = 1.0
block = 0
[../]
[./strain]
type = ComputeIncrementalBeamStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 0.01
Ay = 0.0
Az = 0.0
Iy = 1.0e-4
Iz = 1.0e-4
y_orientation = '0.0 1.0 0.0'
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass_inertia_damping_ti.i)
# Test for small strain euler beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The beam is massless with a lumped mass at the end of the beam. The lumped
# mass also has a moment of inertia associated with it.
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 1e4
# Shear modulus (G) = 4e7
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 0.01
# Iy = 1e-4 = Iz
# Length (L)= 4 m
# mass (m) = 0.01899772
# Moment of inertia of lumped mass:
# Ixx = 0.2
# Iyy = 0.1
# Izz = 0.1
# mass proportional damping coefficient (eta) = 0.1
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 6.4e6
# Therefore, the beam behaves like a Euler-Bernoulli beam.
# The displacement time history from this analysis matches with that obtained from Abaqus.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0.0 0.0 0.0 0.0
# 0.1 0.001278249649738 0.025564992994761 0.51129985989521
# 0.2 0.0049813090917644 0.048496195845768 -0.052675802875074
# 0.3 0.0094704658873002 0.041286940064947 -0.091509312741339
# 0.4 0.013082280729802 0.03094935678508 -0.115242352856
# 0.5 0.015588313103503 0.019171290688959 -0.12031896906642
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0.0
xmax = 4.0
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_z]
order = FIRST
family = LAGRANGE
[../]
[]
[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
[../]
[./rot_accel_x]
type = TestNewmarkTI
displacement = rot_x
variable = rot_accel_x
first = false
[../]
[./rot_accel_y]
type = TestNewmarkTI
displacement = rot_y
variable = rot_accel_y
first = false
[../]
[./rot_accel_z]
type = TestNewmarkTI
displacement = rot_z
variable = rot_accel_z
first = false
[../]
[./rot_vel_x]
type = TestNewmarkTI
displacement = rot_x
variable = rot_vel_x
[../]
[./rot_vel_y]
type = TestNewmarkTI
displacement = rot_y
variable = rot_vel_y
[../]
[./rot_vel_z]
type = TestNewmarkTI
displacement = rot_z
variable = rot_vel_z
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[./x_inertial]
type = NodalTranslationalInertia
variable = disp_x
boundary = right
mass = 0.01899772
eta = 0.1
[../]
[./y_inertial]
type = NodalTranslationalInertia
variable = disp_y
boundary = right
mass = 0.01899772
eta = 0.1
[../]
[./z_inertial]
type = NodalTranslationalInertia
variable = disp_z
boundary = right
mass = 0.01899772
eta = 0.1
[../]
[./rot_x_inertial]
type = NodalRotationalInertia
variable = rot_x
rotations = 'rot_x rot_y rot_z'
boundary = right
Ixx = 2e-1
Iyy = 1e-1
Izz = 1e-1
eta = 0.1
component = 0
[../]
[./rot_y_inertial]
type = NodalRotationalInertia
variable = rot_y
rotations = 'rot_x rot_y rot_z'
boundary = right
Ixx = 2e-1
Iyy = 1e-1
Izz = 1e-1
eta = 0.1
component = 1
[../]
[./rot_z_inertial]
type = NodalRotationalInertia
variable = rot_z
rotations = 'rot_x rot_y rot_z'
boundary = right
Ixx = 2e-1
Iyy = 1e-1
Izz = 1e-1
eta = 0.1
component = 2
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.1 0.2 10.0'
y = '0.0 1e-2 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type'
petsc_options_value = 'preonly lu'
start_time = 0.0
dt = 0.1
end_time = 5.0
timestep_tolerance = 1e-6
# Time integrator scheme
scheme = "newmark-beta"
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e4
poissons_ratio = -0.999875
shear_coefficient = 1.0
block = 0
[../]
[./strain]
type = ComputeIncrementalBeamStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 0.01
Ay = 0.0
Az = 0.0
Iy = 1.0e-4
Iz = 1.0e-4
y_orientation = '0.0 1.0 0.0'
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
file_base = "dyn_euler_small_added_mass_inertia_damping_out"
exodus = true
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/beam/static_vm/ansys_vm2.i)
# This is a reproduction of test number 2 of ANSYS apdl verification manual.
# This test checks for the deformation at the center of a beam with simply
# supported boundary conditions and a uniform load w = 10,000 lb/ft.
# ||||||||| def. ||||||||
# *---*---*---*---*---*---*---*---*
# /\ /\
# /// oo
# a l a
# <-----> <--------------> <----->
#
# l = 240 in, a = 120 in, A = 50.65 in^2, Iz = 7892 in^2
# E = 30e6 psi
# Solution deflection: 0.182 in. (dispz_5: -1.824633e-01)
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 1
nx = 8
xmin = 0.0
xmax = 480.0
[]
[cnode]
type = ExtraNodesetGenerator
coord = '0.0'
new_boundary = 'one'
input = generated_mesh
[]
[cnode1]
type = ExtraNodesetGenerator
coord = '60.0'
new_boundary = 'two'
input = cnode
[]
[cnode2]
type = ExtraNodesetGenerator
coord = '420.0'
new_boundary = 'eight'
input = cnode1
[]
[cnode3]
type = ExtraNodesetGenerator
coord = '480.0'
new_boundary = 'nine'
input = cnode2
[]
[cnode4]
type = ExtraNodesetGenerator
coord = '120.0'
new_boundary = 'BC1'
input = cnode3
[]
[cnode5]
type = ExtraNodesetGenerator
coord = '360.0'
new_boundary = 'BC2'
input = cnode4
[]
[]
[Physics/SolidMechanics/LineElement/QuasiStatic]
[./all]
add_variables = true
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
# Geometry parameters
area = 50.65
Ay = 0.0
Az = 0.0
Iy = 7892.0
Iz = 7892.0
y_orientation = '0 1.0 0.0'
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 30.0e6
# poissons_ratio = -0.9998699638
poissons_ratio = 0.33
# poissons_ratio = 0.3
shear_coefficient = 0.85
block = 0
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 'BC1'
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 'BC1'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 'BC1'
value = 0.0
[../]
[./fixy2]
type = DirichletBC
variable = disp_y
boundary = 'BC2'
value = 0.0
[../]
[./fixz2]
type = DirichletBC
variable = disp_z
boundary = 'BC2'
value = 0.0
[../]
[]
[Functions]
[./force_50e3]
type = PiecewiseLinear
x = '0.0 10.0'
y = '0.0 50000.0'
[../]
[./force_25e3]
type = PiecewiseLinear
x = '0.0 10.0'
y = '0.0 25000.0'
[../]
[]
[NodalKernels]
[./force_z2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = 'two'
function = force_50e3
[../]
[./force_z8]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = 'eight'
function = force_50e3
[../]
[./force_z1]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = 'one'
function = force_25e3
[../]
[./force_z9]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = 'nine'
function = force_25e3
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = JFNK
line_search = 'none'
nl_max_its = 15
nl_rel_tol = 1e-06
nl_abs_tol = 1e-06
dt = 1.0
dtmin = 0.001
end_time = 10
[]
[Postprocessors]
[./disp_z1]
type = PointValue
point = '0.0 0.0 0.0'
variable = disp_z
[../]
[./disp_x1]
type = PointValue
point = '0.0 0.0 0.0'
variable = disp_x
[../]
[./disp_z2]
type = PointValue
point = '60.0 0.0 0.0'
variable = disp_z
[../]
[./disp_zBC1]
type = PointValue
point = '120.0 0.0 0.0'
variable = disp_z
[../]
[./disp_z5]
type = PointValue
point = '240.0 0.0 0.0'
variable = disp_z
[../]
[./disp_zBC2]
type = PointValue
point = '360.0 0.0 0.0'
variable = disp_z
[../]
[./disp_xBC2]
type = PointValue
point = '360.0 0.0 0.0'
variable = disp_x
[../]
[./disp_z8]
type = PointValue
point = '420.0 0.0 0.0'
variable = disp_z
[../]
[./disp_z9]
type = PointValue
point = '480.0 0.0 0.0'
variable = disp_z
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Outputs]
csv = true
exodus = false
[]
(modules/solid_mechanics/test/tests/beam/static/euler_finite_rot_y.i)
# Large strain/large rotation cantilever beam test
# A 300 N point load is applied at the end of a 4 m long cantilever beam.
# Young's modulus (E) = 1e4
# Shear modulus (G) = 1e8
# shear coefficient (k) = 1.0
# Poisson's ratio (nu) = -0.99995
# Area (A) = 1.0
# Iy = Iz = 0.16
# The dimensionless parameter alpha = kAGL^2/EI = 1e6
# Since the value of alpha is quite high, the beam behaves like
# a thin beam where shear effects are not significant.
# Beam deflection:
# small strain+rot = 3.998 m (exact 4.0)
# large strain + small rotation = -0.05 m in x and 3.74 m in y
# large rotations + small strain = -0.92 m in x and 2.38 m in y
# large rotations + large strain = -0.954 m in x and 2.37 m in y (exact -1.0 m in x and 2.4 m in y)
# References:
# K. E. Bisshopp and D.C. Drucker, Quaterly of Applied Mathematics, Vol 3, No. 3, 1945.
[Mesh]
type = FileMesh
file = beam_finite_rot_test_2.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = 1
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = 1
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = 1
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = 2
function = force
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 2.0 8.0'
y = '0.0 300.0 300.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
nl_max_its = 50
nl_rel_tol = 1e-9
nl_abs_tol = 1e-7
l_max_its = 50
dt = 0.05
end_time = 2.1
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1e4
poissons_ratio = -0.99995
shear_coefficient = 1.0
block = 1
[../]
[./strain]
type = ComputeFiniteBeamStrain
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 1.0
Ay = 0.0
Az = 0.0
Iy = 0.16
Iz = 0.16
y_orientation = '0.0 1.0 0.0'
large_strain = true
[../]
[./stress]
type = ComputeBeamResultants
block = 1
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./rot_z]
type = PointValue
point = '4.0 0.0 0.0'
variable = rot_z
[../]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/central_difference/lumped/1D/1d_lumped_explicit.i)
# Test for central difference integration for a 1D element
[Mesh]
[./generated_mesh]
type = GeneratedMeshGenerator
xmin = 0
xmax = 10
nx = 5
dim = 1
[../]
[]
[Variables]
[./disp_x]
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x'
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[]
[NodalKernels]
[./force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = right
function = force_x
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # force
scale_factor = 1e3
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 2500
[../]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.1
timestep_tolerance = 2e-10
dt = 0.005
[./TimeIntegrator]
type = CentralDifference
solve_type = lumped
[../]
[]
[Postprocessors]
[./accel_x]
type = PointValue
point = '10.0 0.0 0.0'
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/scalar_transport/test/tests/ncp-lms/ncp-lm.i)
l=10
[Mesh]
type = GeneratedMesh
dim = 1
xmax = ${l}
nx = ${l}
[]
[Variables]
[u][]
[lm][]
[]
[ICs]
[u]
type = FunctionIC
variable = u
function = '${l} - x'
[]
[]
[NodalKernels]
[time]
type = TimeDerivativeNodalKernel
variable = u
[]
[ffn]
type = UserForcingFunctionNodalKernel
variable = u
function = '-1'
[]
[lm_coupled_force]
type = CoupledForceNodalKernel
variable = u
v = lm
[]
[positive_constraint]
type = LowerBoundNodalKernel
variable = lm
v = u
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
num_steps = ${l}
solve_type = NEWTON
petsc_options = '-pc_svd_monitor'
petsc_options_iname = '-pc_type'
petsc_options_value = 'svd'
[]
[Outputs]
exodus = true
[]
[Debug]
show_var_residual_norms = true
[]
[Postprocessors]
[active_lm]
type = GreaterThanLessThanPostprocessor
variable = lm
execute_on = 'nonlinear timestep_end'
value = 1e-12
[]
[violations]
type = GreaterThanLessThanPostprocessor
variable = u
execute_on = 'nonlinear timestep_end'
value = -1e-12
comparator = 'less'
[]
[]
(modules/solid_mechanics/test/tests/beam/static/euler_finite_rot_y_action.i)
# Large strain/large rotation cantilever beam tese
# A 300 N point load is applied at the end of a 4 m long cantilever beam.
# Young's modulus (E) = 1e4
# Shear modulus (G) = 1e8
# shear coefficient (k) = 1.0
# Area (A) = 1.0
# Iy = Iz = 0.16
# The non-dimensionless parameter alpha = kAGL^2/EI = 1e6
# Since the value of alpha is quite high, the beam behaves like
# a thin beam where shear effects are not significant.
# Beam deflection:
# small strain+rot = 3.998 m (exact 4.0)
# large strain + small rotation = -0.05 m in x and 3.74 m in y
# large rotations + small strain = -0.92 m in x and 2.38 m in y
# large rotations + large strain = -0.954 m in x and 2.37 m in y (exact -1.0 m in x and 2.4 m in y)
# References:
# K. E. Bisshopp and D.C. Drucker, Quaterly of Applied Mathematics, Vol 3, No. 3, 1945.
[Mesh]
type = FileMesh
file = beam_finite_rot_test_2.e
displacements = 'disp_x disp_y disp_z'
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = 1
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = 1
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = 1
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = 2
function = force
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 2.0 8.0'
y = '0.0 300.0 300.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
nl_max_its = 50
nl_rel_tol = 1e-9
nl_abs_tol = 1e-7
l_max_its = 50
dt = 0.05
end_time = 2.1
[]
[Physics/SolidMechanics/LineElement/QuasiStatic]
[./all]
add_variables = true
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
strain_type = FINITE
rotation_type = FINITE
# Geometry parameters
area = 1.0
Iy = 0.16
Iz = 0.16
y_orientation = '0.0 1.0 0.0'
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1e4
poissons_ratio = -0.99995
shear_coefficient = 1.0
block = 1
[../]
[./stress]
type = ComputeBeamResultants
block = 1
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./rot_z]
type = PointValue
point = '4.0 0.0 0.0'
variable = rot_z
[../]
[]
[Outputs]
file_base = 'euler_finite_rot_y_out'
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_rayleigh_hht_ti.i)
# Test for damped small strain euler beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 1e4
# Shear modulus (G) = 4e7
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 0.01
# Iy = 1e-4 = Iz
# Length (L)= 4 m
# density (rho) = 1.0
# mass proportional rayleigh damping(eta) = 0.1
# stiffness proportional rayleigh damping(eta) = 0.1
# HHT time integration parameter (alpha) = -0.3
# Corresponding Newmark beta time integration parameters beta = 0.4225 and gamma = 0.8
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 6.4e6
# Therefore, the behaves like a Euler-Bernoulli beam.
# The displacement time history from this analysis matches with that obtained from Abaqus.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0.0 0.0 0.0 0.0
# 0.2 0.019898364318588 0.18838688112273 1.1774180070171
# 0.4 0.045577003505278 0.087329917525455 -0.92596052423724
# 0.6 0.063767907208218 0.084330765885995 0.21274543331268
# 0.8 0.073602908614573 0.020029576220975 -0.45506879373455
# 1.0 0.06841704414745 -0.071840076837194 -0.46041813317992
[Mesh]
type = GeneratedMesh
nx = 10
dim = 1
xmin = 0.0
xmax = 4.0
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_z]
order = FIRST
family = LAGRANGE
[../]
[]
[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
[../]
[./rot_accel_x]
type = TestNewmarkTI
displacement = rot_x
variable = rot_accel_x
first = false
[../]
[./rot_accel_y]
type = TestNewmarkTI
displacement = rot_y
variable = rot_accel_y
first = false
[../]
[./rot_accel_z]
type = TestNewmarkTI
displacement = rot_z
variable = rot_accel_z
first = false
[../]
[./rot_vel_x]
type = TestNewmarkTI
displacement = rot_x
variable = rot_vel_x
[../]
[./rot_vel_y]
type = TestNewmarkTI
displacement = rot_y
variable = rot_vel_y
[../]
[./rot_vel_z]
type = TestNewmarkTI
displacement = rot_z
variable = rot_vel_z
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.2 0.4 10.0'
y = '0.0 0.01 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
line_search = 'none'
l_tol = 1e-11
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
end_time = 5.0
timestep_tolerance = 1e-6
# Time integrator
[./TimeIntegrator]
type = NewmarkBeta
beta = 0.4225
gamma = 0.8
[../]
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
zeta = 0.1
alpha = -0.3
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
zeta = 0.1
alpha = -0.3
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
zeta = 0.1
alpha = -0.3
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
zeta = 0.1
alpha = -0.3
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
zeta = 0.1
alpha = -0.3
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
zeta = 0.1
alpha = -0.3
[../]
[./inertial_force_x]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 0
variable = disp_x
alpha = -0.3
[../]
[./inertial_force_y]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 1
variable = disp_y
alpha = -0.3
[../]
[./inertial_force_z]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 2
variable = disp_z
alpha = -0.3
[../]
[./inertial_force_rot_x]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 3
variable = rot_x
alpha = -0.3
[../]
[./inertial_force_rot_y]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 4
variable = rot_y
alpha = -0.3
[../]
[./inertial_force_rot_z]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 5
variable = rot_z
alpha = -0.3
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e4
poissons_ratio = -0.999875
shear_coefficient = 1.0
block = 0
[../]
[./strain]
type = ComputeIncrementalBeamStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 0.01
Ay = 0.0
Az = 0.0
Iy = 1.0e-4
Iz = 1.0e-4
y_orientation = '0.0 1.0 0.0'
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
file_base = 'dyn_euler_small_rayleigh_hht_out'
exodus = true
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/central_difference/consistent/1D/1d_consistent_explicit.i)
# Test for central difference integration for a 1D element
# Consistent mass matrix
[Mesh]
type = GeneratedMesh
xmin = 0
xmax = 10
nx = 5
dim = 1
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x'
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[]
[NodalKernels]
[./force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = right
function = force_x
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # force
scale_factor = 1e3
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 2500
[../]
[]
[Executioner]
type = Transient
start_time = -0.005
end_time = 0.1
dt = 0.005
timestep_tolerance = 1e-6
l_tol = 1e-10
[./TimeIntegrator]
type = CentralDifference
[../]
[]
[Postprocessors]
[./disp_x]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./vel_x]
type = NodalVariableValue
nodeid = 1
variable = vel_x
[../]
[./accel_x]
type = NodalVariableValue
nodeid = 1
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
perf_graph = false
[]
(test/tests/nodalkernels/multiple-subdomains/test.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
nx = 2
[]
[sub]
type = SubdomainBoundingBoxGenerator
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = 'gen'
block_id = '1'
[]
[]
[Variables]
[u]
block = '0 1'
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[rxn]
type = Reaction
variable = u
[]
[]
[NodalKernels]
[source]
type = UserForcingFunctionNodalKernel
variable = u
block = '0 1'
function = '1'
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/central_difference/lumped/1D/1d_nodalmass_implicit.i)
# Test for central difference integration for 1D elements
[Mesh]
[./generated_mesh]
type = GeneratedMeshGenerator
xmin = 0
xmax = 10
nx = 5
dim = 1
[../]
[./all_nodes]
type = BoundingBoxNodeSetGenerator
new_boundary = 'all'
input = 'generated_mesh'
top_right = '10 0 0'
bottom_left = '0 0 0'
[../]
[]
[Variables]
[./disp_x]
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x'
[../]
[]
[NodalKernels]
[./force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = right
function = force_x
[../]
[./nodal_masses]
type = NodalTranslationalInertia
nodal_mass_file = 'nodal_mass_file.csv'
variable = 'disp_x'
boundary = 'all'
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # force
scale_factor = 1e3
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x'
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.1
dt = 0.005
timestep_tolerance = 2e-10
[./TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[../]
[]
[Postprocessors]
[./accel_x]
type = PointValue
point = '10.0 0.0 0.0'
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/central_difference/lumped/1D/1d_nodalmass_explicit.i)
# Test for central difference integration for 1D elements
[Mesh]
[./generated_mesh]
type = GeneratedMeshGenerator
xmin = 0
xmax = 10
nx = 5
dim = 1
[../]
[./all_nodes]
type = BoundingBoxNodeSetGenerator
new_boundary = 'all'
input = 'generated_mesh'
top_right = '10 0 0'
bottom_left = '0 0 0'
[../]
[]
[Variables]
[./disp_x]
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x'
[../]
[]
[NodalKernels]
[./force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = right
function = force_x
[../]
[./nodal_masses]
type = NodalTranslationalInertia
nodal_mass_file = 'nodal_mass_file.csv'
variable = 'disp_x'
boundary = 'all'
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # force
scale_factor = 1e3
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.1
dt = 0.005
timestep_tolerance = 2e-10
[./TimeIntegrator]
type = CentralDifference
[../]
[]
[Postprocessors]
[./accel_x]
type = PointValue
point = '10.0 0.0 0.0'
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass_dyn_variable_action.i)
# Test for small strain euler beam vibration in y direction
# The velocity and acceleration AuxVariables and the corresponding AuxKernels
# are set up using the LineElementAction using add_dynamic_variables. The action
# also creates the displacement variables, stress divergence kernels and
# beam strain. NodalTranslationalInertia is not created by the action.
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The beam is massless with a lumped mass at the end of the beam
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 1e4
# Shear modulus (G) = 4e7
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 0.01
# Iy = 1e-4 = Iz
# Length (L)= 4 m
# mass (m) = 0.01899772
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 6.4e6
# Therefore, the beam behaves like a Euler-Bernoulli beam.
# The theoretical first frequency of this beam is:
# f1 = 1/(2 pi) * sqrt(3EI/(mL^3)) = 0.25
# This implies that the corresponding time period of this beam is 4s.
# The FEM solution for this beam with 10 element gives time periods of 4s with time step of 0.01s.
# A higher time step of 0.1 s is used in the test to reduce computational time.
# The time history from this analysis matches with that obtained from Abaqus.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0.0 0.0 0.0 0.0
# 0.1 0.0013076435060869 0.026152870121738 0.52305740243477
# 0.2 0.0051984378734383 0.051663017225289 -0.01285446036375
# 0.3 0.010269120909367 0.049750643493289 -0.02539301427625
# 0.4 0.015087433925158 0.046615616822532 -0.037307519138892
# 0.5 0.019534963888307 0.042334982440433 -0.048305168503101
[Mesh]
type = GeneratedMesh
xmin = 0.0
xmax = 4.0
nx = 10
dim = 1
displacements = 'disp_x disp_y disp_z'
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[./x_inertial]
type = NodalTranslationalInertia
variable = disp_x
velocity = vel_x
acceleration = accel_x
boundary = right
beta = 0.25
gamma = 0.5
mass = 0.01899772
[../]
[./y_inertial]
type = NodalTranslationalInertia
variable = disp_y
velocity = vel_y
acceleration = accel_y
boundary = right
beta = 0.25
gamma = 0.5
mass = 0.01899772
[../]
[./z_inertial]
type = NodalTranslationalInertia
variable = disp_z
velocity = vel_z
acceleration = accel_z
boundary = right
beta = 0.25
gamma = 0.5
mass = 0.01899772
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.1 0.2 10.0'
y = '0.0 1e-2 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type'
petsc_options_value = 'preonly lu'
dt = 0.1
end_time = 5.0
timestep_tolerance = 1e-6
[]
[Physics/SolidMechanics/LineElement/QuasiStatic]
[./all]
add_variables = true
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
# Geometry parameters
area = 0.01
Iy = 1e-4
Iz = 1e-4
y_orientation = '0.0 1.0 0.0'
# Add AuxVariables and AuxKernels for dynamic simulation
add_dynamic_variables = true
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25 # Newmark time integration parameter
gamma = 0.5 # Newmark time integration parameter
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e4
poissons_ratio = -0.999875
shear_coefficient = 1.0
block = 0
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
file_base = 'dyn_euler_small_added_mass_out'
hide = 'rot_vel_x rot_vel_y rot_vel_z rot_accel_x rot_accel_y rot_accel_z'
exodus = true
csv = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_rayleigh_hht.i)
# Test for damped small strain euler beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 1e4
# Shear modulus (G) = 4e7
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 0.01
# Iy = 1e-4 = Iz
# Length (L)= 4 m
# density (rho) = 1.0
# mass proportional rayleigh damping(eta) = 0.1
# stiffness proportional rayleigh damping(eta) = 0.1
# HHT time integration parameter (alpha) = -0.3
# Corresponding Newmark beta time integration parameters beta = 0.4225 and gamma = 0.8
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 6.4e6
# Therefore, the behaves like a Euler-Bernoulli beam.
# The displacement time history from this analysis matches with that obtained from Abaqus.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0.0 0.0 0.0 0.0
# 0.2 0.019898364318588 0.18838688112273 1.1774180070171
# 0.4 0.045577003505278 0.087329917525455 -0.92596052423724
# 0.6 0.063767907208218 0.084330765885995 0.21274543331268
# 0.8 0.073602908614573 0.020029576220975 -0.45506879373455
# 1.0 0.06841704414745 -0.071840076837194 -0.46041813317992
[Mesh]
type = GeneratedMesh
nx = 10
dim = 1
xmin = 0.0
xmax = 4.0
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.4225
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.4225
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.4225
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.8
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.4225
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.8
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.4225
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.8
execute_on = timestep_end
[../]
[./rot_accel_z]
type = NewmarkAccelAux
variable = rot_accel_z
displacement = rot_z
velocity = rot_vel_z
beta = 0.4225
execute_on = timestep_end
[../]
[./rot_vel_z]
type = NewmarkVelAux
variable = rot_vel_z
acceleration = rot_accel_z
gamma = 0.8
execute_on = timestep_end
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.2 0.4 10.0'
y = '0.0 0.01 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-11
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
end_time = 5.0
timestep_tolerance = 1e-6
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
zeta = 0.1
alpha = -0.3
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
zeta = 0.1
alpha = -0.3
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
zeta = 0.1
alpha = -0.3
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
zeta = 0.1
alpha = -0.3
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
zeta = 0.1
alpha = -0.3
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
zeta = 0.1
alpha = -0.3
[../]
[./inertial_force_x]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.4225
gamma = 0.8
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 0
variable = disp_x
alpha = -0.3
[../]
[./inertial_force_y]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.4225
gamma = 0.8
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 1
variable = disp_y
alpha = -0.3
[../]
[./inertial_force_z]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.4225
gamma = 0.8
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 2
variable = disp_z
alpha = -0.3
[../]
[./inertial_force_rot_x]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.4225
gamma = 0.8
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 3
variable = rot_x
alpha = -0.3
[../]
[./inertial_force_rot_y]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.4225
gamma = 0.8
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 4
variable = rot_y
alpha = -0.3
[../]
[./inertial_force_rot_z]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.4225
gamma = 0.8
eta = 0.1
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 5
variable = rot_z
alpha = -0.3
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e4
poissons_ratio = -0.999875
shear_coefficient = 1.0
block = 0
[../]
[./strain]
type = ComputeIncrementalBeamStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 0.01
Ay = 0.0
Az = 0.0
Iy = 1.0e-4
Iz = 1.0e-4
y_orientation = '0.0 1.0 0.0'
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free.i)
# Test to verify the fundamental natural frequency of a one element ADComputeShellStress
# BCs: Clamped on one end, free on others.
# Initial perturbation applied to edge of the beam. After that, the shell vibrates freely.
#
# Results have been compared for various thicknesses with the following approximate Results
# (Moose results were obtained with 8 elements along the length)
# Thickness = 0.1. Reference freq: 10.785 Hz, Moose freq: 10.612 Hz
# Thickness = 0.05. Reference freq: 5.393 Hz, Moose freq: 5.335 Hz
# Thickness = 0.025. Reference freq: 2.696 Hz, Moose freq: 2.660 Hz
#
# Reference values have been obtained from Robert Blevins, "Formulas for Dynamics, Acoustics and Vibration",
# Table 5.3 case 11. Formula looks like: f = lambda^2/(2*pi*a^2) * sqrt(E*h^2/(12*(1-nu*nu))), where lambda
# changes as a function of shell dimensions.
# This test uses one single element for speed reasons.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1 # 1
ny = 1# 4
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.5
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./rot_x]
[../]
[./rot_y]
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
# aux variables for dynamics
[./vel_x]
[../]
[./vel_y]
[../]
[./vel_z]
[../]
[./accel_x]
[../]
[./accel_y]
[../]
[./accel_z]
[../]
[./rot_vel_x]
[../]
[./rot_vel_y]
[../]
[./rot_accel_x]
[../]
[./rot_accel_y]
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
[../]
# Kernels for dynamics
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 'bottom'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = 'bottom'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = 'bottom'
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 'bottom'
value = 0.0
[../]
[]
[Functions]
[./force_function]
type = PiecewiseLinear
x = '0.0 0.01 0.15 10.0'
y = '0.0 0.01 0.0 0.0'
[../]
[]
[NodalKernels]
[./force_z2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = 'top'
function = force_function
[../]
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[../]
[./inertial_force_x]
type = ADInertialForceShell
# use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 0
variable = disp_x
thickness = 0.1
[../]
[./inertial_force_y]
type = ADInertialForceShell
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 1
variable = disp_y
thickness = 0.1
[../]
[./inertial_force_z]
type = ADInertialForceShell
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 2
variable = disp_z
thickness = 0.1
[../]
[./inertial_force_rot_x]
type = ADInertialForceShell
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 3
variable = rot_x
thickness = 0.1
[../]
[./inertial_force_rot_y]
type = ADInertialForceShell
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 4
variable = rot_y
thickness = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 2100000
poissons_ratio = 0.3
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_z_tip]
type = PointValue
point = '1.0 1.0 0.0'
variable = disp_z
[../]
[./rot_x_tip]
type = PointValue
point = '0.0 1.0 0.0'
variable = rot_x
[../]
[./stress_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yy
[../]
[./stress_yy_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yy
[../]
[./stress_yy_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yy
[../]
[./stress_yy_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yy
[../]
[./stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[../]
[./stress_yz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yz
[../]
[./stress_yz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yz
[../]
[./stress_yz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yz
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-11
nl_max_its = 15
nl_rel_tol = 1e-11
nl_abs_tol = 1e-10
l_max_its = 20
dt = 0.005
dtmin = 0.005
timestep_tolerance = 2e-13
end_time = 0.5
[./TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[../]
[]
[Outputs]
perf_graph = true
csv = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small.i)
# Test for small strain euler beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 1e4
# Shear modulus (G) = 4e7
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 0.01
# Iy = 1e-4 = Iz
# Length (L)= 4 m
# density (rho) = 1.0
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 6.4e6
# Therefore, the beam behaves like a Euler-Bernoulli beam.
# The theoretical first and third frequencies of this beam are:
# f1 = 1/(2 pi) * (3.5156/L^2) * sqrt(EI/rho)
# f2 = 6.268 f1
# This implies that the corresponding time period of this beam are 2.858 s and 0.455s
# The FEM solution for this beam with 10 element gives time periods of 2.856 s and 0.4505s with a time step of 0.01.
# A smaller time step is required to obtain a closer match for the lower time periods/higher frequencies.
# A higher time step of 0.05 is used in this test to reduce testing time.
# The time history from this analysis matches with that obtained from Abaqus.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0 0.0 0.0 0.0
# 0.05 0.0016523559162602 0.066094236650407 2.6437694660163
# 0.1 0.0051691308901533 0.07457676230532 -2.3044684398197
# 0.15 0.0078956772343372 0.03448509146203 4.7008016060883
# 0.2 0.0096592517031463 0.03605788729033 -0.63788977295649
# 0.25 0.011069233444348 0.020341382357756 0.0092295756535376
[Mesh]
type = GeneratedMesh
xmin = 0.0
xmax = 4.0
dim = 1
nx = 10
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_z]
order = FIRST
family = LAGRANGE
[../]
[]
[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
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_z]
type = NewmarkAccelAux
variable = rot_accel_z
displacement = rot_z
velocity = rot_vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_z]
type = NewmarkVelAux
variable = rot_vel_z
acceleration = rot_accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.05 0.1 10.0'
y = '0.0 0.01 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 0.05
end_time = 5.0
timestep_tolerance = 1e-6
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[./inertial_force_x]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 0
variable = disp_x
[../]
[./inertial_force_y]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 1
variable = disp_y
[../]
[./inertial_force_z]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 2
variable = disp_z
[../]
[./inertial_force_rot_x]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 3
variable = rot_x
[../]
[./inertial_force_rot_y]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 4
variable = rot_y
[../]
[./inertial_force_rot_z]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 0.01
Iy = 1e-4
Iz = 1e-4
Ay = 0.0
Az = 0.0
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e4
poissons_ratio = -0.999875
shear_coefficient = 1.0
block = 0
[../]
[./strain]
type = ComputeIncrementalBeamStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 0.01
Ay = 0.0
Az = 0.0
Iy = 1.0e-4
Iz = 1.0e-4
y_orientation = '0.0 1.0 0.0'
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_rayleigh_hht_action.i)
# Test for damped small strain euler beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 1e4
# Shear modulus (G) = 4e7
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 0.01
# Iy = 1e-4 = Iz
# Length (L)= 4 m
# density (rho) = 1.0
# mass proportional rayleigh damping(eta) = 0.1
# stiffness proportional rayleigh damping(eta) = 0.1
# HHT time integration parameter (alpha) = -0.3
# Corresponding Newmark beta time integration parameters beta = 0.4225 and gamma = 0.8
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 6.4e6
# Therefore, the behaves like a Euler-Bernoulli beam.
# The displacement time history from this analysis matches with that obtained from Abaqus.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0.0 0.0 0.0 0.0
# 0.2 0.019898364318588 0.18838688112273 1.1774180070171
# 0.4 0.045577003505278 0.087329917525455 -0.92596052423724
# 0.6 0.063767907208218 0.084330765885995 0.21274543331268
# 0.8 0.073602908614573 0.020029576220975 -0.45506879373455
# 1.0 0.06841704414745 -0.071840076837194 -0.46041813317992
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0.0
xmax = 4.0
displacements = 'disp_x disp_y disp_z'
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.2 0.4 10.0'
y = '0.0 0.01 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
line_search = 'none'
l_tol = 1e-11
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.2
end_time = 5.0
timestep_tolerance = 1e-6
[]
[Physics/SolidMechanics/LineElement/QuasiStatic]
[./all]
add_variables = true
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
# Geometry parameters
area = 0.01
Iy = 1e-4
Iz = 1e-4
y_orientation = '0.0 1.0 0.0'
# dynamic simulation using consistent mass/inertia matrix
dynamic_consistent_inertia = true
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
density = 1.0
beta = 0.4225 # Newmark time integraion parameter
gamma = 0.8 # Newmark time integraion parameter
# optional parameters for numerical (alpha) and Rayleigh damping
alpha = -0.3 # HHT time integration parameter
eta = 0.1 # Mass proportional Rayleigh damping
zeta = 0.1 # Stiffness proportional Rayleigh damping
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e4
poissons_ratio = -0.999875
shear_coefficient = 1.0
block = 0
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
file_base = 'dyn_euler_small_rayleigh_hht_out'
exodus = true
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/beam/constraints/frictional_constraint.i)
# Test for frictional beam constraint.
#
# Using a simple L-shaped geometry with a frictional constraint at the
# corner between the two beams. The longer beam properties and loading is
# taken from an earlier beam regression test for static loading. The maximum
# applied load of 50000 lb should result in a displacement of 3.537e-3. Since
# the constraint is frictional with a low normal force (1.0) and coefficient
# of friction (0.05) and the short beam is much less stiff, the
# y-dir displacement of the long beam is still 3.537e-3. However, the y-dir
# displacement of the short beam increases until the force exceeds the
# frictional capacity which in this case is 0.05 and then remains constant
# after that point.
[Mesh]
file = beam_cons_patch.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = '1001 1003'
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = '1001 1003'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = '1001 1003'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = '1001 1003'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = '1001 1003'
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = '1001 1003'
value = 0.0
[../]
[]
[Constraints]
[./tie_y_fuel]
type = NodalFrictionalConstraint
normal_force = 1.0
tangential_penalty = 1.2e5
friction_coefficient = 0.05
boundary = 1005
secondary = 1004
variable = disp_y
[../]
[./tie_x_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = disp_x
[../]
[./tie_z_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = disp_z
[../]
[./tie_rot_y_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = rot_y
[../]
[./tie_rot_x_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = rot_x
[../]
[./tie_rot_z_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = rot_z
[../]
[]
[Functions]
[./force_loading]
type = PiecewiseLinear
x = '0.0 5.0'
y = '0.0 50000.0'
[../]
[]
[NodalKernels]
[./force_x2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = '1004'
function = force_loading
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = 'none'
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
dt = 1
dtmin = 1
end_time = 5
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity_pipe]
type = ComputeElasticityBeam
shear_coefficient = 1.0
youngs_modulus = 30e6
poissons_ratio = 0.3
block = 1
outputs = exodus
output_properties = 'material_stiffness material_flexure'
[../]
[./strain_pipe]
type = ComputeIncrementalBeamStrain
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 28.274
Ay = 0.0
Az = 0.0
Iy = 1.0
Iz = 1.0
y_orientation = '0.0 0.0 1.0'
[../]
[./stress_pipe]
type = ComputeBeamResultants
block = 1
outputs = exodus
output_properties = 'forces moments'
[../]
[./elasticity_cons]
type = ComputeElasticityBeam
shear_coefficient = 1.0
youngs_modulus = 10e2
poissons_ratio = 0.3
block = 2
outputs = exodus
output_properties = 'material_stiffness material_flexure'
[../]
[./strain_cons]
type = ComputeIncrementalBeamStrain
block = '2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 1.0
Ay = 0.0
Az = 0.0
Iy = 1.0
Iz = 1.0
y_orientation = '0.0 0.0 1.0'
[../]
[./stress_cons]
type = ComputeBeamResultants
block = 2
outputs = exodus
output_properties = 'forces moments'
[../]
[]
[Postprocessors]
[./disp_y_n4]
type = NodalVariableValue
variable = disp_y
nodeid = 3
[../]
[./disp_y_n2]
type = NodalVariableValue
variable = disp_y
nodeid = 1
[../]
[./horz_forces_y]
type = PointValue
point = '9.9 60.0 0.0'
variable = forces_y
[../]
[./forces_y]
type = PointValue
point = '10.0 59.9 0.0'
variable = forces_y
[../]
[]
[Outputs]
csv = true
exodus = true
[]
(test/tests/nodalkernels/high_order_time_integration/high_order_time_integration.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[./v]
[../]
[]
[AuxVariables]
[./exact_solution]
[../]
[]
[Kernels]
[./diff]
type = CoefDiffusion
variable = u
coef = 0.1
[../]
[./time]
type = TimeDerivative
variable = u
[../]
[]
[NodalKernels]
[./td]
type = TimeDerivativeNodalKernel
variable = v
[../]
[./f]
type = UserForcingFunctionNodalKernel
variable = v
function = t*t*t+4
[../]
[]
[AuxKernels]
[./exact]
type = FunctionAux
variable = exact_solution
function = exact_solution_function
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[Functions]
[./exact_solution_function]
type = ParsedFunction
expression = (1.0/4.0)*(16*t+t*t*t*t)
[../]
[]
[Postprocessors]
[./error]
type = NodalL2Error
variable = v
function = exact_solution_function
[../]
[]
[Executioner]
type = Transient
end_time = 10
dt = 1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
scheme = 'crank-nicolson'
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass_inertia_damping_action.i)
# Test for small strain euler beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The beam is massless with a lumped mass at the end of the beam. The lumped
# mass also has a moment of inertia associated with it.
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 1e4
# Shear modulus (G) = 4e7
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 0.01
# Iy = 1e-4 = Iz
# Length (L)= 4 m
# mass (m) = 0.01899772
# Moment of inertia of lumped mass:
# Ixx = 0.2
# Iyy = 0.1
# Izz = 0.1
# mass proportional damping coefficient (eta) = 0.1
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 6.4e6
# Therefore, the beam behaves like a Euler-Bernoulli beam.
# The displacement time history from this analysis matches with that obtained from Abaqus.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0.0 0.0 0.0 0.0
# 0.1 0.001278249649738 0.025564992994761 0.51129985989521
# 0.2 0.0049813090917644 0.048496195845768 -0.052675802875074
# 0.3 0.0094704658873002 0.041286940064947 -0.091509312741339
# 0.4 0.013082280729802 0.03094935678508 -0.115242352856
# 0.5 0.015588313103503 0.019171290688959 -0.12031896906642
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0.0
xmax = 4.0
displacements = 'disp_x disp_y disp_z'
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.1 0.2 10.0'
y = '0.0 1e-2 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type'
petsc_options_value = 'preonly lu'
dt = 0.1
end_time = 5.0
timestep_tolerance = 1e-6
[]
[Physics/SolidMechanics/LineElement/QuasiStatic]
[./all]
add_variables = true
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
# Geometry parameters
area = 0.01
Iy = 1e-4
Iz = 1e-4
y_orientation = '0.0 1.0 0.0'
# dynamic simulation using consistent mass/inertia matrix
dynamic_nodal_translational_inertia = true
nodal_mass = 0.01899772
dynamic_nodal_rotational_inertia = true
nodal_Ixx = 2e-1
nodal_Iyy = 1e-1
nodal_Izz = 1e-1
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25 # Newmark time integration parameter
gamma = 0.5 # Newmark time integration parameter
boundary = right # Node set where nodal mass and nodal inertia are applied
# optional parameters for Rayleigh damping
eta = 0.1 # Mass proportional Rayleigh damping
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e4
poissons_ratio = -0.999875
shear_coefficient = 1.0
block = 0
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
file_base = 'dyn_euler_small_added_mass_inertia_damping_out'
exodus = true
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/shell/static/large_strain_m_40_AD.i)
# Large strain/rotation test for shell elements
# A cantilever beam that is 40 m long (Y direction) with 1 m x 1 m
# cross-section is modeled using 5 shell elements placed along its
# length. The bottom boundary is fixed in all displacements and
# rotations. A load of 0.140625 N is applied at each node on the top
# boundary, resulting in a total load of 0.28125 N. E = 1800 Pa and
# v = 0.0.
# The reference solution for large deflection of this beam is based on
# K. E. Bisshopp and D.C. Drucker, Quaterly of Applied Mathematics,
# Vol 3, No. # 3, 1945.
# For PL^2/EI = 3, disp_z at tip = 0.6L = 24 m & disp_y at tip = 0.76*L-L = -9.6 m
# The FEM solution at tip of cantilever is:
# disp_z = 24.85069 m; relative error = 3.54 %
# disp_y = -9.125937 m; relative error = 5.19 %
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 5
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 40.0
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = bottom
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = bottom
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = top
function = force_y
[../]
[]
[Functions]
[./force_y]
type = PiecewiseLinear
x = '0.0 1.0 3.0'
y = '0.0 1.0 1.0'
scale_factor = 0.140625
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
line_search = 'none'
nl_rel_tol = 1e-12
nl_abs_tol = 1e-14
dt = 0.1
dtmin = 0.1
end_time = 3.0
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
large_strain = true
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
large_strain = true
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
large_strain = true
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
large_strain = true
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
large_strain = true
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 1800
poissons_ratio = 0.0
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeFiniteShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 1.0
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[]
[Postprocessors]
[./disp_z2]
type = PointValue
point = '1.0 40.0 0.0'
variable = disp_z
[../]
[./disp_y2]
type = PointValue
point = '1.0 40.0 0.0'
variable = disp_y
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/beam/constraints/frictionless_constraint.i)
# Test for frictionless beam constraint.
#
# Using a simple L-shaped geometry with a frictionless constraint at the
# corner between the two beams. The longer beam properties and loading is
# taken from an earlier beam regression test for static loading. The maximum
# applied load of 50000 lb should result in a displacement of 3.537e-3. Since
# the constraint is frictionless, the y-dir displacement of the long beam is
# 3.537e-3 and the short beam y-dir displacement is zero.
[Mesh]
file = beam_cons_patch.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = '1001 1003'
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = '1001 1003'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = '1001 1003'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = '1001 1003'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = '1001 1003'
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = '1001 1003'
value = 0.0
[../]
[]
[Constraints]
[./tie_y_fuel]
type = NodalFrictionalConstraint
normal_force = 1000
tangential_penalty = 1.2e6
friction_coefficient = 0.0
boundary = 1005
secondary = 1004
variable = disp_y
[../]
[./tie_x_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = disp_x
[../]
[./tie_z_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = disp_z
[../]
[./tie_rot_y_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = rot_y
[../]
[./tie_rot_x_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = rot_x
[../]
[./tie_rot_z_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = rot_z
[../]
[]
[Functions]
[./force_loading]
type = PiecewiseLinear
x = '0.0 5.0'
y = '0.0 50000.0'
[../]
[]
[NodalKernels]
[./force_x2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = '1004'
function = force_loading
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = 'none'
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
dt = 1
dtmin = 1
end_time = 5
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity_pipe]
type = ComputeElasticityBeam
shear_coefficient = 1.0
youngs_modulus = 30e6
poissons_ratio = 0.3
block = 1
outputs = exodus
output_properties = 'material_stiffness material_flexure'
[../]
[./strain_pipe]
type = ComputeIncrementalBeamStrain
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 28.274
Ay = 0.0
Az = 0.0
Iy = 1.0
Iz = 1.0
y_orientation = '0.0 0.0 1.0'
[../]
[./stress_pipe]
type = ComputeBeamResultants
block = 1
outputs = exodus
output_properties = 'forces moments'
[../]
[./elasticity_cons]
type = ComputeElasticityBeam
shear_coefficient = 1.0
youngs_modulus = 10e2
poissons_ratio = 0.3
block = 2
outputs = exodus
output_properties = 'material_stiffness material_flexure'
[../]
[./strain_cons]
type = ComputeIncrementalBeamStrain
block = '2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 1.0
Ay = 0.0
Az = 0.0
Iy = 1.0
Iz = 1.0
y_orientation = '0.0 0.0 1.0'
[../]
[./stress_cons]
type = ComputeBeamResultants
block = 2
outputs = exodus
output_properties = 'forces moments'
[../]
[]
[Postprocessors]
[./disp_y_n4]
type = NodalVariableValue
variable = disp_y
nodeid = 3
[../]
[./disp_y_n2]
type = NodalVariableValue
variable = disp_y
nodeid = 1
[../]
[./forces_y]
type = PointValue
point = '10.0 59.9 0.0'
variable = forces_y
[../]
[]
[Outputs]
csv = true
exodus = true
[]
(modules/solid_mechanics/test/tests/beam/constraints/glued_constraint.i)
# Test for glued beam constraint.
#
# Using a simple L-shaped geometry with a glued constraint at the
# corner between the two beams. The longer beam properties and loading is
# taken from an earlier beam regression test for static loading. The maximum
# applied load of 50000 lb should result in a displacement of 3.537e-3. Since
# the constraint is glued, the y-dir displacement of the long beam is
# 3.537e-3 and the short beam y-dir displacement is the same. The stiffness of
# the short beam is much less than the longer beam and thus should not
# significantly influence the displacement solution.
[Mesh]
file = beam_cons_patch.e
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = '1001 1003'
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = '1001 1003'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = '1001 1003'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = '1001 1003'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = '1001 1003'
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = '1001 1003'
value = 0.0
[../]
[]
[Constraints]
[./tie_y_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = disp_y
[../]
[./tie_x_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = disp_x
[../]
[./tie_z_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = disp_z
[../]
[./tie_rot_y_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = rot_y
[../]
[./tie_rot_x_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = rot_x
[../]
[./tie_rot_z_fuel]
type = NodalStickConstraint
penalty = 1.2e14
boundary = 1005
secondary = 1004
variable = rot_z
[../]
[]
[Functions]
[./force_loading]
type = PiecewiseLinear
x = '0.0 5.0'
y = '0.0 50000.0'
[../]
[./disp_y_ramp]
type = PiecewiseLinear
x = '0.0 5.0'
y = '0.0 1e-2'
[../]
[]
[NodalKernels]
[./force_x2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = '1004'
function = force_loading
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = 'none'
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-8
dt = 1
dtmin = 1
end_time = 5
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '1 2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity_pipe]
type = ComputeElasticityBeam
shear_coefficient = 1.0
youngs_modulus = 30e6
poissons_ratio = 0.3
block = 1
outputs = exodus
output_properties = 'material_stiffness material_flexure'
[../]
[./strain_pipe]
type = ComputeIncrementalBeamStrain
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 28.274
Ay = 0.0
Az = 0.0
Iy = 1.0
Iz = 1.0
y_orientation = '0.0 0.0 1.0'
[../]
[./stress_pipe]
type = ComputeBeamResultants
block = 1
outputs = exodus
output_properties = 'forces moments'
[../]
[./elasticity_cons]
type = ComputeElasticityBeam
shear_coefficient = 1.0
youngs_modulus = 10e2
poissons_ratio = 0.3
block = 2
outputs = exodus
output_properties = 'material_stiffness material_flexure'
[../]
[./strain_cons]
type = ComputeIncrementalBeamStrain
block = '2'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 1.0
Ay = 0.0
Az = 0.0
Iy = 1.0
Iz = 1.0
y_orientation = '0.0 0.0 1.0'
[../]
[./stress_cons]
type = ComputeBeamResultants
block = 2
outputs = exodus
output_properties = 'forces moments'
[../]
[]
[Postprocessors]
[./disp_y_n4]
type = NodalVariableValue
variable = disp_y
nodeid = 3
[../]
[./disp_y_n2]
type = NodalVariableValue
variable = disp_y
nodeid = 1
[../]
[./forces_y]
type = PointValue
point = '10.0 59.9 0.0'
variable = forces_y
[../]
[]
[Outputs]
csv = true
exodus = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass_file.i)
# Test for small strain euler beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The beam is massless with a lumped masses at the ends of the beam.
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 1e4
# Shear modulus (G) = 4e7
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 0.01
# Iy = 1e-4 = Iz
# Length (L)= 4 m
# mass = 0.01899772 at the cantilever end
# mass = 2.0 at the fixed end (just for file testing purposes does not alter result)
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 6.4e6
# Therefore, the beam behaves like a Euler-Bernoulli beam.
# The theoretical first frequency of this beam is:
# f1 = 1/(2 pi) * sqrt(3EI/(mL^3)) = 0.25
# This implies that the corresponding time period of this beam is 4s.
# The FEM solution for this beam with 10 element gives time periods of 4s with time step of 0.01s.
# A higher time step of 0.1 s is used in the test to reduce computational time.
# The time history from this analysis matches with that obtained from Abaqus.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0.0 0.0 0.0 0.0
# 0.1 0.0013076435060869 0.026152870121738 0.52305740243477
# 0.2 0.0051984378734383 0.051663017225289 -0.01285446036375
# 0.3 0.010269120909367 0.049750643493289 -0.02539301427625
# 0.4 0.015087433925158 0.046615616822532 -0.037307519138892
# 0.5 0.019534963888307 0.042334982440433 -0.048305168503101
[Mesh]
type = GeneratedMesh
xmin = 0.0
xmax = 4.0
nx = 10
dim = 1
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[]
[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
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[./x_inertial]
type = NodalTranslationalInertia
variable = disp_x
velocity = vel_x
acceleration = accel_x
boundary = 'left right'
beta = 0.25
gamma = 0.5
# nodal_mass_file = nodal_mass.csv # commented out for testing error message
[../]
[./y_inertial]
type = NodalTranslationalInertia
variable = disp_y
velocity = vel_y
acceleration = accel_y
boundary = 'left right'
beta = 0.25
gamma = 0.5
nodal_mass_file = nodal_mass.csv
[../]
[./z_inertial]
type = NodalTranslationalInertia
variable = disp_z
velocity = vel_z
acceleration = accel_z
boundary = 'left right'
beta = 0.25
gamma = 0.5
nodal_mass_file = nodal_mass.csv
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.1 0.2 10.0'
y = '0.0 1e-2 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type'
petsc_options_value = 'preonly lu'
dt = 0.1
end_time = 5.0
timestep_tolerance = 1e-6
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e4
poissons_ratio = -0.999875
shear_coefficient = 1.0
block = 0
[../]
[./strain]
type = ComputeIncrementalBeamStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 0.01
Ay = 0.0
Az = 0.0
Iy = 1.0e-4
Iz = 1.0e-4
y_orientation = '0.0 1.0 0.0'
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
file_base = dyn_euler_small_added_mass_out
exodus = true
csv = true
perf_graph = true
[]
(test/tests/outputs/debug/show_execution_nodal_kernels_bcs.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[]
[sub]
type = SubdomainBoundingBoxGenerator
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = 'gen'
block_id = '1'
[]
[]
[Debug]
show_execution_order = ALWAYS
[]
[Variables]
[u]
block = '0 1'
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[rxn]
type = Reaction
variable = u
[]
[]
[NodalKernels]
[source]
type = UserForcingFunctionNodalKernel
variable = u
block = '1'
function = '1'
[]
[bc_all]
type = PenaltyDirichletNodalKernel
variable = u
value = 0
boundary = 'right bottom'
penalty = 1e10
[]
[]
[Executioner]
type = Steady
[]
(modules/solid_mechanics/test/tests/beam/static/euler_finite_rot_z.i)
# Large strain/large rotation cantilever beam test
# A 300 N point load is applied at the end of a 4 m long cantilever beam.
# Young's modulus (E) = 1e4
# Shear modulus (G) = 1e8
# Poisson's ratio (nu) = -0.99995
# shear coefficient (k) = 1.0
# Area (A) = 1.0
# Iy = Iz = 0.16
# The dimensionless parameter alpha = kAGL^2/EI = 1e6
# Since the value of alpha ia quite high, the beam behaves like
# a thin beam where shear effects are not significant.
# Beam deflection:
# small strain+rot = 3.998 m (exact 4.0)
# large strain + small rotation = -0.05 m in x and 3.74 m in z
# large rotations + small strain = -0.92 m in x and 2.38 m in z
# large rotations + large strain = -0.954 m in x and 2.37 m in z (exact -1.0 m in x and 2.4 m in z)
# References:
# K. E. Bisshopp and D.C. Drucker, Quaterly of Applied Mathematics, Vol 3, No. 3, 1945.
[Mesh]
type = FileMesh
file = beam_finite_rot_test_2.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = 1
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = 1
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = 1
value = 0.0
[../]
[]
[NodalKernels]
[./force_z2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = 2
function = force
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 2.0 8.0'
y = '0.0 300.0 300.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
nl_max_its = 50
nl_rel_tol = 1e-9
nl_abs_tol = 1e-7
l_max_its = 50
dt = 0.05
end_time = 2.1
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1e4
poissons_ratio = -0.99995
shear_coefficient = 1.0
block = 1
[../]
[./strain]
type = ComputeFiniteBeamStrain
block = '1'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 1.0
Ay = 0.0
Az = 0.0
Iy = 0.16
Iz = 0.16
y_orientation = '0.0 1.0 0.0'
large_strain = true
[../]
[./stress]
type = ComputeBeamResultants
block = 1
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_z
[../]
[./rot_z]
type = PointValue
point = '4.0 0.0 0.0'
variable = rot_y
[../]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_timoshenko_small.i)
# Test for small strain Timoshenko beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 2e4
# Shear modulus (G) = 1e4
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 1.0
# Iy = 1.0 = Iz
# Length (L)= 4 m
# density (rho) = 1.0
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 8
# Therefore, the beam behaves like a Timoshenko beam.
# The FEM solution for this beam with 100 elements give first natural period of 0.2731s with a time step of 0.005.
# The acceleration, velocity and displacement time histories obtained from MOOSE matches with those obtained from ABAQUS.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0.0 0.0 0.0 0.0
# 0.005 2.5473249455812e-05 0.010189299782325 4.0757199129299
# 0.01 5.3012872677486e-05 0.00082654950634483 -7.8208200233219
# 0.015 5.8611622914354e-05 0.0014129505884026 8.055380456145
# 0.02 6.766113649781e-05 0.0022068548449798 -7.7378187535141
# 0.025 7.8981810558437e-05 0.0023214147792709 7.7836427272305
# Note that the theoretical first frequency of the beam using Euler-Bernoulli theory is:
# f1 = 1/(2 pi) * (3.5156/L^2) * sqrt(EI/rho) = 4.9455
# This implies that the corresponding time period of this beam (under Euler-Bernoulli assumption) is 0.2022s.
# This shows that Euler-Bernoulli beam theory under-predicts the time period of a thick beam. In other words, the Euler-Bernoulli beam theory predicts a more compliant beam than reality for a thick beam.
[Mesh]
type = GeneratedMesh
xmin = 0
xmax = 4.0
nx = 100
dim = 1
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_z]
order = FIRST
family = LAGRANGE
[../]
[]
[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
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_z]
type = NewmarkAccelAux
variable = rot_accel_z
displacement = rot_z
velocity = rot_vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_z]
type = NewmarkVelAux
variable = rot_vel_z
acceleration = rot_accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.005 0.01 1.0'
y = '0.0 1.0 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
line_search = 'none'
nl_rel_tol = 1e-11
nl_abs_tol = 1e-11
start_time = 0.0
dt = 0.005
end_time = 0.5
timestep_tolerance = 1e-6
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[./inertial_force_x]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 1.0
Iy = 1.0
Iz = 1.0
Ay = 0.0
Az = 0.0
component = 0
variable = disp_x
[../]
[./inertial_force_y]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 1.0
Iy = 1.0
Iz = 1.0
Ay = 0.0
Az = 0.0
component = 1
variable = disp_y
[../]
[./inertial_force_z]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 1.0
Iy = 1.0
Iz = 1.0
Ay = 0.0
Az = 0.0
component = 2
variable = disp_z
[../]
[./inertial_force_rot_x]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 1.0
Iy = 1.0
Iz = 1.0
Ay = 0.0
Az = 0.0
component = 3
variable = rot_x
[../]
[./inertial_force_rot_y]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 1.0
Iy = 1.0
Iz = 1.0
Ay = 0.0
Az = 0.0
component = 4
variable = rot_y
[../]
[./inertial_force_rot_z]
type = InertialForceBeam
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.25
gamma = 0.5
area = 1.0
Iy = 1.0
Iz = 1.0
Ay = 0.0
Az = 0.0
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 2e4
poissons_ratio = 0.0
shear_coefficient = 1.0
block = 0
[../]
[./strain]
type = ComputeIncrementalBeamStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 1.0
Ay = 0.0
Az = 0.0
Iy = 1.0
Iz = 1.0
y_orientation = '0.0 1.0 0.0'
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free_orientation_inclined_hht.i)
# Test to verify the fundamental natural frequency of a one element ADComputeShellStress
# BCs: Clamped on one end, free on others.
# Initial perturbation applied to edge of the beam. After that, the shell vibrates freely.
#
# Results have been compared for various thicknesses with the following approximate Results
# (Moose results were obtained with 8 elements along the length)
# Thickness = 0.1. Reference freq: 10.785 Hz, Moose freq: 10.612 Hz
# Thickness = 0.05. Reference freq: 5.393 Hz, Moose freq: 5.335 Hz
# Thickness = 0.025. Reference freq: 2.696 Hz, Moose freq: 2.660 Hz
#
# Reference values have been obtained from Robert Blevins, "Formulas for Dynamics, Acoustics and Vibration",
# Table 5.3 case 11. Formula looks like: f = lambda^2/(2*pi*a^2) * sqrt(E*h^2/(12*(1-nu*nu))), where lambda
# changes as a function of shell dimensions.
# This test uses one single element for speed reasons.
# Here, the shell, instead of being on the XY plane, is oriented at a 45 deg. angle
# with respect to the Y axis.
[Mesh]
type = FileMesh
file = shell_inclined.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./rot_x]
[../]
[./rot_y]
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
# aux variables for dynamics
[./vel_x]
[../]
[./vel_y]
[../]
[./vel_z]
[../]
[./accel_x]
[../]
[./accel_y]
[../]
[./accel_z]
[../]
[./rot_vel_x]
[../]
[./rot_vel_y]
[../]
[./rot_accel_x]
[../]
[./rot_accel_y]
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
[../]
# Kernels for dynamics
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = '0'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = '0'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = '0'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = '0'
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = '0'
value = 0.0
[../]
[]
[Functions]
[./force_function]
type = PiecewiseLinear
x = '0.0 0.01 0.15 10.0'
y = '0.0 0.01 0.0 0.0'
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = '2'
function = force_function
[../]
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[../]
[./inertial_force_x]
type = ADInertialForceShell
use_displaced_mesh = true
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 0
variable = disp_x
thickness = 0.1
eta = 0.0
alpha = 0.0
[../]
[./inertial_force_y]
type = ADInertialForceShell
use_displaced_mesh = true
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 1
variable = disp_y
thickness = 0.1
eta = 0.0
alpha = 0.0
[../]
[./inertial_force_z]
type = ADInertialForceShell
use_displaced_mesh = true
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 2
variable = disp_z
thickness = 0.1
eta = 0.0
alpha = 0.0
[../]
[./inertial_force_rot_x]
type = ADInertialForceShell
use_displaced_mesh = true
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 3
variable = rot_x
thickness = 0.1
eta = 0.0
alpha = 0.0
[../]
[./inertial_force_rot_y]
type = ADInertialForceShell
use_displaced_mesh = true
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 4
variable = rot_y
thickness = 0.1
eta = 0.0
alpha = 0.0
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 2100000
poissons_ratio = 0.3
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_z_tip]
type = PointValue
point = '0.0 1.06 1.06'
variable = disp_z
[../]
[./rot_x_tip]
type = PointValue
point = '0.0 1.06 1.06'
variable = rot_x
[../]
[./stress_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yy
[../]
[./stress_yy_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yy
[../]
[./stress_yy_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yy
[../]
[./stress_yy_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yy
[../]
[./stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[../]
[./stress_yz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yz
[../]
[./stress_yz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yz
[../]
[./stress_yz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yz
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-11
nl_max_its = 15
nl_rel_tol = 1e-11
nl_abs_tol = 1e-10
l_max_its = 20
dt = 0.005
dtmin = 0.005
timestep_tolerance = 2e-13
end_time = 0.5
[./TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[../]
[]
[Outputs]
perf_graph = true
csv = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass2.i)
# Test for small strain euler beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 5ft (60 in).
# The beam is massless with a lumped mass at the end of the beam of 5000 lb
# The properties of the cantilever beam are as follows:
# E = 1e7 and I = 120 in^4
# Assuming a square cross section A = sqrt(12 * I) = 37.95
# Shear modulus (G) = 3.846e6
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 1.0
# mass (m) = 5000 lb / 386 = 12.95
# The theoretical first frequency of this beam is:
# f1 = 1/(2 pi) * sqrt(3EI/(mL^3)) = 5.71 cps
# This implies that the corresponding time period of this beam is 0.175 s.
# The FEM solution for this beam with 10 elements gives
# a time period of 0.175 s with time step of 0.005 s.
# Reference: Strength of Materials by Marin ans Sauer, 2nd Ed.
# Example Problem 11-50, pg. 375
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0.0
xmax = 60.0
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[]
[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
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[./x_inertial]
type = NodalTranslationalInertia
variable = disp_x
velocity = vel_x
acceleration = accel_x
boundary = right
beta = 0.25
gamma = 0.5
mass = 12.95
[../]
[./y_inertial]
type = NodalTranslationalInertia
variable = disp_y
velocity = vel_y
acceleration = accel_y
boundary = right
beta = 0.25
gamma = 0.5
mass = 12.95
[../]
[./z_inertial]
type = NodalTranslationalInertia
variable = disp_z
velocity = vel_z
acceleration = accel_z
boundary = right
beta = 0.25
gamma = 0.5
mass = 12.95
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.1 0.2 10.0'
y = '0.0 1e2 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
line_search = 'none'
l_tol = 1e-8
l_max_its = 50
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
start_time = 0.0
dt = 0.005
end_time = 1.5
timestep_tolerance = 1e-6
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e7
poissons_ratio = 0.30005200208
shear_coefficient = 1.0
block = 0
[../]
[./strain]
type = ComputeIncrementalBeamStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 37.95
Ay = 0.0
Az = 0.0
Iy = 120.0
Iz = 120.0
y_orientation = '0.0 1.0 0.0'
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '60.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '60.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '60.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '60.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/central_difference/consistent/1D/1d_consistent_implicit.i)
# Test for Newmark Beta integration for a 1D element
# Consistent mass matrix
[Mesh]
type = GeneratedMesh
xmin = 0
xmax = 10
nx = 5
dim = 1
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x'
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[]
[NodalKernels]
[./force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = right
function = force_x
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # force
scale_factor = 1e3
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x'
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 2500
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
dtmin = 1e-4
timestep_tolerance = 1e-6
start_time = -0.005
end_time = 0.1
dt = 0.005
[./TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[../]
[]
[Postprocessors]
[./disp_x]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./vel_x]
type = NodalVariableValue
nodeid = 1
variable = vel_x
[../]
[./accel_x]
type = NodalVariableValue
nodeid = 1
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
perf_graph = false
[]
(modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment.i)
# Test that models bending of a cantilever beam using shell elements
# A cantilever beam of length 10 m (in Y direction) and cross-section
# 1 m x 0.1 m is modeled using 4 shell elements placed along the length
# (Figure 6a from Dvorkin and Bathe, 1984). All displacements and
# X rotations are fixed on the bottom boundary. E = 2100000 and v = 0.0.
# A load of 0.5 N (in the Z direction) is applied at each node on the top
# boundary resulting in a total load of 1 N.
# The analytical solution for displacement at tip using small strain/rotations # is PL^3/3EI + PL/AG = 1.90485714 m
# The FEM solution using 4 shell elements is 1.875095 m with a relative error
# of 1.5%.
# Similarly, the analytical solution for slope at tip is PL^2/2EI = 0.285714286
# The FEM solution is 0.2857143 and the relative error is 5e-6%.
# The stress_yy for the four elements at z = -0.57735 * (t/2) (first qp below mid-surface of shell) are:
# 3031.089 Pa, 2165.064 Pa, 1299.038 Pa and 433.0127 Pa.
# Note the above values are the average stresses in each element.
# Analytically, stress_yy decreases linearly from y = 0 to y = 10 m.
# The maximum value of stress_yy at y = 0 is Mz/I = PL * 0.57735*(t/2)/I = 3464.1 Pa
# Therefore, the analytical value of stress at z = -0.57735 * (t/2) at the mid-point
# of the four elements are:
# 3031.0875 Pa, 2165.0625 Pa, 1299.0375 Pa ,433.0125 Pa
# The relative error in stress_yy is in the order of 5e-5%.
# The stress_yz at z = -0.57735 * (t/2) at all four elements from the simulation is 10 Pa.
# The analytical solution for the shear stress is: V/2/I *((t^2)/4 - z^2), where the shear force (V)
# is 1 N at any y along the length of the beam. Therefore, the analytical shear stress at
# z = -0.57735 * (t/2) is 10 Pa at any location along the length of the beam.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 4
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 10.0
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
# aux variables for dynamics
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
[../]
# Kernels for dynamics
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = 'bottom'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = 'bottom'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = 'bottom'
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = 'bottom'
value = 0.0
[../]
[]
[Functions]
[./force_function]
type = PiecewiseLinear
x = '0.0 1.0'
y = '0.0 0.5'
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = 'top'
function = force_function
[../]
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[../]
[./inertial_force_x]
type = ADInertialForceShell
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 0
variable = disp_x
thickness = 0.1
[../]
[./inertial_force_y]
type = ADInertialForceShell
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 1
variable = disp_y
thickness = 0.1
[../]
[./inertial_force_z]
type = ADInertialForceShell
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 2
variable = disp_z
thickness = 0.1
[../]
[./inertial_force_rot_x]
type = ADInertialForceShell
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 3
variable = rot_x
thickness = 0.1
[../]
[./inertial_force_rot_y]
type = ADInertialForceShell
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 4
variable = rot_y
thickness = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 2100000
poissons_ratio = 0.0
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_z_tip]
type = PointValue
point = '1.0 10.0 0.0'
variable = disp_z
[../]
[./rot_x_tip]
type = PointValue
point = '0.0 10.0 0.0'
variable = rot_x
[../]
[./stress_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yy
[../]
[./stress_yy_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yy
[../]
[./stress_yy_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yy
[../]
[./stress_yy_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yy
[../]
[./stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[../]
[./stress_yz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yz
[../]
[./stress_yz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yz
[../]
[./stress_yz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yz
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_max_its = 2
nl_rel_tol = 1e-10
nl_abs_tol = 5e-8
dt = 0.0005
dtmin = 0.0005
end_time = 1
[TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[]
[]
[Outputs]
csv = true
[]
(test/tests/functors/matching-analytic-solution/test.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
nx = 20
[]
[]
[Variables]
[u][]
[]
[AuxVariables]
[nodal][]
[elemental]
type = MooseVariableFVReal
[]
[elemental_grad]
type = MooseVariableFVReal
[]
[elemental_dot]
type = MooseVariableFVReal
[]
[elemental_grad_dot]
type = MooseVariableFVReal
[]
[]
[AuxKernels]
[nodal]
type = FunctorAux
functor = u
variable = nodal
[]
[elemental]
type = FunctorAux
functor = u
variable = elemental
[]
[elemental_dot]
type = FunctorAux
functor = dmat_dt
variable = elemental_dot
[]
[elemental_grad]
type = FunctorVectorElementalAux
functor = grad_mat
component = 0
variable = elemental_grad
[]
[elemental_grad_dot]
type = FunctorVectorElementalAux
functor = grad_dmat_dt
component = 0
variable = elemental_grad_dot
[]
[]
[Functions]
[analytic]
type = ParsedFunction
expression = 'x*t'
[]
[grad]
type = ParsedFunction
expression = 't'
[]
[dot]
type = ParsedFunction
expression = 'x'
[]
[grad_dot]
type = ParsedFunction
expression = '1'
[]
[]
[FunctorMaterials]
[val_dot_grad_dot]
type = ADGenericFunctorMaterial
prop_names = 'mat'
prop_values = 'u'
[]
[grad]
type = ADGenericFunctorGradientMaterial
prop_names = 'grad_mat'
prop_values = 'u'
[]
[]
[NodalKernels]
[rxn]
type = ReactionNodalKernel
variable = u
[]
[ffn]
type = UserForcingFunctionNodalKernel
variable = u
function = analytic
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
num_steps = 1
dt = 1
[]
[Postprocessors]
[u_err]
type = ElementL2FunctorError
approximate = u
exact = analytic
[]
[nodal_err]
type = ElementL2FunctorError
approximate = nodal
exact = analytic
[]
[elemental_err]
type = ElementL2FunctorError
approximate = elemental
exact = analytic
[]
[dot_err]
type = ElementL2FunctorError
approximate = elemental_dot
exact = dot
[]
[grad_err]
type = ElementL2FunctorError
approximate = elemental_grad
exact = grad
[]
[grad_dot_err]
type = ElementL2FunctorError
approximate = elemental_grad_dot
exact = grad_dot
[]
[]
[Outputs]
csv = true
[]
(test/tests/nodalkernels/scaling/scaling.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 40
[]
[Variables]
[u][]
[]
[NodalKernels]
[time]
type = CoefTimeDerivativeNodalKernel
variable = u
coeff = 2
[]
[reaction]
type = ReactionNodalKernel
variable = u
coeff = 2
[]
[ffn]
type = UserForcingFunctionNodalKernel
variable = u
function = 1
[]
[]
[Executioner]
type = Transient
num_steps = 1
automatic_scaling = true
verbose = true
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/shell/dynamics/shell_dynamics_bending_moment_free_orientation_inclined.i)
# Test to verify the fundamental natural frequency of a one element ADComputeShellStress
# BCs: Clamped on one end, free on others.
# Initial perturbation applied to edge of the beam. After that, the shell vibrates freely.
#
# Results have been compared for various thicknesses with the following approximate Results
# (Moose results were obtained with 8 elements along the length)
# Thickness = 0.1. Reference freq: 10.785 Hz, Moose freq: 10.612 Hz
# Thickness = 0.05. Reference freq: 5.393 Hz, Moose freq: 5.335 Hz
# Thickness = 0.025. Reference freq: 2.696 Hz, Moose freq: 2.660 Hz
#
# Reference values have been obtained from Robert Blevins, "Formulas for Dynamics, Acoustics and Vibration",
# Table 5.3 case 11. Formula looks like: f = lambda^2/(2*pi*a^2) * sqrt(E*h^2/(12*(1-nu*nu))), where lambda
# changes as a function of shell dimensions.
# This test uses one single element for speed reasons.
# Here, the shell, instead of being on the XY plane, is oriented at a 45 deg. angle
# with respect to the Y axis.
[Mesh]
type = FileMesh
file = shell_inclined.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./rot_x]
[../]
[./rot_y]
[../]
[]
[AuxVariables]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
# aux variables for dynamics
[./vel_x]
[../]
[./vel_y]
[../]
[./vel_z]
[../]
[./accel_x]
[../]
[./accel_y]
[../]
[./accel_z]
[../]
[./rot_vel_x]
[../]
[./rot_vel_y]
[../]
[./rot_accel_x]
[../]
[./rot_accel_y]
[../]
[]
[AuxKernels]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
variable = stress_yz
rank_two_tensor = global_stress_t_points_0
index_i = 1
index_j = 2
[../]
# Kernels for dynamics
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = '0'
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = '0'
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = '0'
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = '0'
value = 0.0
[../]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = '0'
value = 0.0
[../]
[]
[Functions]
[./force_function]
type = PiecewiseLinear
x = '0.0 0.01 0.15 10.0'
y = '0.0 0.01 0.0 0.0'
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = '2'
function = force_function
[../]
[]
[Kernels]
[./solid_disp_x]
type = ADStressDivergenceShell
block = '0'
component = 0
variable = disp_x
through_thickness_order = SECOND
[../]
[./solid_disp_y]
type = ADStressDivergenceShell
block = '0'
component = 1
variable = disp_y
through_thickness_order = SECOND
[../]
[./solid_disp_z]
type = ADStressDivergenceShell
block = '0'
component = 2
variable = disp_z
through_thickness_order = SECOND
[../]
[./solid_rot_x]
type = ADStressDivergenceShell
block = '0'
component = 3
variable = rot_x
through_thickness_order = SECOND
[../]
[./solid_rot_y]
type = ADStressDivergenceShell
block = '0'
component = 4
variable = rot_y
through_thickness_order = SECOND
[../]
[./inertial_force_x]
type = ADInertialForceShell
use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 0
variable = disp_x
thickness = 0.1
[../]
[./inertial_force_y]
type = ADInertialForceShell
use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 1
variable = disp_y
thickness = 0.1
[../]
[./inertial_force_z]
type = ADInertialForceShell
use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 2
variable = disp_z
thickness = 0.1
[../]
[./inertial_force_rot_x]
type = ADInertialForceShell
use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 3
variable = rot_x
thickness = 0.1
[../]
[./inertial_force_rot_y]
type = ADInertialForceShell
use_displaced_mesh = true
eta = 0.0
block = 0
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y'
rotational_accelerations = 'rot_accel_x rot_accel_y'
component = 4
variable = rot_y
thickness = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ADComputeIsotropicElasticityTensorShell
youngs_modulus = 2100000
poissons_ratio = 0.3
block = 0
through_thickness_order = SECOND
[../]
[./strain]
type = ADComputeIncrementalShellStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y'
thickness = 0.1
through_thickness_order = SECOND
[../]
[./stress]
type = ADComputeShellStress
block = 0
through_thickness_order = SECOND
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Postprocessors]
[./disp_z_tip]
type = PointValue
point = '0.0 1.06 1.06'
variable = disp_z
[../]
[./rot_x_tip]
type = PointValue
point = '0.0 1.06 1.06'
variable = rot_x
[../]
[./stress_yy_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yy
[../]
[./stress_yy_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yy
[../]
[./stress_yy_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yy
[../]
[./stress_yy_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yy
[../]
[./stress_yz_el_0]
type = ElementalVariableValue
elementid = 0
variable = stress_yz
[../]
[./stress_yz_el_1]
type = ElementalVariableValue
elementid = 1
variable = stress_yz
[../]
[./stress_yz_el_2]
type = ElementalVariableValue
elementid = 2
variable = stress_yz
[../]
[./stress_yz_el_3]
type = ElementalVariableValue
elementid = 3
variable = stress_yz
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-11
nl_max_its = 15
nl_rel_tol = 1e-11
nl_abs_tol = 1e-10
l_max_its = 20
dt = 0.005
dtmin = 0.005
timestep_tolerance = 2e-13
end_time = 0.5
[./TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[../]
[]
[Outputs]
perf_graph = true
csv = true
[]
(modules/solid_mechanics/test/tests/beam/dynamic/dyn_euler_small_added_mass.i)
# Test for small strain euler beam vibration in y direction
# An impulse load is applied at the end of a cantilever beam of length 4m.
# The beam is massless with a lumped mass at the end of the beam
# The properties of the cantilever beam are as follows:
# Young's modulus (E) = 1e4
# Shear modulus (G) = 4e7
# Shear coefficient (k) = 1.0
# Cross-section area (A) = 0.01
# Iy = 1e-4 = Iz
# Length (L)= 4 m
# mass (m) = 0.01899772
# For this beam, the dimensionless parameter alpha = kAGL^2/EI = 6.4e6
# Therefore, the beam behaves like a Euler-Bernoulli beam.
# The theoretical first frequency of this beam is:
# f1 = 1/(2 pi) * sqrt(3EI/(mL^3)) = 0.25
# This implies that the corresponding time period of this beam is 4s.
# The FEM solution for this beam with 10 element gives time periods of 4s with time step of 0.01s.
# A higher time step of 0.1 s is used in the test to reduce computational time.
# The time history from this analysis matches with that obtained from Abaqus.
# Values from the first few time steps are as follows:
# time disp_y vel_y accel_y
# 0.0 0.0 0.0 0.0
# 0.1 0.0013076435060869 0.026152870121738 0.52305740243477
# 0.2 0.0051984378734383 0.051663017225289 -0.01285446036375
# 0.3 0.010269120909367 0.049750643493289 -0.02539301427625
# 0.4 0.015087433925158 0.046615616822532 -0.037307519138892
# 0.5 0.019534963888307 0.042334982440433 -0.048305168503101
[Mesh]
type = GeneratedMesh
xmin = 0.0
xmax = 4.0
nx = 10
dim = 1
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[]
[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
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[]
[NodalKernels]
[./force_y2]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force
[../]
[./x_inertial]
type = NodalTranslationalInertia
variable = disp_x
velocity = vel_x
acceleration = accel_x
boundary = right
beta = 0.25
gamma = 0.5
mass = 0.01899772
[../]
[./y_inertial]
type = NodalTranslationalInertia
variable = disp_y
velocity = vel_y
acceleration = accel_y
boundary = right
beta = 0.25
gamma = 0.5
mass = 0.01899772
[../]
[./z_inertial]
type = NodalTranslationalInertia
variable = disp_z
velocity = vel_z
acceleration = accel_z
boundary = right
beta = 0.25
gamma = 0.5
mass = 0.01899772
[../]
[]
[Functions]
[./force]
type = PiecewiseLinear
x = '0.0 0.1 0.2 10.0'
y = '0.0 1e-2 0.0 0.0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type'
petsc_options_value = 'preonly lu'
dt = 0.1
end_time = 5.0
timestep_tolerance = 1e-6
[]
[Kernels]
[./solid_disp_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[../]
[./solid_disp_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[../]
[./solid_disp_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[../]
[./solid_rot_x]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[../]
[./solid_rot_y]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[../]
[./solid_rot_z]
type = StressDivergenceBeam
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[../]
[]
[Materials]
[./elasticity]
type = ComputeElasticityBeam
youngs_modulus = 1.0e4
poissons_ratio = -0.999875
shear_coefficient = 1.0
block = 0
[../]
[./strain]
type = ComputeIncrementalBeamStrain
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
area = 0.01
Ay = 0.0
Az = 0.0
Iy = 1.0e-4
Iz = 1.0e-4
y_orientation = '0.0 1.0 0.0'
[../]
[./stress]
type = ComputeBeamResultants
block = 0
[../]
[]
[Postprocessors]
[./disp_x]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_x
[../]
[./disp_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = disp_y
[../]
[./vel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = vel_y
[../]
[./accel_y]
type = PointValue
point = '4.0 0.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
exodus = true
csv = true
perf_graph = true
[]