Lead-Rubber Isolator
The lead-rubber (LR) isolator material should be used with two-noded beam or link type elements in MASTODON. For each subdomain (which may contain multiple link elements), the material properties are defined by creating material blocks, ComputeIsolatorDeformation
and ComputeLRIsolatorElasticity
, and the kernel block, StressDivergenceIsolator
. A sample definition of the kernel and material block is shown in the input file below.
[Kernels<<<{"href": "../../../syntax/Kernels/index.html"}>>>]
[./lr_disp_x]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 0
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_x
[../]
[./lr_disp_y]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 1
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_y
[../]
[./lr_disp_z]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 2
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_z
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_z
[../]
[./lr_rot_x]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 3
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_x
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_xx
[../]
[./lr_rot_y]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 4
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_y
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_yy
[../]
[./lr_rot_z]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 5
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_z
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_zz
[../]
[]
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[./deformation]
type = ComputeIsolatorDeformation<<<{"description": "Compute the deformations and rotations in a two-noded isolator element.", "href": "../../../source/materials/ComputeIsolatorDeformation.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 0
sd_ratio<<<{"description": "Shear distance ratio."}>>> = 0.5
y_orientation<<<{"description": "Orientation of the local Y direction along which, Ky is provided. This should be perpendicular to the axis of the isolator."}>>> = '0.0 1.0 0.0'
displacements<<<{"description": "The displacement variables appropriate for the simulation geometry and coordinate system."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables appropriate for the simulation geometry and coordinate system."}>>> = 'rot_x rot_y rot_z'
velocities<<<{"description": "Translational velocity variables."}>>> = 'vel_x vel_y vel_z'
[../]
[./elasticity]
type = ComputeLRIsolatorElasticity<<<{"description": "Compute the forces and the stiffness matrix for an LR isolator element.", "href": "../../../source/materials/ComputeLRIsolatorElasticity.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 0
fy<<<{"description": "Yield strength of the bearing."}>>> = 207160
alpha<<<{"description": "Ratio of post-yield shear stiffness to the initial elastic shear stiffness of the bearing. This is dimensionless"}>>> = 0.03812
G_rubber<<<{"description": "Shear modulus of rubber."}>>> = 0.87e6
K_rubber<<<{"description": "Bulk modulus of rubber."}>>> = 2e9
D1<<<{"description": "Diameter of lead core."}>>> = 0.1397
D2<<<{"description": "Outer diameter of the bearing."}>>> = 0.508
ts<<<{"description": "Thickness of a single steel shim."}>>> = 0.00476
tr<<<{"description": "Thickness of a single rubber layer."}>>> = 0.009525
n<<<{"description": "Number of rubber layers."}>>> = 16
tc<<<{"description": "Thickness of the rubber cover of the bearing."}>>> = 0.0127
kc<<<{"description": "Cavitation parameter."}>>> = 20
phi_m<<<{"description": "Damage index."}>>> = 0.75
ac<<<{"description": "Strength degradation parameter."}>>> = 1
cd<<<{"description": "Viscous damping parameter."}>>> = 0
gamma<<<{"description": "Gamma parameter of Newmark algorithm."}>>> = 0.5
beta<<<{"description": "Beta parameter of Newmark algorithm."}>>> = 0.25
k_steel<<<{"description": "Thermal conductivity of steel. Defaults to 50.0 W/(m-oC)."}>>> = 50
a_steel<<<{"description": "Thermal diffusivity of steel. Defaults to 1.41e-05 m2/s."}>>> = 1.41e-5
rho_lead<<<{"description": "Density of lead. Defaults to 11200 kg/m3."}>>> = 11200
c_lead<<<{"description": "Specific heat capacity of lead. Defaults to 130.0 N-m/kg oC."}>>> = 130
cavitation<<<{"description": "Switch for modeling cavitation and post-cavitation."}>>> = true
horizontal_stiffness_variation<<<{"description": "Switch for modeling variation of horizontal stiffness during the analysis."}>>> = true
vertical_stiffness_variation<<<{"description": "Switch for modeling variation of vertical stiffness during the analysis."}>>> = true
strength_degradation<<<{"description": "Switch for modeling strength degradation due to lead core heating."}>>> = true
buckling_load_variation<<<{"description": "Switch for modeling buckling load variation during the analysis."}>>> = true
[../]
[]
(test/tests/materials/lr_isolator/lr_isolator_axial_ct.i)A description of each of the input parameters is provided in the syntax description below. Additionally, the behavior of the LR isolator element in the axial and shear directions is demonstrated using the three examples described below. Analysis results are compared with verified and validated numerical models implemented in the commercial software code, ABAQUS Dassault Systòmes (2018).
Example 1: Response to axial loading
The input file below demonstrates the response of the LR isolator element in the axial direction. A cyclic displacement is applied at the top node of the isolator in the axial (local X) direction while the bottom node is restrained in all six degrees of freedom. To simulate the coupled (shear and axial) response, a ramped displacement is applied at the top node in the shear (local Y) direction.
# Test for lead rubber isolator in Axial (compression and tension)
#Loading conditions
# i) A ramp displacement in shear(y_direction)
# ii) A cyclic displacement loading in axial (x_direction)
[Mesh<<<{"href": "../../../syntax/Mesh/index.html"}>>>]
type = GeneratedMesh
xmin = 0
xmax = 1
nx = 1
dim = 1
displacements<<<{"description": "The variables corresponding to the x y z displacements of the mesh. If this is provided then the displacements will be taken into account during the computation. Creation of the displaced mesh can be suppressed even if this is set by setting 'use_displaced_mesh = false'."}>>> = 'disp_x disp_y disp_z'
[]
[Variables<<<{"href": "../../../syntax/Variables/index.html"}>>>]
[./disp_x]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./disp_y]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./disp_z]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./rot_x]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./rot_y]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./rot_z]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[]
[AuxVariables<<<{"href": "../../../syntax/AuxVariables/index.html"}>>>]
[./vel_x]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./vel_y]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./vel_z]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./accel_x]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./accel_y]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./accel_z]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = LAGRANGE
[../]
[./reaction_x]
[../]
[./reaction_y]
[../]
[./reaction_z]
[../]
[./reaction_xx]
[../]
[./reaction_yy]
[../]
[./reaction_zz]
[../]
[]
[AuxKernels<<<{"href": "../../../syntax/AuxKernels/index.html"}>>>]
[./accel_x]
type = NewmarkAccelAux<<<{"description": "Computes the current acceleration using the Newmark method.", "href": "../../../source/auxkernels/NewmarkAccelAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = accel_x
displacement<<<{"description": "displacement variable"}>>> = disp_x
velocity<<<{"description": "velocity variable"}>>> = vel_x
beta<<<{"description": "beta parameter for Newmark method"}>>> = 0.25
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux<<<{"description": "Calculates the current velocity using Newmark method.", "href": "../../../source/auxkernels/NewmarkVelAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = vel_x
acceleration<<<{"description": "acceleration variable"}>>> = accel_x
gamma<<<{"description": "gamma parameter for Newmark method"}>>> = 0.5
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux<<<{"description": "Computes the current acceleration using the Newmark method.", "href": "../../../source/auxkernels/NewmarkAccelAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = accel_y
displacement<<<{"description": "displacement variable"}>>> = disp_y
velocity<<<{"description": "velocity variable"}>>> = vel_y
beta<<<{"description": "beta parameter for Newmark method"}>>> = 0.25
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux<<<{"description": "Calculates the current velocity using Newmark method.", "href": "../../../source/auxkernels/NewmarkVelAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = vel_y
acceleration<<<{"description": "acceleration variable"}>>> = accel_y
gamma<<<{"description": "gamma parameter for Newmark method"}>>> = 0.5
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux<<<{"description": "Computes the current acceleration using the Newmark method.", "href": "../../../source/auxkernels/NewmarkAccelAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = accel_z
displacement<<<{"description": "displacement variable"}>>> = disp_z
velocity<<<{"description": "velocity variable"}>>> = vel_z
beta<<<{"description": "beta parameter for Newmark method"}>>> = 0.25
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux<<<{"description": "Calculates the current velocity using Newmark method.", "href": "../../../source/auxkernels/NewmarkVelAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = vel_z
acceleration<<<{"description": "acceleration variable"}>>> = accel_z
gamma<<<{"description": "gamma parameter for Newmark method"}>>> = 0.5
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = timestep_end
[../]
[]
[BCs<<<{"href": "../../../syntax/BCs/index.html"}>>>]
[./fixx0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixy0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixz0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_z
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrx0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_x
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixry0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_y
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrz0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_z
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrx1]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_x
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = right
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixry1]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_y
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = right
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrz1]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_z
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = right
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./disp_x_1]
type = PresetDisplacement<<<{"description": "Prescribe the displacement on a given boundary in a given direction.", "href": "../../../source/bcs/PresetDisplacement.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = right
function<<<{"description": "Function describing the displacement."}>>> = history_disp_axial
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
beta<<<{"description": "beta parameter for Newmark time integration."}>>> = 0.25
acceleration<<<{"description": "The acceleration variable."}>>> = accel_x
velocity<<<{"description": "The velocity variable."}>>> = vel_x
[../]
[./disp_y_1]
type = PresetDisplacement<<<{"description": "Prescribe the displacement on a given boundary in a given direction.", "href": "../../../source/bcs/PresetDisplacement.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = right
function<<<{"description": "Function describing the displacement."}>>> = history_disp_shear
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
beta<<<{"description": "beta parameter for Newmark time integration."}>>> = 0.25
acceleration<<<{"description": "The acceleration variable."}>>> = accel_y
velocity<<<{"description": "The velocity variable."}>>> = vel_y
[../]
[]
[Functions<<<{"href": "../../../syntax/Functions/index.html"}>>>]
[./history_disp_axial]
type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../source/functions/PiecewiseLinear.html"}>>>
data_file<<<{"description": "File holding CSV data"}>>> = disp_axial_ct.csv
format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = columns
[../]
[./history_disp_shear]
type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../source/functions/PiecewiseLinear.html"}>>>
x<<<{"description": "The abscissa values"}>>> = '0.0 10.0'
y<<<{"description": "The ordinate values"}>>> = '0.0 0.3048'
[../]
[]
[Preconditioning<<<{"href": "../../../syntax/Preconditioning/index.html"}>>>]
[./smp]
type = SMP<<<{"description": "Single matrix preconditioner (SMP) builds a preconditioner using user defined off-diagonal parts of the Jacobian.", "href": "../../../source/preconditioners/SingleMatrixPreconditioner.html"}>>>
full<<<{"description": "Set to true if you want the full set of couplings between variables simply for convenience so you don't have to set every off_diag_row and off_diag_column combination."}>>> = true
[../]
[]
[Executioner<<<{"href": "../../../syntax/Executioner/index.html"}>>>]
type = Transient
solve_type = NEWTON
line_search = none
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
start_time = -0.02
end_time = 2.5
dt = 0.005
dtmin = 0.001
timestep_tolerance = 1e-6
[]
[Kernels<<<{"href": "../../../syntax/Kernels/index.html"}>>>]
[./lr_disp_x]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 0
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_x
[../]
[./lr_disp_y]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 1
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_y
[../]
[./lr_disp_z]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 2
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_z
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_z
[../]
[./lr_rot_x]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 3
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_x
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_xx
[../]
[./lr_rot_y]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 4
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_y
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_yy
[../]
[./lr_rot_z]
type = StressDivergenceIsolator<<<{"description": "Kernel for isolator element", "href": "../../../source/kernels/StressDivergenceIsolator.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for isolator."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables for the isolator."}>>> = 'rot_x rot_y rot_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z, 3 for rot_x, 4 for rot_y and 5 for rot_z)."}>>> = 5
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_z
save_in<<<{"description": "The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)"}>>> = reaction_zz
[../]
[]
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[./deformation]
type = ComputeIsolatorDeformation<<<{"description": "Compute the deformations and rotations in a two-noded isolator element.", "href": "../../../source/materials/ComputeIsolatorDeformation.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 0
sd_ratio<<<{"description": "Shear distance ratio."}>>> = 0.5
y_orientation<<<{"description": "Orientation of the local Y direction along which, Ky is provided. This should be perpendicular to the axis of the isolator."}>>> = '0.0 1.0 0.0'
displacements<<<{"description": "The displacement variables appropriate for the simulation geometry and coordinate system."}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotation variables appropriate for the simulation geometry and coordinate system."}>>> = 'rot_x rot_y rot_z'
velocities<<<{"description": "Translational velocity variables."}>>> = 'vel_x vel_y vel_z'
[../]
[./elasticity]
type = ComputeLRIsolatorElasticity<<<{"description": "Compute the forces and the stiffness matrix for an LR isolator element.", "href": "../../../source/materials/ComputeLRIsolatorElasticity.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 0
fy<<<{"description": "Yield strength of the bearing."}>>> = 207160
alpha<<<{"description": "Ratio of post-yield shear stiffness to the initial elastic shear stiffness of the bearing. This is dimensionless"}>>> = 0.03812
G_rubber<<<{"description": "Shear modulus of rubber."}>>> = 0.87e6
K_rubber<<<{"description": "Bulk modulus of rubber."}>>> = 2e9
D1<<<{"description": "Diameter of lead core."}>>> = 0.1397
D2<<<{"description": "Outer diameter of the bearing."}>>> = 0.508
ts<<<{"description": "Thickness of a single steel shim."}>>> = 0.00476
tr<<<{"description": "Thickness of a single rubber layer."}>>> = 0.009525
n<<<{"description": "Number of rubber layers."}>>> = 16
tc<<<{"description": "Thickness of the rubber cover of the bearing."}>>> = 0.0127
kc<<<{"description": "Cavitation parameter."}>>> = 20
phi_m<<<{"description": "Damage index."}>>> = 0.75
ac<<<{"description": "Strength degradation parameter."}>>> = 1
cd<<<{"description": "Viscous damping parameter."}>>> = 0
gamma<<<{"description": "Gamma parameter of Newmark algorithm."}>>> = 0.5
beta<<<{"description": "Beta parameter of Newmark algorithm."}>>> = 0.25
k_steel<<<{"description": "Thermal conductivity of steel. Defaults to 50.0 W/(m-oC)."}>>> = 50
a_steel<<<{"description": "Thermal diffusivity of steel. Defaults to 1.41e-05 m2/s."}>>> = 1.41e-5
rho_lead<<<{"description": "Density of lead. Defaults to 11200 kg/m3."}>>> = 11200
c_lead<<<{"description": "Specific heat capacity of lead. Defaults to 130.0 N-m/kg oC."}>>> = 130
cavitation<<<{"description": "Switch for modeling cavitation and post-cavitation."}>>> = true
horizontal_stiffness_variation<<<{"description": "Switch for modeling variation of horizontal stiffness during the analysis."}>>> = true
vertical_stiffness_variation<<<{"description": "Switch for modeling variation of vertical stiffness during the analysis."}>>> = true
strength_degradation<<<{"description": "Switch for modeling strength degradation due to lead core heating."}>>> = true
buckling_load_variation<<<{"description": "Switch for modeling buckling load variation during the analysis."}>>> = true
[../]
[]
[Postprocessors<<<{"href": "../../../syntax/Postprocessors/index.html"}>>>]
[./disp_x]
type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../../../source/postprocessors/NodalVariableValue.html"}>>>
nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 1
variable<<<{"description": "The variable to be monitored"}>>> = disp_x
[../]
[./vel_x]
type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../../../source/postprocessors/NodalVariableValue.html"}>>>
nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 1
variable<<<{"description": "The variable to be monitored"}>>> = vel_x
[../]
[./accel_x]
type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../../../source/postprocessors/NodalVariableValue.html"}>>>
nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 1
variable<<<{"description": "The variable to be monitored"}>>> = accel_x
[../]
[./reaction_x]
type = NodalSum<<<{"description": "Computes the sum of all of the nodal values of the specified variable. Note: This object sets the default \"unique_node_execute\" flag to true to avoid double counting nodes between shared blocks.", "href": "../../../source/postprocessors/NodalSum.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = reaction_x
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = left
[../]
[./disp_y]
type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../../../source/postprocessors/NodalVariableValue.html"}>>>
nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 1
variable<<<{"description": "The variable to be monitored"}>>> = disp_y
[../]
[./vel_y]
type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../../../source/postprocessors/NodalVariableValue.html"}>>>
nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 1
variable<<<{"description": "The variable to be monitored"}>>> = vel_y
[../]
[./accel_y]
type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../../../source/postprocessors/NodalVariableValue.html"}>>>
nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 1
variable<<<{"description": "The variable to be monitored"}>>> = accel_y
[../]
[./reaction_y]
type = NodalSum<<<{"description": "Computes the sum of all of the nodal values of the specified variable. Note: This object sets the default \"unique_node_execute\" flag to true to avoid double counting nodes between shared blocks.", "href": "../../../source/postprocessors/NodalSum.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = reaction_y
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = left
[../]
[./disp_z]
type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../../../source/postprocessors/NodalVariableValue.html"}>>>
nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 1
variable<<<{"description": "The variable to be monitored"}>>> = disp_z
[../]
[./vel_z]
type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../../../source/postprocessors/NodalVariableValue.html"}>>>
nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 1
variable<<<{"description": "The variable to be monitored"}>>> = vel_z
[../]
[./accel_z]
type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../../../source/postprocessors/NodalVariableValue.html"}>>>
nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 1
variable<<<{"description": "The variable to be monitored"}>>> = accel_z
[../]
[./reaction_z]
type = NodalSum<<<{"description": "Computes the sum of all of the nodal values of the specified variable. Note: This object sets the default \"unique_node_execute\" flag to true to avoid double counting nodes between shared blocks.", "href": "../../../source/postprocessors/NodalSum.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = reaction_z
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = left
[../]
[./reaction_xx]
type = NodalSum<<<{"description": "Computes the sum of all of the nodal values of the specified variable. Note: This object sets the default \"unique_node_execute\" flag to true to avoid double counting nodes between shared blocks.", "href": "../../../source/postprocessors/NodalSum.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = reaction_xx
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = left
[../]
[./reaction_yy]
type = NodalSum<<<{"description": "Computes the sum of all of the nodal values of the specified variable. Note: This object sets the default \"unique_node_execute\" flag to true to avoid double counting nodes between shared blocks.", "href": "../../../source/postprocessors/NodalSum.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = reaction_yy
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = left
[../]
[./reaction_zz]
type = NodalSum<<<{"description": "Computes the sum of all of the nodal values of the specified variable. Note: This object sets the default \"unique_node_execute\" flag to true to avoid double counting nodes between shared blocks.", "href": "../../../source/postprocessors/NodalSum.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = reaction_zz
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = left
[../]
[]
[Outputs<<<{"href": "../../../syntax/Mastodon/Outputs/index.html"}>>>]
csv<<<{"description": "Output the scalar variable and postprocessors to a *.csv file using the default CSV output."}>>> = true
exodus<<<{"description": "Output the results using the default settings for Exodus output."}>>> = true
perf_graph<<<{"description": "Enable printing of the performance graph to the screen (Console)"}>>> = true
[]
(test/tests/materials/lr_isolator/lr_isolator_axial_ct.i)The response of the LR isolator to cyclic loading in the axial direction is shown in Figure 1.

Figure 1: Axial response of the LR isolator to the prescribed cyclic loading.
Example 2: Response to shear loading
The input file below simulates the response of the LR isolator element in the shear direction. A sinusoidal displacement is applied at the top node of the isolator in the shear (local Y) direction. The isolator element has the same set of constraints as in Example 1. A constant axial load is applied to the isolator in the axial direction to simulate the weight of the superstructure.
[BCs<<<{"href": "../../../syntax/BCs/index.html"}>>>]
[./fixx0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left'
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixy0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left'
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[fixz0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_z
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left'
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrx0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_x
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left'
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixry0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_y
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left'
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrz0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_z
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left'
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[fixrx1]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_x
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'right'
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixry1]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_y
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'right'
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrz1]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_z
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'right'
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./disp_y_1]
type = PresetDisplacement<<<{"description": "Prescribe the displacement on a given boundary in a given direction.", "href": "../../../source/bcs/PresetDisplacement.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'right'
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
function<<<{"description": "Function describing the displacement."}>>> = history_shear_dispy
beta<<<{"description": "beta parameter for Newmark time integration."}>>> = 0.25
acceleration<<<{"description": "The acceleration variable."}>>> = 'accel_y'
velocity<<<{"description": "The velocity variable."}>>> = 'vel_y'
[../]
[]
[NodalKernels<<<{"href": "../../../syntax/NodalKernels/index.html"}>>>]
[./force_x]
type = UserForcingFunctionNodalKernel<<<{"description": "Residual contribution to an ODE from a source function acting at nodes.", "href": "../../../source/nodalkernels/UserForcingFunctionNodalKernel.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = 'right'
function<<<{"description": "The forcing function"}>>> = force_x
[../]
[]
[Functions<<<{"href": "../../../syntax/Functions/index.html"}>>>]
[./force_x]
type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../source/functions/PiecewiseLinear.html"}>>>
x<<<{"description": "The abscissa values"}>>> = '0.0 1.0 11.0'
y<<<{"description": "The ordinate values"}>>> = '0.0 -1439520 -1439520'
[../]
[./history_shear_dispy]
type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../source/functions/PiecewiseLinear.html"}>>>
data_file<<<{"description": "File holding CSV data"}>>> = disp_shear.csv
format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = columns
[../]
[]
(test/tests/materials/lr_isolator/lr_isolator_shear.i)The response of the LR isolator to cyclic loading in the shear direction is shown in Figure 2.

Figure 2: Shear response of the LR isolator to the prescribed cyclic loading.
Example 3: Response to seismic loading
The input file below simulates the response of the LR isolator to seismic loading. A superstructure mass of 146890 kg is assumed in this example, and is assigned to the top node of the isolator using a NodalKernel of type, NodalTranslationInertia
. Three components of ground motion are applied at the bottom node as input accelerations, using the PresetAcceleration
BC. A small time step in the range of 0.0005-0.0001 sec is required for seismic analysis, especially for accuracy in the axial direction. It is recommended to iteratively reduce the time step till the change in the results is within a desired tolerance.
[BCs<<<{"href": "../../../syntax/BCs/index.html"}>>>]
[./fixx0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixy0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixz0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_z
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrx0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_x
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixry0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_y
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrz0]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_z
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = left
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrx1]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_x
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = right
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixry1]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_y
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = right
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fixrz1]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_z
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = right
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./accel_x0]
type = PresetAcceleration<<<{"description": "Prescribe acceleration on a given boundary in a given direction", "href": "../../../source/bcs/PresetAcceleration.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left'
function<<<{"description": "Function describing the velocity."}>>> = acceleration_x
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
beta<<<{"description": "beta parameter for Newmark time integration."}>>> = 0.25
acceleration<<<{"description": "The acceleration variable."}>>> = 'accel_x'
velocity<<<{"description": "The velocity variable."}>>> = 'vel_x'
[../]
[./accel_y0]
type = PresetAcceleration<<<{"description": "Prescribe acceleration on a given boundary in a given direction", "href": "../../../source/bcs/PresetAcceleration.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left'
function<<<{"description": "Function describing the velocity."}>>> = acceleration_y
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
beta<<<{"description": "beta parameter for Newmark time integration."}>>> = 0.25
acceleration<<<{"description": "The acceleration variable."}>>> = 'accel_y'
velocity<<<{"description": "The velocity variable."}>>> = 'vel_y'
[../]
[./accel_z0]
type = PresetAcceleration<<<{"description": "Prescribe acceleration on a given boundary in a given direction", "href": "../../../source/bcs/PresetAcceleration.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'left'
function<<<{"description": "Function describing the velocity."}>>> = acceleration_z
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_z
beta<<<{"description": "beta parameter for Newmark time integration."}>>> = 0.25
acceleration<<<{"description": "The acceleration variable."}>>> = 'accel_z'
velocity<<<{"description": "The velocity variable."}>>> = 'vel_z'
[../]
[]
[NodalKernels<<<{"href": "../../../syntax/NodalKernels/index.html"}>>>]
[./x_inertial1]
type = NodalTranslationalInertia<<<{"description": "Computes the inertial forces and mass proportional damping terms corresponding to nodal mass.", "href": "../../../source/nodalkernels/NodalTranslationalInertia.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
velocity<<<{"description": "velocity variable"}>>> = vel_x
acceleration<<<{"description": "acceleration variable"}>>> = accel_x
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = right
beta<<<{"description": "beta parameter for Newmark Time integration"}>>> = 0.25
gamma<<<{"description": "gamma parameter for Newmark Time integration"}>>> = 0.5
mass<<<{"description": "Mass associated with the node"}>>> = 146890
alpha<<<{"description": "Alpha parameter for mass dependent numerical damping induced by HHT time integration scheme"}>>> =0
eta<<<{"description": "Constant real number defining the eta parameter for Rayleigh damping."}>>> =0
[../]
[./y_inertial1]
type = NodalTranslationalInertia<<<{"description": "Computes the inertial forces and mass proportional damping terms corresponding to nodal mass.", "href": "../../../source/nodalkernels/NodalTranslationalInertia.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
velocity<<<{"description": "velocity variable"}>>> = vel_y
acceleration<<<{"description": "acceleration variable"}>>> = accel_y
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = right
beta<<<{"description": "beta parameter for Newmark Time integration"}>>> = 0.25
gamma<<<{"description": "gamma parameter for Newmark Time integration"}>>> = 0.5
mass<<<{"description": "Mass associated with the node"}>>> = 146890
alpha<<<{"description": "Alpha parameter for mass dependent numerical damping induced by HHT time integration scheme"}>>> =0
eta<<<{"description": "Constant real number defining the eta parameter for Rayleigh damping."}>>> =0
[../]
[./z_inertial1]
type = NodalTranslationalInertia<<<{"description": "Computes the inertial forces and mass proportional damping terms corresponding to nodal mass.", "href": "../../../source/nodalkernels/NodalTranslationalInertia.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_z
velocity<<<{"description": "velocity variable"}>>> = vel_z
acceleration<<<{"description": "acceleration variable"}>>> = accel_z
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = right
beta<<<{"description": "beta parameter for Newmark Time integration"}>>> = 0.25
gamma<<<{"description": "gamma parameter for Newmark Time integration"}>>> = 0.5
mass<<<{"description": "Mass associated with the node"}>>> = 146890
alpha<<<{"description": "Alpha parameter for mass dependent numerical damping induced by HHT time integration scheme"}>>> =0
eta<<<{"description": "Constant real number defining the eta parameter for Rayleigh damping."}>>> =0
[../]
[./force_x]
type = UserForcingFunctionNodalKernel<<<{"description": "Residual contribution to an ODE from a source function acting at nodes.", "href": "../../../source/nodalkernels/UserForcingFunctionNodalKernel.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = 'right'
function<<<{"description": "The forcing function"}>>> = force_x
[../]
[]
[Functions<<<{"href": "../../../syntax/Functions/index.html"}>>>]
[./acceleration_x]
type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../source/functions/PiecewiseLinear.html"}>>>
data_file<<<{"description": "File holding CSV data"}>>> = accel_x.csv
format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>>=columns
[../]
[./acceleration_y]
type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../source/functions/PiecewiseLinear.html"}>>>
data_file<<<{"description": "File holding CSV data"}>>> = accel_y.csv
format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>>=columns
[../]
[./acceleration_z]
type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../source/functions/PiecewiseLinear.html"}>>>
data_file<<<{"description": "File holding CSV data"}>>> = accel_z.csv
format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>>=columns
[../]
[./force_x]
type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../../source/functions/PiecewiseLinear.html"}>>>
x<<<{"description": "The abscissa values"}>>>='0.0 0.05 50'
y<<<{"description": "The ordinate values"}>>>='0.0 -1468900 -1468900'
[../]
[]
(test/tests/materials/lr_isolator/lr_isolator_seismic.i)The figures below show the response of the LR isolator to the prescribed seismic loading.

Figure 3: Axial response of the LR isolator to the prescribed seismic loading.

Figure 4: Response of the LR isolator in the shear (local y) direction to the prescribed seismic loading.

Figure 5: Response of the LR isolator in the shear (local z) direction to the prescribed seismic loading.
References
- Dassault Systòmes.
Abaqus - finite element analysis software, v2016.
2018.[BibTeX]