User Manual
Getting Started
This section provides step-by-step instructions to define the basic components of a numerical model for finite element analysis using the MASTODON framework.
Kernels
Kernels are related to the physics involved in the particular analysis. This document focusses on kernel commands related to the geotechnical earthquake engineering applications. Further information can be found in Kernels System.
The main kernel that is used for quasi-static and dynamic analyses is Solid Mechanics Module. This kernel is used to solve the equation of motion without the inertial effects. It requires information about the unknowns that are solved for. The following chunk of commands can be used to activate dynamic tensor mechanics kernel along with Newmark-beta integration scheme, inertial effects, and two mode Rayleigh viscous damping (both stiffness and mass proportional damping):
[Kernels<<<{"href": "../../syntax/Kernels/index.html"}>>>]
[./DynamicTensorMechanics<<<{"href": "../../syntax/Kernels/DynamicTensorMechanics/index.html"}>>>]
displacements<<<{"description": "The nonlinear displacement variables for the problem"}>>> = 'disp_x disp_y disp_z'
stiffness_damping_coefficient<<<{"description": "Name of material property or a constant real number defining stiffness Rayleigh parameter (zeta)."}>>> = 0.00006366
[../]
[./inertia_x]
type = InertialForce<<<{"description": "Calculates the residual for the inertial force ($M \\cdot acceleration$) and the contribution of mass dependent Rayleigh damping and HHT time integration scheme ($\\eta \\cdot M \\cdot ((1+\\alpha)velq2-\\alpha \\cdot vel-old) $)", "href": "../../source/kernels/InertialForce.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
beta<<<{"description": "beta parameter for Newmark Time integration"}>>> = 0.25
gamma<<<{"description": "gamma parameter for Newmark Time integration"}>>> = 0.5
eta<<<{"description": "Name of material property or a constant real number defining the eta parameter for the Rayleigh damping."}>>> = 7.854
[../]
[./inertia_y]
type = InertialForce<<<{"description": "Calculates the residual for the inertial force ($M \\cdot acceleration$) and the contribution of mass dependent Rayleigh damping and HHT time integration scheme ($\\eta \\cdot M \\cdot ((1+\\alpha)velq2-\\alpha \\cdot vel-old) $)", "href": "../../source/kernels/InertialForce.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
beta<<<{"description": "beta parameter for Newmark Time integration"}>>> = 0.25
gamma<<<{"description": "gamma parameter for Newmark Time integration"}>>> = 0.5
eta<<<{"description": "Name of material property or a constant real number defining the eta parameter for the Rayleigh damping."}>>> = 7.854
[../]
[./inertia_z]
type = InertialForce<<<{"description": "Calculates the residual for the inertial force ($M \\cdot acceleration$) and the contribution of mass dependent Rayleigh damping and HHT time integration scheme ($\\eta \\cdot M \\cdot ((1+\\alpha)velq2-\\alpha \\cdot vel-old) $)", "href": "../../source/kernels/InertialForce.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
beta<<<{"description": "beta parameter for Newmark Time integration"}>>> = 0.25
gamma<<<{"description": "gamma parameter for Newmark Time integration"}>>> = 0.5
eta<<<{"description": "Name of material property or a constant real number defining the eta parameter for the Rayleigh damping."}>>> = 7.854
[../]
[./gravity]
type = Gravity<<<{"description": "Apply gravity. Value is in units of acceleration.", "href": "../../source/kernels/Gravity.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_z
value<<<{"description": "Value multiplied against the residual, e.g. gravitational acceleration"}>>> = -9.81
[../]
[]
[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
[../]
[./stress_xy]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = stress
variable<<<{"description": "The name of the variable that this object applies to"}>>> = stress_xy
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 1
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 0
[../]
[./stress_yz]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = stress
variable<<<{"description": "The name of the variable that this object applies to"}>>> = stress_yz
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 2
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 1
[../]
[./stress_zx]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = stress
variable<<<{"description": "The name of the variable that this object applies to"}>>> = stress_zx
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 0
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 2
[../]
[./strain_xy]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = total_strain
variable<<<{"description": "The name of the variable that this object applies to"}>>> = stress_xy
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 1
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 0
[../]
[./strain_yz]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = total_strain
variable<<<{"description": "The name of the variable that this object applies to"}>>> = strain_yz
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 2
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 1
[../]
[./strain_zx]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = total_strain
variable<<<{"description": "The name of the variable that this object applies to"}>>> = strain_zx
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 0
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 2
[../]
[./stress_xx]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = stress
variable<<<{"description": "The name of the variable that this object applies to"}>>> = stress_xx
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 0
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 0
[../]
[./stress_yy]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = stress
variable<<<{"description": "The name of the variable that this object applies to"}>>> = stress_yy
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 1
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 1
[../]
[./stress_zz]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = stress
variable<<<{"description": "The name of the variable that this object applies to"}>>> = stress_zz
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 2
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 2
[../]
[./strain_xx]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = total_strain
variable<<<{"description": "The name of the variable that this object applies to"}>>> = strain_xx
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 0
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 0
[../]
[./strain_yy]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> =total_strain
variable<<<{"description": "The name of the variable that this object applies to"}>>> = strain_yy
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 1
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 1
[../]
[./strain_zz]
type = RankTwoAux<<<{"description": "Access a component of a RankTwoTensor", "href": "../../source/auxkernels/RankTwoAux.html"}>>>
rank_two_tensor<<<{"description": "The rank two material tensor name"}>>> = total_strain
variable<<<{"description": "The name of the variable that this object applies to"}>>> = strain_zz
index_i<<<{"description": "The index i of ij for the tensor to output (0, 1, 2)"}>>> = 2
index_j<<<{"description": "The index j of ij for the tensor to output (0, 1, 2)"}>>> = 2
[../]
[./layer]
type = UniformLayerAuxKernel<<<{"description": "Computes an AuxVariable for representing a layered structure in an arbitrary direction.", "href": "../../source/auxkernels/UniformLayerAuxKernel.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = layer_id
interfaces<<<{"description": "A list of layer interface locations to apply across the domain in the specified direction."}>>> = '2.0'
direction<<<{"description": "The direction to apply layering."}>>> = '0 0 1'
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."}>>> = initial
[../]
[]
(test/tests/materials/isoil/HYS_darendeli.i)displacements = 'disp_x disp_y disp_z' line is not necessary if the displacements are already defined as global parameters but are provided here for the sake of completeness. Beta and gamma are the parameters of Newmark-beta integration scheme. Zeta and eta are the stiffness and mass matrix coefficients of Rayleigh damping formulation (see Solid Mechanics Module and Theory Manual for more information). Auxiliary kernels are specified to calculate the acceleration and velocities using Newmark-beta scheme at the end of each time step where the displacement is already solved and known. Lastly, stress_xy is defined as an auxiliary variable. This is achieved by specifying the type of the Auxkernel as RankTwoAux. RankTwoAux means that the source of the auxiliary variable is a rank two tensor, and the type of rank two tensor is explicitly defined as stress tensor using the command "rank_two_tensor = stress". Since, the variable is stress_xy, the location in the stress tensor corresponding to stress_xy needs to be specified using index_i (row index) and index_j (column index). To request for stress_xy, index_i is set to 0 and index_j is set to 1. The next section explains the boundary conditions that are required to run a simple, quasi-static and dynamic analyses.
Units
MASTODON does not follow a fixed unit system unless explicitly specified in the corresponding syntax, user manual or theory manual. Users should ensure that the quantities specified in the input file follow a consistent set of units.
Creating a mesh
The first thing necessary to run a finite element analysis is a mesh. Generating a mesh of interest in MASTODON can be achieved using the inbuilt mesh generator or by importing an existing mesh. Imported meshes should be of the exodus format and can be generated using the meshing software, Cubit. Cubit is freely available for users in the U.S. federal government and national labs. For other users, the commercial version of Cutbit called Trelis is recommended. Usage of the inbuilt mesh generator for a simple problem is demonstrated below.
For any analysis, the number of dimensions and the degrees of freedom should be specified in the beginning of the Mesh
block in the input file. An example input is provided below:
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
type = GeneratedMesh # Can generate simple lines, rectangles and rectangular prisms
dim = 3 # Dimension of the mesh
nx = 1 # Number of elements in the x direction
ny = 1 # Number of elements in the y direction
nz = 1 # Number of elements in the z direction
xmin = 0.0
xmax = 1
ymin = 0.0
ymax = 1
zmin = 0.0
zmax = 1
[]
(test/tests/materials/isoil/HYS_darendeli.i)This input creates a single brick element using the MASTODON mesh generator with 8 nodes, 8 gauss quadrature points, and unit length in each edge. dim = 3
specifies that the domain is three-dimensional, and nx, ny, and nz specify the number of elements in X, Y and Z directions, respectively.
Figure 1 presents a generic three-dimensional brick element along with node and surface labels. Generated brick element is automatically assigned a block number (block 0 in this case) and each side of the brick is automatically assigned a surface number.

Figure 1: Single brick element (a) node labels (b) surface labels.
The next step is activating the global parameters. These are input parameters, which have the same value across the input file. The global parameters are activated providing the following commands:
[GlobalParams<<<{"href": "../../syntax/GlobalParams/index.html"}>>>]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = false
[]
(test/tests/materials/isoil/HYS_darendeli.i)By providing the above commands, the user specifies that if any object in the input file has a parameter called "displacements", that parameter would be set to "disp_x disp_y disp_z", which are the global displacement degrees of freedoms at the nodal points in x, y, and z directions, respectively.
Before or after (the sequence does not matter in the input file) the global parameters, the user has to specify the solution variables using the following commands:
[Variables<<<{"href": "../../syntax/Variables/index.html"}>>>]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
(test/tests/materials/isoil/HYS_darendeli.i)MASTODON allows user to define auxiliary variables. Auxiliary variables are not solved for by the system but they are calculated from the solution variables. This is particularly necessary for dynamic analysis, since the nodal accelerations and velocities are defined in this section. In addition, the stresses and strains are defined as auxiliary variables to access the data later on to inspect the results. Following commands are the examples of defining the auxiliary variables:
[AuxVariables<<<{"href": "../../syntax/AuxVariables/index.html"}>>>]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[./stress_xy]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./stress_yz]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./stress_zx]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./strain_xy]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./strain_yz]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./strain_zx]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./stress_xx]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./stress_yy]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./stress_zz]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./strain_xx]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./strain_yy]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./strain_zz]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[./layer_id]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = CONSTANT
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[../]
[]
(test/tests/materials/isoil/HYS_darendeli.i)Using the above commands, user defines velocity, acceleration, stress, and strain auxiliary variables to be used later on to ask for an output. order = CONSTANT and family=MONOMIAL calculates the average stress within the element.
The above command blocks forms the basis for all quasi-static and dynamic analyses that can be conducted using MASTODON framework. Next section describes the Kernels related to physics involved in the particular analysis.
Boundary Conditions
Boundary conditions are required by MASTODON finite element analysis framework to be able to run simple quasi-static and dynamic analysis. Herein, the basic boundary conditions are given and other constraints that are used to solve for geotechnical earthquake engineering problems are presented separately (e.g. periodic boundary conditions.) Following input block creates a fully fixed boundary condition at the bottom of a single element.
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = 0
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = 0
value = 0.0
[../]
[./z_bot]
type = DirichletBC
variable = disp_z
boundary = 0
value = 0.0
[../]
(test/tests/materials/isoil/HYS_darendeli.i)In the above input, type = DirichletBC
sets the variable = disp_"related degree of freedom" with the value = 0 which provides the fixity by defining a zero displacement at the node. boundary = 0 command selects the nodes at the bottom surface of the element (labeled as surface 0) and assigns the boundary conditions.
Prescribed Displacement
The preset displacement boundary condition can be used to apply a displacement time history to a boundary (at the nodes). The displacement boundary condition first converts the user defined displacement time history to an acceleration time history using Backward Euler finite difference scheme. This acceleration is then integrated to get displacement using Newmark-beta method. The resulting displacement is then applied as a kinematic displacement boundary condition. The following command can be used to apply the preset displacement boundary condition:
[./top_x]
type = PresetDisplacement
boundary = 5
variable = disp_x
beta = 0.25
velocity = vel_x
acceleration = accel_x
function = top_disp
[../]
[]
(test/tests/materials/isoil/HYS_darendeli.i)The above command should be embedded inside the BCs command block. "boundary = 5" assigns the preset displacement to boundary 5 which, in this case, is a predefined boundary of a single element as described in single element problem above. Alternatively, the boundary number can be identified using Cubit or Trelis. "variable = disp_x" imposes the boundary condition on the x direction. "beta" is the Newmark-beta integration parameter. The "function = top_disp" specifies the function that defines the loading time history. It is defined in the "Functions" block as follows:
[Functions<<<{"href": "../../syntax/Functions/index.html"}>>>]
[./top_disp]
type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../source/functions/PiecewiseLinear.html"}>>>
data_file<<<{"description": "File holding CSV data"}>>> = Displacement2.csv
format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = columns
[../]
[]
(test/tests/materials/isoil/HYS_darendeli.i)Displacement2.csv is the file, located in the same directory of the input file, containing the displacement time history. The first column of this file should contain the time vector starting at 0.0. The second column should contain the displacement values. "type = PiecewiseLinear" defines the type of the function which is in this case piecewise-linear. "format" specifies the format of the data file, i.e. whether the data is in columns or rows.
Prescribed Acceleration
The preset acceleration boundary condition can be used to apply an acceleration time history to a boundary. The preset acceleration boundary condition integrates the given acceleration time history to get the displacement using Newmark-beta method. This displacement is then applied as a kinematic displacement boundary condition. Syntax is the same as prescribing a displacement boundary condition but with type = PresetAcceleration and the function describing time vs acceleration data instead of time vs displacement.
Periodic Boundary Conditions
Periodic boundary conditions are used to constrain the nodes to move together in the specified directions. The following input is an example applied on the single element problem above and should be embedded into the BCs block segment as:
[./Periodic]
[./x_dir]
variable = 'disp_x disp_y disp_z'
primary = '4'
secondary = '2'
translation = '1.0 0.0 0.0'
[../]
[./y_dir]
variable = 'disp_x disp_y disp_z'
primary = '1'
secondary = '3'
translation = '0.0 1.0 0.0'
[../]
[../]
(test/tests/materials/isoil/HYS_darendeli.i)Initial Stresses
Initial stress command is available to apply the prescribed initial stresses to the finite element domain. If the user applies initial stress state that is equal to that of gravity loadings, upon transient analysis, no vibration occurs and the domain reaches equilibrium with zero strains. This eliminates the necessity of conducting separate analysis for free-field problems and allows the user to start directly with a dynamic analysis such as base shaking etc. The following command can be used within the material definition to activate the initial stresses in the material block:
initial_stress = '-4.204286 0 0 0 -4.204286 0 0 0 -9.810'
The nine numerical values fill the stress tensor in the following order - xx, xy, xz, yz, yy, yz, zx, zy, and zz. The above example command activates -4.2025 units of stress along both xx and yy direction, and -9.81 units of stress along zz direction. These stresses are the gravity stresses at the mid-depth of the single element above with density = 2. Therefore, the element will immediately start with gravity stress conditions without any elastic deformations or stress fluctuations.
Gravity Loading
Gravity loading can be applied on the domain to achieve the stress state due to gravity. MOOSE includes built-in commands to apply the gravity as a body force throughout the transient analysis. The following command can be used to apply the gravitational field on the modeled domain:
[./gravity]
type = Gravity
variable = disp_z
value = -9.81
[../]
[]
(test/tests/materials/isoil/HYS_darendeli.i)The above command should be embedded inside the Kernels command block. variable = disp_z activates the gravity in z direction and value = -9.81 is assigned to specify the magnitude and direction of the gravitational field.
Gravity command applies an external body force along the specified direction on the domain of interest. In order to bring the system to equilibrium, a transient analysis with some viscous damping is necessary. This approach causes fluctuations on the stress and strains at the beginning of the analysis because of the elements being initially at zero stress state. Viscous damping removes the fluctuations and brings the system to equilibrium. Once the system equilibrates, the gravity stresses are obtained along with the displacements due to the gravity loading. "Initial Stress" command is available in MASTODON framework to eliminate the need for a separate transient analysis. In addition, no displacements, or strains due to gravity result.
Executioner
The executioner input specifies the type of the analysis (the solver) and the corresponding parameters. There are two main types of executioners in MASTODON: steady and transient. Herein, an example is provided to run a transient analysis that will be used later on examples related to geotechnical earthquake engineering applications.
[Executioner<<<{"href": "../../syntax/Executioner/index.html"}>>>]
type = Transient
solve_type = PJFNK
nl_abs_tol = 1e-11
nl_rel_tol = 1e-11
start_time = 0
end_time = 8
dt = 0.01
timestep_tolerance = 1e-6
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
[]
(test/tests/materials/isoil/HYS_darendeli.i)The type = Transient
command is self-explanatory and sets the executioner type to transient. solve_type = PJFNK
is the default option (preconditioned Jacobian Free Newton-Krylov) used to solve the transient problems in MASTODON without constructing full stiffness matrix. dt = 0.01
(is set to 0.01 sec here for demonstration) determines the initial time step and the user is allowed to set a minimum time step, dtmin
, for the analysis. start_time
and end_time
specifies where the transient analysis will start and where it will end. Further information on available options can be found in Executioner System.
Materials
Linear elastic soil
A linear elastic soil can be defined in MASTODON by defining a elasticity tensor using ComputeIsotropicElasticityTensor, stress calculator using ComputeLinearElasticStress, and a small strain calculator using ComputeSmallStrain. Density can be defined using the GenericConstantMaterial. An example of these input blocks is shown below:
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[./Elasticity_tensor_1]
type = ComputeIsotropicElasticityTensor<<<{"description": "Compute a constant isotropic elasticity tensor.", "href": "../../source/materials/ComputeIsotropicElasticityTensor.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 1
youngs_modulus<<<{"description": "Young's modulus of the material."}>>> = 2.e+2
poissons_ratio<<<{"description": "Poisson's ratio for the material."}>>> = 0.4
[../]
[./strain_1]
type = ComputeSmallStrain<<<{"description": "Compute a small strain.", "href": "../../source/materials/ComputeSmallStrain.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 1
displacements<<<{"description": "The displacements appropriate for the simulation geometry and coordinate system"}>>> = 'disp_x disp_y disp_z'
[../]
[./stress_1]
type = ComputeLinearElasticStress<<<{"description": "Compute stress using elasticity for small strains", "href": "../../source/materials/ComputeLinearElasticStress.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 1
[../]
[./density_1]
type = GenericConstantMaterial<<<{"description": "Declares material properties based on names and values prescribed by input parameters.", "href": "../../source/materials/GenericConstantMaterial.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 1
prop_names<<<{"description": "The names of the properties this material will have"}>>> = 'density'
prop_values<<<{"description": "The values associated with the named properties"}>>> = '1.'
[../]
[]
(test/tests/dirackernels/seismic_source/one_seismic_source.i)The I_Soil System
The I-soil material model is a nonlinear hysteretic soil model that is based on the distributed element models developed by Iwan (1967) and Chiang and Beck (1994). In 1-D, this model takes the backbone stress-strain curve and divides it into a set of elastic-perfectly plastic curves. The total stress then is the sum of the stresses from the individual elastic-perfectly plastic curves.
The three dimensional generalization of this model is achieved using von-Mises failure criteria for each elastic-perfectly plastic curve resulting in an invariant yield surfaces in three-dimensional stress space like in Figure 2 (after Chiang and Beck (1994)).

Figure 2: Invariant yield surfaces of the individual elastic-perfectly curves.
The following options are available for an automatic creation of the backbone curve:
User-defined backbone curve (soil_type = 'user_defined'): The backbone curve can be provided in a csv file where the first column is shear strain and the second column is shear stress. The number of elastic-perfectly plastic curves that will be generated from this backbone curve depends on the number of entries in the data file. When many soil layers are present, a vector of data files can be provided as input. The size of this vector should equal the number of soil layers. Also the number of entries in each data file should be the same.
Darendeli backbone curve (soil_type = 'darendeli'): The backbone curve can be auto-generated based on empirical data for common soil types. Darendeli (2001) presents a functional form that can be used to create the backbone shear stress - strain curves based on the experimental results obtained from resonant column and torsional shear tests. This functional form requires the initial shear modulus, initial bulk modulus, plasticity index, over consolidation ratio, reference mean confining pressure (p_ref) and number of points as input. Other than the number of points, all the other parameters can be provided as a vector for each soil layer. The number of points, which determines the number of elastic-perfectly plastic curves to be generated, is constant for all soil layers.
General Quadratic/Hyperbolic (GQ/H) backbone curve (soil_type = 'gqh'): Darendeli (2001) study constructs the shear stress-strain curves based on experimentally obtained data. At small strains the data is obtained using resonant column test, and towards the medium shear strain levels the torsional shear test results are used. The values are extrapolated at the large strain levels. This extrapolation may underestimate or overestimate the shear strength at large strains. Therefore, shear strength correction is necessary to account for the correct shear strength at large strains. GQ/H model proposed by Groholski et al. (2016) has a curve fitting scheme that automatically corrects the reference curves provided by Darendeli (2001) based on the specific shear strength at the large strains. This model requires taumax, theta_1 through 5, initial shear modulus, initial bulk modulus and number of points as input. The parameter taumax is the maximum shear stress that can be generated in the soil. The parameters theta_1 through 5 are the curve fitting parameters and can be obtained using DEEPSOIL (Hashash et al., 2016). Other than the number of points, all the other parameters can be given as a vector for the different soil layers. The number of points, which determines the number of elastic-perfectly plastic curves to be generated, is constant for all soil layers.
Thin-layer friction backbone curve (soil_type = 'thin_layer'): This backbone curve is should be used for the simulation of the foundation-soil interfaces using a formulation similar to Coulomb friction. This option should be used for a thin layer of I-soil elements along the foundation-soil interface. Using the 'thin_layer' option creates a bilinear backbone curve with a pre-yield shear modulus equal to the the initial_shear_modulus, and a post-yield shear modulus equal to initial_shear_modulus * hardening_ratio. The shear stress at yield is set to be equal to friction_coefficient * instantaneous pressure. Using the 'thin_layer' option for the I-Soil backbone curve automatically sets the values pressure_dependency = 'true', , and . This ensures that the shear strength dependence is turned on, and the strength of the thin layer increases linearly with instantaneous pressure. Note that since the strength is directly proportional to pressure (and not normal stress), this is not identical to Coulomb formulation.
All the above backbone curves provide the behavior of the soil at a reference confining pressure (). When the confining pressure of the soil changes, the soil behavior also changes (if pressure dependency is turned on). The shear modulus () at a pressure is given by:
where is the initial shear modulus, is the tension pressure cut off and is a parameter obtained from experiments. The shear modulus reduces to zero for any pressure lower than to model the failure of soil in tension. Note that compressive pressure is taken to be positive.
Similarly, the yield stress () of the elastic-perfectly plastic curve also changes when the confining pressure changes. The yield stress () at a pressure is given as:
where , and are parameters obtained from experiments.
To include pressure-dependent stiffness and yield strength calculation, pressure_dependency should be set to true and b_exp, a_0, a_1, a_2, tension_pressure_cut_off and p_ref need to be provided as input. Other than p_ref, all the other parameters are the same for all the soil layers. p_ref can be provided as vector with information about each soil layer.
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 3.

Figure 3: 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 4.

Figure 4: 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 5: Axial response of the LR isolator to the prescribed seismic loading.

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

Figure 7: Response of the LR isolator in the shear (local z) direction to the prescribed seismic loading.
Friction PendulumTM Isolator
ComputeFPIsolatorElasticity
material simulates the behavior of a single concave Friction Pendulum<sup>TM</sup> bearing in MASTODON, and is used with a two-noded link type element. The material properties are defined by creating material blocks: ComputeIsolatorDeformation
and ComputeFPIsolatorElasticity
, and the kernel block, StressDivergenceIsolator
. A description of each of the input parameters is provided here. To model the co-efficient of sliding friction as a function of the axial pressure, sliding velocity, and the instantaneous temperature, the following switch parameters are used:
pressure_dependent = true
, velocity_dependent = true
, and temperature_change = true
.
The axial and rotational terms of the basic stiffness matrix of the bearing element can be specified using the optional parameters: k_x, k_xx, k_yy, k_zz
. A default value of 10e13 is assumed when SI units are used. The stiffness value should be sufficiently high to simulate rigid behavior in these degrees of freedom. In the pressure factor computation kp
, the instantaneous pressure and reference pressure values are in MPa. The user is required to provide information on the current unit system used in the material parameter unit
, so that corresponding conversion factors are computed.
unit = 1.0
for N-m-s; unit = 2.0
for kN-m-s); unit = 3.0
for N-mm-s; unit = 4.0
for kN-mm-s; unit = 5.0
for lb-in-s; unit = 6.0
for kip-in-s; unit = 7.0
for lb-ft-s; unit = 8.0
for kip-ft-s;
The behavior of the FP bearing element in the shear direction is demonstrated using the examples described below. Analysis results are compared with verified and validated numerical models implemented in the open-source finite element package OpenSees (Mazzoni et al., 2009).
Example: Response to cyclic loading in shear
The input file below demonstrates the response of the FP bearing subjected to cyclic loading in the shear direction. Three test cases: where co-efficient of friction as a function of the axial pressure only, co-efficient of friction as a function of the sliding velocity only, and coefficient of friction as a function of the instantaneous temperature only, are defined. A sinusoidal displacement history of Figure 8 is applied to the top node and the bottom node is restrained in the six degrees-of-freedom for all the three test cases. A constant axial load of 6285710 N is applied to the top node to simulate the weight of the superstructure.
# Test for Friction Pendulum isolator in shear
#Loading conditions
# i) A constant axial load acting on isolator
# ii) A sinusoidal displacement in shear (y_direction)
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
type = GeneratedMesh
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'
xmin = 0
xmax = 1
nx = 1
dim = 1
[]
[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
[../]
[./rot_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
[../]
[./rot_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
[../]
[./rot_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
[../]
[./rot_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
[../]
[./rot_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
[../]
[./rot_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]
[../]
[]
[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
[../]
[]
[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
[../]
[./rot_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"}>>> = rot_accel_x
displacement<<<{"description": "displacement variable"}>>> = rot_x
velocity<<<{"description": "velocity variable"}>>> = rot_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
[../]
[./rot_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"}>>> = rot_vel_x
acceleration<<<{"description": "acceleration variable"}>>> = rot_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
[../]
[./rot_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"}>>> = rot_accel_y
displacement<<<{"description": "displacement variable"}>>> = rot_y
velocity<<<{"description": "velocity variable"}>>> = rot_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
[../]
[./rot_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"}>>> = rot_vel_y
acceleration<<<{"description": "acceleration variable"}>>> = rot_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
[../]
[./rot_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"}>>> = rot_accel_z
displacement<<<{"description": "displacement variable"}>>> = rot_z
velocity<<<{"description": "velocity variable"}>>> = rot_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
[../]
[./rot_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"}>>> = rot_vel_z
acceleration<<<{"description": "acceleration variable"}>>> = rot_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_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 -6285710 -6285710'
[../]
[./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
[../]
[]
[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
end_time = 2.5
dt = 0.005
dtmin = 0.0001
timestep_tolerance = 1e-6
[]
[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 = ComputeFPIsolatorElasticity<<<{"description": "Compute the forces and the stiffness matrix for a single concave Friction Pendulum isolator element.", "href": "../../source/materials/ComputeFPIsolatorElasticity.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
mu_ref<<<{"description": "Reference co-efficient of friction."}>>> = 0.06
p_ref<<<{"description": "Reference axial pressure."}>>> = 50e6
diffusivity<<<{"description": "Thermal diffusivity of steel."}>>> = 4.4e-6
conductivity<<<{"description": "Thermal conductivity of steel."}>>> = 18
a<<<{"description": "Rate parameter."}>>> = 100
r_eff<<<{"description": "Effective radius of curvature of sliding surface."}>>> = 2.2352
r_contact<<<{"description": "Radius of contact area at sliding surface."}>>> = 0.2
uy<<<{"description": "Yield displacement of the bearing in shear."}>>> = 0.001
unit<<<{"description": "Tag for conversion in the pressure factor computation when different unit systems are used. Enter 1 for N m s C; 2 for kN m s C; 3 for N mm s C; 4 for kN mm s C; 5 for lb in s C; 6 for kip in s C; 7 for lb ft s C; 8 for kip ft s C. "}>>> = 1
gamma<<<{"description": "Gamma parameter of Newmark algorithm."}>>> = 0.5
beta<<<{"description": "Beta parameter of Newmark algorithm."}>>> = 0.25
pressure_dependent<<<{"description": "Switch for modeling friction dependence on the instantaneous pressure."}>>> = true
temperature_dependent<<<{"description": "Switch for modeling friction dependence on the instantaneous temperature."}>>> = true
velocity_dependent<<<{"description": "Switch for modeling friction dependence on the instantaneous sliding velocity."}>>> = true
[../]
[]
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[./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
[../]
[./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'
[../]
[]
[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/fp_isolator/fp_isolator_shear_PTV.i)
Figure 8: Displacement loading history along the shear direction of the bearing.
The response of the FP bearing to cyclic loading in the shear direction is shown in Figure 9

Figure 9: Response of the FP bearing to the prescribed cyclic loading in shear.
Example: Response to seismic loading
The input file below describes the response of the FP bearing to seismic excitation. A superstructure mass of 640745 kg is assumed for the purpose of this example, and is assigned to the top node of the bearing using a NodalKernel of type, NodalTranslationInertia
. Three components of ground motion are applied at the bottom node as input accelerations, using the PresetAcceleration
BC. An axial load is applied on the bearing to account for the weight of superstructure. For the initial few time steps, where gravity load is being applied, inertia objects are disabled using control
block to avoid any dynamic effects.
# Test for Friction Pendulum isolator under seismic loading
# coefficient of friction depends on velocity, pressure and temperature
#Loading conditions
# i) Seismic loading(ground motion) as acceleration profile at bottom node in 3 directions
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
type = GeneratedMesh
xmin = 0
xmax = 0.224
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'
[]
[Controls<<<{"href": "../../syntax/Controls/index.html"}>>>]
[./C1]
type = TimePeriod<<<{"description": "Control the enabled/disabled state of objects with time.", "href": "../../source/controls/TimePeriod.html"}>>>
disable_objects<<<{"description": "A list of object tags to disable."}>>> = '*::x_inertial1 *::y_inertial1 *::z_inertial1 *::vel_x *::vel_y *::vel_z *::accel_x *::accel_y *::accel_z'
start_time<<<{"description": "The time at which the objects are to be enabled/disabled."}>>> = '0'
end_time<<<{"description": "The time at which the objects are to be enable/disabled."}>>> = '0.10'
[../]
[]
[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
[../]
[./rot_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
[../]
[./rot_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
[../]
[./rot_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
[../]
[./rot_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
[../]
[./rot_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
[../]
[./rot_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]
[../]
[]
[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
[../]
[]
[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
[../]
[./rot_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"}>>> = rot_accel_x
displacement<<<{"description": "displacement variable"}>>> = rot_x
velocity<<<{"description": "velocity variable"}>>> = rot_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
[../]
[./rot_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"}>>> = rot_vel_x
acceleration<<<{"description": "acceleration variable"}>>> = rot_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
[../]
[./rot_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"}>>> = rot_accel_y
displacement<<<{"description": "displacement variable"}>>> = rot_y
velocity<<<{"description": "velocity variable"}>>> = rot_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
[../]
[./rot_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"}>>> = rot_vel_y
acceleration<<<{"description": "acceleration variable"}>>> = rot_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
[../]
[./rot_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"}>>> = rot_accel_z
displacement<<<{"description": "displacement variable"}>>> = rot_z
velocity<<<{"description": "velocity variable"}>>> = rot_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
[../]
[./rot_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"}>>> = rot_vel_z
acceleration<<<{"description": "acceleration variable"}>>> = rot_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"}>>>]
[./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"}>>> = 640745
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"}>>> = 640745
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"}>>> = 640745
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.11'
y<<<{"description": "The ordinate values"}>>>='0.0 -6285710 -6285710'
[../]
[]
[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
end_time =0.15
dt = 0.001
dtmin = 0.0000001
timestep_tolerance = 1e-8
[]
[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 = ComputeFPIsolatorElasticity<<<{"description": "Compute the forces and the stiffness matrix for a single concave Friction Pendulum isolator element.", "href": "../../source/materials/ComputeFPIsolatorElasticity.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
mu_ref<<<{"description": "Reference co-efficient of friction."}>>> = 0.06
p_ref<<<{"description": "Reference axial pressure."}>>> = 50e6
diffusivity<<<{"description": "Thermal diffusivity of steel."}>>> = 4.4e-6
conductivity<<<{"description": "Thermal conductivity of steel."}>>> = 18
a<<<{"description": "Rate parameter."}>>> = 100
r_eff<<<{"description": "Effective radius of curvature of sliding surface."}>>> = 2.2352
r_contact<<<{"description": "Radius of contact area at sliding surface."}>>> = 0.2
uy<<<{"description": "Yield displacement of the bearing in shear."}>>> = 0.001
unit<<<{"description": "Tag for conversion in the pressure factor computation when different unit systems are used. Enter 1 for N m s C; 2 for kN m s C; 3 for N mm s C; 4 for kN mm s C; 5 for lb in s C; 6 for kip in s C; 7 for lb ft s C; 8 for kip ft s C. "}>>> = 1
gamma<<<{"description": "Gamma parameter of Newmark algorithm."}>>> = 0.5
beta<<<{"description": "Beta parameter of Newmark algorithm."}>>> = 0.25
pressure_dependent<<<{"description": "Switch for modeling friction dependence on the instantaneous pressure."}>>> = true
temperature_dependent<<<{"description": "Switch for modeling friction dependence on the instantaneous temperature."}>>> = true
velocity_dependent<<<{"description": "Switch for modeling friction dependence on the instantaneous sliding velocity."}>>> = true
[../]
[]
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[./disp_x0]
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"}>>> = 0
variable<<<{"description": "The variable to be monitored"}>>> = disp_x
[../]
[./vel_x0]
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"}>>> = 0
variable<<<{"description": "The variable to be monitored"}>>> = vel_x
[../]
[./accel_x0]
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"}>>> = 0
variable<<<{"description": "The variable to be monitored"}>>> = accel_x
[../]
[./disp_x1]
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_x1]
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_x1]
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_y0]
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"}>>> = 0
variable<<<{"description": "The variable to be monitored"}>>> = disp_y
[../]
[./vel_y0]
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"}>>> = 0
variable<<<{"description": "The variable to be monitored"}>>> = vel_y
[../]
[./accel_y0]
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"}>>> = 0
variable<<<{"description": "The variable to be monitored"}>>> = accel_y
[../]
[./disp_y1]
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_y1]
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_y1]
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_z0]
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"}>>> = 0
variable<<<{"description": "The variable to be monitored"}>>> = disp_z
[../]
[./vel_z0]
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"}>>> = 0
variable<<<{"description": "The variable to be monitored"}>>> = vel_z
[../]
[./accel_z0]
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"}>>> = 0
variable<<<{"description": "The variable to be monitored"}>>> = accel_z
[../]
[./disp_z1]
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_z1]
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_z1]
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
[../]
[]
[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
interval=1
[]
(test/tests/materials/fp_isolator/fp_isolator_seismic_PTV.i)The figures below show the response of the FP bearing to the prescribed seismic loading. The local co-ordinate system for the FP bearing can be identified here.

Figure 10: Response of the FP bearing in the shear (local y) direction to the prescribed seismic loading ().

Figure 11: Response of the FP bearing in the shear (local z) direction to the prescribed seismic loading ().
Nonlinear Fluid Viscous Damper
ComputeFVDamperElasticity
material is used to simulate the hysteretic response of a nonlinear fluid viscous damper (FVD) and is used with two-node link type elements in MASTODON. For each subdomain (that may contain multiple link elements), the material properties are defined by creating the material block, ComputeFVDamperElasticity
, and the kernel block, StressDivergenceDamper
. Sample information is shown in the input file below.
[Kernels<<<{"href": "../../syntax/Kernels/index.html"}>>>]
[./lr_disp_x]
type = StressDivergenceDamper<<<{"description": "Kernel for two-noded nonlinear fluid viscous damper element", "href": "../../source/kernels/StressDivergenceDamper.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for Damper."}>>> = 'disp_x disp_y disp_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for 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 = StressDivergenceDamper<<<{"description": "Kernel for two-noded nonlinear fluid viscous damper element", "href": "../../source/kernels/StressDivergenceDamper.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for Damper."}>>> = 'disp_x disp_y disp_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for 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 = StressDivergenceDamper<<<{"description": "Kernel for two-noded nonlinear fluid viscous damper element", "href": "../../source/kernels/StressDivergenceDamper.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for Damper."}>>> = 'disp_x disp_y disp_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for 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
[../]
[]
[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
[../]
[]
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[./elasticity]
type = ComputeFVDamperElasticity<<<{"description": "Compute the deformations, forces and the stiffness matrix corresponding to a two-node nonlinear fluid viscous damper element.", "href": "../../source/materials/ComputeFVDamperElasticity.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 0
y_orientation<<<{"description": "Orientation of the y direction along with Ky is provided. This should be perpendicular to the axis of the Damper."}>>> = '0.0 1.0 0.0'
displacements<<<{"description": "The displacement variables appropriate for the simulation of geometry and coordinate system."}>>> = 'disp_x disp_y disp_z'
cd<<<{"description": "Damping co-efficient."}>>> = 2226502
alpha<<<{"description": "Velocity exponent of the damper."}>>> = 0.3
k<<<{"description": "Axial stiffness of the damper assembly."}>>> =300000000
gamma<<<{"description": "Gamma parameter of Newmark algorithm."}>>> = 0.5
beta<<<{"description": "Beta parameter of Newmark algorithm."}>>> = 0.25
[../]
[]
[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
[../]
[./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."}>>> = displacement
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
[../]
[]
[Functions<<<{"href": "../../syntax/Functions/index.html"}>>>]
[./displacement]
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.csv
format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = columns
[../]
[]
[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
dt = 0.0025
dtmin = 0.00001
timestep_tolerance = 1e-6
[]
(test/tests/materials/fv_damper/fv_damper_axial.i)A description of each of the input parameters is provided in the syntax description. Additionally, the response of the nonlinear FVD to static and seismic loading is demonstrated in the examples described below. Analysis results are compared with verified and validated numerical models implemented in the open source finite element package, OpenSees (Mazzoni et al. (2009)).
Response to static loading
The input file below performs the analysis of a nonlinear FVD subjected to a cyclic loading in the axial direction. A sinusoidal displacement shown in Figure 12, with increasing amplitude of 12, 24 and 36 mm, at a frequency of 0.5Hz is applied to the top node of the damper in the axial direction, and the bottom node is restrained in all three degrees-of-freedom.
# Test for Damper in Axial (Sinewave loading)
[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
[../]
[]
[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]
[../]
[]
[Kernels<<<{"href": "../../syntax/Kernels/index.html"}>>>]
[./lr_disp_x]
type = StressDivergenceDamper<<<{"description": "Kernel for two-noded nonlinear fluid viscous damper element", "href": "../../source/kernels/StressDivergenceDamper.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for Damper."}>>> = 'disp_x disp_y disp_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for 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 = StressDivergenceDamper<<<{"description": "Kernel for two-noded nonlinear fluid viscous damper element", "href": "../../source/kernels/StressDivergenceDamper.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for Damper."}>>> = 'disp_x disp_y disp_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for 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 = StressDivergenceDamper<<<{"description": "Kernel for two-noded nonlinear fluid viscous damper element", "href": "../../source/kernels/StressDivergenceDamper.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
displacements<<<{"description": "The displacement variables for Damper."}>>> = 'disp_x disp_y disp_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for 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
[../]
[]
[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
[../]
[]
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[./elasticity]
type = ComputeFVDamperElasticity<<<{"description": "Compute the deformations, forces and the stiffness matrix corresponding to a two-node nonlinear fluid viscous damper element.", "href": "../../source/materials/ComputeFVDamperElasticity.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 0
y_orientation<<<{"description": "Orientation of the y direction along with Ky is provided. This should be perpendicular to the axis of the Damper."}>>> = '0.0 1.0 0.0'
displacements<<<{"description": "The displacement variables appropriate for the simulation of geometry and coordinate system."}>>> = 'disp_x disp_y disp_z'
cd<<<{"description": "Damping co-efficient."}>>> = 2226502
alpha<<<{"description": "Velocity exponent of the damper."}>>> = 0.3
k<<<{"description": "Axial stiffness of the damper assembly."}>>> =300000000
gamma<<<{"description": "Gamma parameter of Newmark algorithm."}>>> = 0.5
beta<<<{"description": "Beta parameter of Newmark algorithm."}>>> = 0.25
[../]
[]
[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
[../]
[./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."}>>> = displacement
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
[../]
[]
[Functions<<<{"href": "../../syntax/Functions/index.html"}>>>]
[./displacement]
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.csv
format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = columns
[../]
[]
[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
dt = 0.0025
dtmin = 0.00001
timestep_tolerance = 1e-6
[]
[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
[../]
[]
[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
interval = 2
perf_graph<<<{"description": "Enable printing of the performance graph to the screen (Console)"}>>> = true
[]
(test/tests/materials/fv_damper/fv_damper_axial.i)
Figure 12: Displacement loading history along the axial direction of the damper.
Four test cases are run for varying and , and the axial stiffness () of the damper is held constant.The values presented below are in SI units. The response of the nonlinear FVD element to this prescribed cyclic loading in the axial direction is shown in Figure 13

Figure 13: Axial response of the nonlinear FVD to the prescribed cyclic loading for varying and .
Response to seismic loading
The input file below, demonstrates the seismic response a single bay portal frame installed with a diagonal nonlinear FVD element. The beam-columns are modeled using Euler-Bernoulli beam formulation and are assumed to behave linear elastic. A total mass of 50 tons is lumped at the floor level nodes to simulate the reactive mass. LineElementMaster is used to simplify the input file syntax for creating beam and column elements. The mesh adopted for beam and column elements is identified in Figure 14.
# Test for a protal frame installed with a diagonal Fluid Viscous Damper element
# The mesh for the geometry is imported from exodus file "fv_damper_frame.e"
# Beam-column elements are modeled as Euler-Bernouli beam elements
# Dimesnions
# columns
# E = 20e9, G = 100e9, A = 9e-2, Iy = Iz = 6.75e-4
# Beams
# E = 20e9, G = 100e9, A = 9e-2, Iy = Iz = 6.75e-1 (I_beam = 1000*I_Column to simulate rigid beam)
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
type = FileMesh
file = 'fv_damper_frame.e'
[]
[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
block = '1 2'
[../]
[./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
block = '1 2'
[../]
[./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
block = '1 2'
[../]
[]
[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]
block = '1 2 3'
[../]
[./reaction_y]
block = '1 2 3'
[../]
[./reaction_z]
block = '1 2 3'
[../]
[./reaction_xx]
block = '1 2 3'
[../]
[./reaction_yy]
block = '1 2 3'
[../]
[./reaction_zz]
block = '1 2 3'
[../]
[]
[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
[../]
[]
[Kernels<<<{"href": "../../syntax/Kernels/index.html"}>>>]
[./damper_disp_x]
type = StressDivergenceDamper<<<{"description": "Kernel for two-noded nonlinear fluid viscous damper element", "href": "../../source/kernels/StressDivergenceDamper.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '3'
displacements<<<{"description": "The displacement variables for Damper."}>>> = 'disp_x disp_y disp_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for 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
[../]
[./damper_disp_y]
type = StressDivergenceDamper<<<{"description": "Kernel for two-noded nonlinear fluid viscous damper element", "href": "../../source/kernels/StressDivergenceDamper.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '3'
displacements<<<{"description": "The displacement variables for Damper."}>>> = 'disp_x disp_y disp_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for 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
[../]
[./damper_disp_z]
type = StressDivergenceDamper<<<{"description": "Kernel for two-noded nonlinear fluid viscous damper element", "href": "../../source/kernels/StressDivergenceDamper.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '3'
displacements<<<{"description": "The displacement variables for Damper."}>>> = 'disp_x disp_y disp_z'
component<<<{"description": "An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for 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
[../]
[]
[NodalKernels<<<{"href": "../../syntax/NodalKernels/index.html"}>>>]
[./x_inertial]
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"}>>> = '2 3'
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"}>>> = 25000
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_inertial]
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"}>>> = '2 3'
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"}>>> = 25000
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_inertial]
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"}>>> = '2 3'
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"}>>> = 25000
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
[../]
[]
[Physics<<<{"href": "../../syntax/Physics/index.html"}>>>/SolidMechanics<<<{"href": "../../syntax/Physics/SolidMechanics/index.html"}>>>/LineElement<<<{"href": "../../syntax/Physics/SolidMechanics/LineElement/index.html"}>>>/QuasiStatic<<<{"href": "../../syntax/Physics/SolidMechanics/LineElement/QuasiStatic/index.html"}>>>]
displacements<<<{"description": "The nonlinear displacement variables for the problem"}>>> = 'disp_x disp_y disp_z'
rotations<<<{"description": "The rotations 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'
accelerations<<<{"description": "Translational acceleration variables"}>>> = 'accel_x accel_y accel_z'
rotational_velocities<<<{"description": "Rotational velocity variables"}>>> = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations<<<{"description": "Rotational acceleration variables"}>>> = 'rot_accel_x rot_accel_y rot_accel_z'
save_in<<<{"description": "The displacement and rotational residuals"}>>> = 'reaction_x reaction_y reaction_z'
beta<<<{"description": "beta parameter for Newmark Time integration"}>>> = 0.25 # Newmark time integration parameter
gamma<<<{"description": "gamma parameter for Newmark Time integration"}>>> = 0.5 # Newmark time integration parameter
# parameters for 5% Rayleigh damping
zeta<<<{"description": "Name of material property or a constant real number defining the zeta parameter for stiffness proportional Rayleigh damping."}>>> = 0 # stiffness proportional damping
eta<<<{"description": "Name of material property or a constant real number defining the eta parameter for mass proportional Rayleigh damping."}>>> = 0 # Mass proportional Rayleigh damping
[./block_1]
block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 1
area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 9e-2
Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 6.75e-4
Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 6.75e-4
y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 0.0 1.0'
[../]
[./block_2]
block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 2
area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 9e-2
Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 6.75e-1
Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 6.75e-1
y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'
[../]
[]
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[./elasticity_beamcolumn]
type = ComputeElasticityBeam<<<{"description": "Computes the equivalent of the elasticity tensor for the beam element, which are vectors of material translational and flexural stiffness.", "href": "../../source/materials/ComputeElasticityBeam.html"}>>>
youngs_modulus<<<{"description": "Young's modulus of the material. Can be supplied as either a number or a variable name."}>>> = 20e9
poissons_ratio<<<{"description": "Poisson's ratio of the material. Can be supplied as either a number or a variable name."}>>> = -0.9
shear_coefficient<<<{"description": "Scale factor for the shear modulus. Can be supplied as either a number or a variable name."}>>> = 1
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '1 2'
[../]
[./stress_beam]
type = ComputeBeamResultants<<<{"description": "Compute forces and moments using elasticity", "href": "../../source/materials/ComputeBeamResultants.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '1 2'
[../]
[./elasticity_damper]
type = ComputeFVDamperElasticity<<<{"description": "Compute the deformations, forces and the stiffness matrix corresponding to a two-node nonlinear fluid viscous damper element.", "href": "../../source/materials/ComputeFVDamperElasticity.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '3'
y_orientation<<<{"description": "Orientation of the y direction along with Ky is provided. This should be perpendicular to the axis of the Damper."}>>> = '-0.5144 0.85749 0'
displacements<<<{"description": "The displacement variables appropriate for the simulation of geometry and coordinate system."}>>> = 'disp_x disp_y disp_z'
cd<<<{"description": "Damping co-efficient."}>>> = 232764
alpha<<<{"description": "Velocity exponent of the damper."}>>> = 0.35
k<<<{"description": "Axial stiffness of the damper assembly."}>>> = 25000000
gamma<<<{"description": "Gamma parameter of Newmark algorithm."}>>> = 0.5
beta<<<{"description": "Beta parameter of Newmark algorithm."}>>> = 0.25
[../]
[]
[BCs<<<{"href": "../../syntax/BCs/index.html"}>>>]
[./base_accel_x]
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"}>>> = 1
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'
[../]
[./fix_y]
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"}>>> = 1
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fix_z]
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"}>>> = 1
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fix_rot_x]
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"}>>> = 1
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fix_rot_y]
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"}>>> = 1
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[./fix_rot_z]
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"}>>> = 1
value<<<{"description": "Value of the BC"}>>> = 0.0
[../]
[]
[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"}>>> = acceleration.csv
format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = columns
[../]
[]
[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
end_time = 0.2
dt = 0.0005
dtmin = 0.000001
timestep_tolerance = 1e-6
[]
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
# For basicdisp and basicforce postprocessors, divide the output values
# by a scale factor equal to 'length of the damper element; (5.83 for this
# problem). Becasue the object 'ElementIntegralMaterialProperty', calculates
# the material property value integrating over the element length.
[./basicdisp]
type = ElementIntegralMaterialProperty<<<{"description": "Compute the integral of the material property over the domain", "href": "../../source/postprocessors/ElementIntegralMaterialProperty.html"}>>>
mat_prop<<<{"description": "The name of the material property"}>>> = basic_deformation
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '3'
[../]
[./basicforce]
type = ElementIntegralMaterialProperty<<<{"description": "Compute the integral of the material property over the domain", "href": "../../source/postprocessors/ElementIntegralMaterialProperty.html"}>>>
mat_prop<<<{"description": "The name of the material property"}>>> = basic_force
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '3'
[../]
[./disp_bottom_right]
type = PointValue<<<{"description": "Compute the value of a variable at a specified location", "href": "../../source/postprocessors/PointValue.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on."}>>> = disp_x
point<<<{"description": "The physical point where the solution will be evaluated."}>>> = '5 0 0'
[../]
[./disp_top_right]
type = PointValue<<<{"description": "Compute the value of a variable at a specified location", "href": "../../source/postprocessors/PointValue.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on."}>>> = disp_x
point<<<{"description": "The physical point where the solution will be evaluated."}>>> = '5 3 0'
[../]
[]
[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
interval = 10
[]
(test/tests/materials/fv_damper/fv_damper_seismic_frame.i)
Figure 14: Mesh geometry for the portal frame installed with a diagonal nonlinear FVD element.
The ground acceleration is applied at the bottom nodes of the frame using PresetAcceleration
boundary condition. The hysteretic response of the nonlinear FVD to the prescribed seismic loading is shown in Figure 15. The response is benchmarked using the results obtained from OpenSees.

Figure 15: Nonlinear hysteretic response of the nonlinear FVD element to the prescribed seismic loading.
Outputs
The analysis results can be dumped to a csv file using postprocessor and output commands. The first command should define the type of results that will be dumped into the csv file. The following command is an example to specify the results to be outputted:
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[./_dt]
type = TimestepSize<<<{"description": "Reports the timestep size", "href": "../../source/postprocessors/TimestepSize.html"}>>>
[../]
[./disp_6x]
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"}>>> = 6
variable<<<{"description": "The variable to be monitored"}>>> = disp_x
[../]
[./disp_6y]
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"}>>> = 6
variable<<<{"description": "The variable to be monitored"}>>> = disp_y
[../]
[./disp_6z]
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"}>>> = 6
variable<<<{"description": "The variable to be monitored"}>>> = disp_z
[../]
[./vel_6x]
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"}>>> = 6
variable<<<{"description": "The variable to be monitored"}>>> = vel_x
[../]
[./vel_6y]
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"}>>> = 6
variable<<<{"description": "The variable to be monitored"}>>> = vel_y
[../]
[./vel_6z]
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"}>>> = 6
variable<<<{"description": "The variable to be monitored"}>>> = vel_z
[../]
[./accel_6x]
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"}>>> = 6
variable<<<{"description": "The variable to be monitored"}>>> = accel_x
[../]
[./accel_6y]
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"}>>> = 6
variable<<<{"description": "The variable to be monitored"}>>> = accel_y
[../]
[./accel_6z]
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"}>>> = 6
variable<<<{"description": "The variable to be monitored"}>>> = accel_z
[../]
[./stress_xy_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = stress_xy
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./stress_yz_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = stress_yz
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./stress_zx_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = stress_zx
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./strain_xy_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = strain_xy
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./strain_yz_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = strain_yz
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./strain_zx_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = strain_zx
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./stress_xx_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = stress_xx
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./stress_yy_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = stress_yy
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./stress_zz_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = stress_zz
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./strain_xx_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = strain_xx
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./strain_yy_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = strain_yy
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[./strain_zz_el]
type = ElementalVariableValue<<<{"description": "Outputs an elemental variable value at a particular location", "href": "../../source/postprocessors/ElementalVariableValue.html"}>>>
variable<<<{"description": "The variable to be monitored"}>>> = strain_zz
elementid<<<{"description": "The ID of the element where we monitor"}>>> = 0
[../]
[]
[Outputs<<<{"href": "../../syntax/Mastodon/Outputs/index.html"}>>>]
[./out]
type = Exodus<<<{"description": "Object for output data in the Exodus format", "href": "../../source/outputs/Exodus.html"}>>>
sync_times<<<{"description": "Times at which the output and solution is forced to occur"}>>> = '0 1 2 3 4 5 6 7 8'
sync_only<<<{"description": "Only export results at sync times"}>>> = true
[../]
[]
(test/tests/materials/isoil/HYS_darendeli.i)Since, the stresses, accelerations, and velocities are defined as an auxiliary variable previously (Kernels), they can be directly called in this section. elementid = 0 specifies the element number from which stress values will be pulled out. Note that MASTODON assigns numbers to elements and nodes different than those of the input file provided by the user (for user-defined mesh). To obtain the correct element and nodes numbers, the software Blot installed with MOOSE or Paraview should be used. type = ElementVariableValue
returns the average scalar stress value computed within the specified block. Finally, the results can be dumped into a csv file by using "Outputs command". Once the analysis is completed, the output csv file will be stored in the same folder as the input file. The first column contains the Time, and the rest of the columns contain the values asked in the Postprocessors command. Another form of output is the exodus file which can be read by Blot. The user also has the option to request results in both csv and exodus formats.
Response history mean
ResponseHistoryMean
computes the mean history given the response histories of a suite of nodes or a boundary. The input file below contains a ResponseHistoryBuilder
VectorPostprocessor called 'disp_nodes' which builds the response histories of the displacement variable 'u' at nodes 2, 6, and 10. It is desired that the corresponding mean history is calculated. This can be calculated by ResponseHistoryMean
using the 'disp_mean' block as follows.
[VectorPostprocessors<<<{"href": "../../syntax/VectorPostprocessors/index.html"}>>>]
[./disp_nodes]
type = ResponseHistoryBuilder<<<{"description": "Calculates response histories for a given node and variable(s).", "href": "../../source/vectorpostprocessors/ResponseHistoryBuilder.html"}>>>
variables<<<{"description": "Variable name for which the response history is requested."}>>> = 'u'
nodes<<<{"description": "Node number(s) at which the response history is needed."}>>> = '2 6 10'
[../]
[./disp_mean]
type = ResponseHistoryMean<<<{"description": "Calculate the mean acceleration time series given a response history.", "href": "../../source/vectorpostprocessors/ResponseHistoryMean.html"}>>>
response_history<<<{"description": "Name of the ResponseHistoryBuilder vectorpostprocessor, for which response spectra are calculated."}>>> = disp_nodes
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = out
[../]
[]
(test/tests/vectorpostprocessors/response_history_mean/response_history_mean.i)ResponseHistoryBuilder
has the capability to calculate response quantities of different types (i.e., acceleration_x, acceleration_y, velocity_x, displacement_y) at a list of nodes or a boundary. If the ResponseHistoryBuilder
VectorPostprocessor requesting response histories of different types is input into ResponseHistoryMean
, then mean across all these types will be calculated by ResponseHistoryMean
. Of course, this may not be the intent of the user. It is, therefore, the responsibility of the user to ensure that ResponseHistoryBuilder
has only one response quantity whose histories are recorded at a list of nodes or a boundary. ResponseHistoryMean
will not perform a check to ensure this.
Because mean response history calculations are performed only at the end of the simulation (last time step) and not at every time step, an 'Outputs' block must be created as shown below. This block (named 'out') ensures that the CSV output is only calculated at the final timestep.
[Outputs<<<{"href": "../../syntax/Mastodon/Outputs/index.html"}>>>]
[./out]
type = CSV<<<{"description": "Output for postprocessors, vector postprocessors, and scalar variables using comma seperated values (CSV).", "href": "../../source/outputs/CSV.html"}>>>
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."}>>> = 'final'
[../]
[]
(test/tests/vectorpostprocessors/response_history_mean/response_history_mean.i)The name of the Outputs block 'out' should be provided in the mean history VectorPostprocessor block as outputs = out
as shown above. For this input, a csv file of the mean response history is created, as shown below.
time,mean
0,0
1,0.63276836158192
2,0.66379392894762
3,0.66642321432106
4,0.66664603511249
5,0.66666491822981
(test/tests/vectorpostprocessors/response_history_mean/gold/response_history_mean_out_disp_mean.csv)References
- D. Y. Chiang and J. L. Beck.
A new class of distributed-element models for cyclic plasticity -i. theory and application.
International Journal of Solids and Structures, 31(4):469–484, 1994.[BibTeX]
- M. B. Darendeli.
Development of a new family of normalized modulus reduction and material damping curves.
PhD dissertation, University of Texas at Austin, 2001.[BibTeX]
- D. Groholski, Y. Hashash, B. Kim, M. Musgrove, J. Harmon, and J. Stewart.
Simplified model for small-strain nonlinearity and strength in 1d seismic site response analysis.
Journal of Geotechnical and Geoenvironmental Engineering, 2016.[BibTeX]
- Y. Hashash, M. Musgrove, J. Harmon, D. Groholski, C. Phillips, and D. Park.
Deepsoil v6.1, user manual.
Urbana, IL, Board of Trustees of University of Illinois at Urbana-Champaign, 2016.[BibTeX]
- W. Iwan.
On a class of models for the yielding behavior of continuous and composite systems.
Journal of Applied Mechanics, ASME, 34(E3):612–617, 1967.[BibTeX]
- S. Mazzoni, McKenna. F, Scott. M. H, and Fenves. G. L.
Opensees: open system for earthquake engineering simulation.
2009.[BibTeX]
- Dassault Systòmes.
Abaqus - finite element analysis software, v2016.
2018.[BibTeX]