- propertyThe material property name.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:The material property name.
- variableThe name of the variable that this object applies to
C++ Type:AuxVariableName
Unit:(no unit assumed)
Controllable:No
Description:The name of the variable that this object applies to
MaterialRealCMMAux
Populate an auxiliary variable with an entry from a ColumnMajorMatrix material property.
Description
MaterialRealCMMAux
can be used to populate an AuxVariable
with an element of a material property that is of type, ColumnMajorMatrix (CMM). In MASTODON, a common use case is accessing the deformation or force CMMs from link elements when the LinearSpring
material or any of the seismic isolator materials (e.g., ComputeFPIsolatorElasticity
) is used. This AuxKernel
and the corresponding AuxVariable
should be block-restricted to blocks where the material property given by the property
input parameter below is defined.
For example, the following input file syntax will create the AuxVariable field called global_force_x
with the X direction force in the spring element modeled using the LinearSpring material. Users can look at the LinearSpring.C file in the source code to see that this material has several material properties such as "global_forces", "global_moments", etc. In the case of the linear spring material, the "global_forces" material property is a CMM of size 6x1 and stores the forces in the spring in the global co-ordinate system. The AuxKernel to make this calculation is listed below.
[AuxKernels<<<{"href": "../../syntax/AuxKernels/index.html"}>>>]
[global_force_x]
type = MaterialRealCMMAux<<<{"description": "Populate an auxiliary variable with an entry from a ColumnMajorMatrix material property.", "href": "MaterialRealCMMAux.html"}>>>
property<<<{"description": "The material property name."}>>> = global_forces
row<<<{"description": "The row component to consider for this kernel"}>>> = 0
column<<<{"description": "The column component to consider for this kernel"}>>> = 0
variable<<<{"description": "The name of the variable that this object applies to"}>>> = global_force_x
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '0'
[]
[]
(test/tests/auxkernels/materialrealcmm/spring_static.i)In this input, the AuxKernel takes the element (0, 0) from the CMM material property named, "global_forces" in the linear spring material. (See LinearSpring.C for other material properties.) In this example, the linear spring material is only defined in block '0' and therefore this AuxKernel and AuxVariable are also restricted to this block. The element (0, 0) of the material property "global_forces" corresponds to the axial force in the spring. Currently, in order to know what each of the elements in a material property CMM correspond to, users will either have to go through the source code or reach out to one of the MASTODON developers here.
Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- check_boundary_restrictedTrueWhether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
Default:True
C++ Type:bool
Controllable:No
Description:Whether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
- column0The column component to consider for this kernel
Default:0
C++ Type:unsigned int
Controllable:No
Description:The column component to consider for this kernel
- execute_onLINEAR TIMESTEP_ENDThe 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.
Default:LINEAR TIMESTEP_END
C++ Type:ExecFlagEnum
Options:XFEM_MARK, NONE, INITIAL, LINEAR, LINEAR_CONVERGENCE, NONLINEAR, NONLINEAR_CONVERGENCE, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, MULTIAPP_FIXED_POINT_CONVERGENCE, FINAL, CUSTOM, PRE_DISPLACE
Controllable:No
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.
- factor1The factor by which to multiply your material property for visualization
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The factor by which to multiply your material property for visualization
- offset0The offset to add to your material property for visualization
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The offset to add to your material property for visualization
- row0The row component to consider for this kernel
Default:0
C++ Type:unsigned int
Controllable:No
Description:The row component to consider for this kernel
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- selected_qpEvaluate the material property at a specified quadrature point. This only needs to be used if you are interested in a particular quadrature point in each element. Otherwise do not include this parameter in your input file.
C++ Type:unsigned int
Controllable:No
Description:Evaluate the material property at a specified quadrature point. This only needs to be used if you are interested in a particular quadrature point in each element. Otherwise do not include this parameter in your input file.
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
(test/tests/auxkernels/materialrealcmm/spring_static.i)
# Test for MaterialRealCMMAux auxkernel
# A sawtooth force history is applied at one node of a spring element in each
# of the 6 degrees of freedom. The displacements and rotations are calculated
# at this node. The other node is fixed in all directions.
# This is a static analysis and therefore, the inertia kernels are ommitted.
# The global axial force in the spring is also calculated using the MaterialRealCMMAux
# auxkernel.
[Mesh]
type = GeneratedMesh
xmin = 0
xmax = 1
nx = 1
dim = 1
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[rot_x]
order = FIRST
family = LAGRANGE
[]
[rot_y]
order = FIRST
family = LAGRANGE
[]
[rot_z]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[global_force_x]
block = '0'
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[global_force_x]
type = MaterialRealCMMAux
property = global_forces
row = 0
column = 0
variable = global_force_x
block = '0'
[]
[]
[Kernels]
[spring_disp_x]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[]
[spring_disp_y]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[]
[spring_disp_z]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[]
[spring_rot_x]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[]
[spring_rot_y]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[]
[spring_rot_z]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[]
[]
[BCs]
[fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[]
[fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[]
[fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[]
[fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[]
[fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[]
[]
[NodalKernels]
[force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = right
function = force_x
[]
[force_y]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force_y
[]
[force_z]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = right
function = force_z
[]
[moment_x]
type = UserForcingFunctionNodalKernel
variable = rot_x
boundary = right
function = moment_x
[]
[moment_y]
type = UserForcingFunctionNodalKernel
variable = rot_y
boundary = right
function = moment_y
[]
[moment_z]
type = UserForcingFunctionNodalKernel
variable = rot_z
boundary = right
function = moment_z
[]
[]
[Functions]
[force_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # force
[]
[force_y]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 2.0 0.0 -2.0 0.0' # force
[]
[force_z]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 3.0 0.0 -3.0 0.0' # force
[]
[moment_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 10.0 0.0 -10.0 0.0' # moment
[]
[moment_y]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 20.0 0.0 -20.0 0.0' # moment
[]
[moment_z]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 30.0 0.0 -30.0 0.0' # force
[]
[]
[Materials]
[linear_spring_test]
type = LinearSpring
block = 0
y_orientation = '0.0 1.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
kx = 1.0
ky = 2.0
kz = 3.0
krx = 10.0
kry = 20.0
krz = 30.0
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
line_search = none
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
start_time = 0.0
end_time = 4.0
dt = 0.005
dtmin = 1e-4
timestep_tolerance = 1e-6
[]
[Postprocessors]
[disp_x]
type = PointValue
point = '1.0 0.0 0.0'
variable = disp_x
[]
[disp_y]
type = PointValue
point = '1.0 0.0 0.0'
variable = disp_y
[]
[disp_z]
type = PointValue
point = '1.0 0.0 0.0'
variable = disp_z
[]
[rot_x]
type = PointValue
point = '1.0 0.0 0.0'
variable = rot_x
[]
[rot_y]
type = PointValue
point = '1.0 0.0 0.0'
variable = rot_y
[]
[rot_z]
type = PointValue
point = '1.0 0.0 0.0'
variable = rot_z
[]
[gf_x]
type = PointValue
point = '0.5 0 0'
variable = global_force_x
[]
[]
[Outputs]
exodus = false
csv = true
[]
(examples/ex14/building_basemat_with_isolators_new.i)
[Mesh]
[mesh_gen]
type = FileMeshGenerator
file = full_structure_with_isolators_new.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[rot_x]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_y]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_z]
block = 'isolator_elems upper_rigid_elems'
[]
[]
[AuxVariables]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[rot_vel_x]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_vel_y]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_vel_z]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_accel_x]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_accel_y]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_accel_z]
block = 'isolator_elems upper_rigid_elems'
[]
[Fb_x]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Fb_y]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Fb_z]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Defb_x]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Velb_x]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Defb_y]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Defb_z]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/LineElement/QuasiStatic]
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.275625
gamma = 0.55
alpha = -0.05
[rigid_beams]
block = 'upper_rigid_elems'
area = 130.06
Iy = 24166.729
Iz = 24166.729
y_orientation = '0.0 0.0 1.0'
[]
[]
[Kernels]
[DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
block = 'roof ext_buttresses ext_walls int_buttresses SG_bases SGs int_wall int_slab RV_housing RV small_walls upper_basemat fluid_material RV_slab'
hht_alpha = -0.05
static_initialization = true
stiffness_damping_coefficient = 0.0019
[]
[inertia_x]
type = InertialForce
block = 'roof ext_buttresses ext_walls int_buttresses SG_bases SGs int_wall int_slab RV_housing RV small_walls upper_basemat fluid_material RV_slab'
variable = disp_x
eta = 0.038
alpha = -0.05
[]
[inertia_y]
type = InertialForce
block = 'roof ext_buttresses ext_walls int_buttresses SG_bases SGs int_wall int_slab RV_housing RV small_walls upper_basemat fluid_material RV_slab'
variable = disp_y
eta = 0.038
alpha = -0.05
[]
[inertia_z]
type = InertialForce
block = 'roof ext_buttresses ext_walls int_buttresses SG_bases SGs int_wall int_slab RV_housing RV small_walls upper_basemat fluid_material RV_slab'
variable = disp_z
eta = 0.038
alpha = -0.05
[]
[lr_disp_x]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_disp_y]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_disp_z]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_rot_x]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_rot_y]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_rot_z]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[gravity]
type = Gravity
variable = disp_z
value = -9.81
block = 'roof ext_buttresses ext_walls int_buttresses SG_bases SGs int_wall int_slab RV_housing RV small_walls upper_basemat fluid_material RV_slab'
alpha = -0.05
[]
[]
[AuxKernels]
[Fb_x]
type = MaterialRealCMMAux
property = basic_forces
row = 0
column = 0
variable = Fb_x
block = 'isolator_elems'
[]
[Fb_y]
type = MaterialRealCMMAux
property = basic_forces
row = 1
column = 0
variable = Fb_y
block = 'isolator_elems'
[]
[Fb_z]
type = MaterialRealCMMAux
property = basic_forces
row = 2
column = 0
variable = Fb_z
block = 'isolator_elems'
[]
[Defb_x]
type = MaterialRealCMMAux
property = deformations
row = 0
column = 0
variable = Defb_x
block = 'isolator_elems'
[]
[Velb_x]
type = MaterialRealCMMAux
property = deformation_rates
row = 0
column = 0
variable = Velb_x
block = 'isolator_elems'
[]
[Defb_y]
type = MaterialRealCMMAux
property = deformations
row = 1
column = 0
variable = Defb_y
block = 'isolator_elems'
[]
[Defb_z]
type = MaterialRealCMMAux
property = deformations
row = 2
column = 0
variable = Defb_z
block = 'isolator_elems'
[]
[accel_x]
type = TestNewmarkTI
displacement = disp_x
variable = accel_x
first = false
[]
[vel_x]
type = TestNewmarkTI
displacement = disp_x
variable = vel_x
[]
[accel_y]
type = TestNewmarkTI
displacement = disp_y
variable = accel_y
first = false
[]
[vel_y]
type = TestNewmarkTI
displacement = disp_y
variable = vel_y
[]
[accel_z]
type = TestNewmarkTI
displacement = disp_z
variable = accel_z
first = false
[]
[vel_z]
type = TestNewmarkTI
displacement = disp_z
variable = vel_z
[]
[rot_accel_x]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_x
variable = rot_accel_x
first = false
[]
[rot_vel_x]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_x
variable = rot_vel_x
[]
[rot_accel_y]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_y
variable = rot_accel_y
first = false
[]
[rot_vel_y]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_y
variable = rot_vel_y
[]
[rot_accel_z]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_z
variable = rot_accel_z
first = false
[]
[rot_vel_z]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_z
variable = rot_vel_z
[]
[]
[Materials]
[elasticity_concrete]
type = ComputeIsotropicElasticityTensor
block = 'roof ext_buttresses ext_walls int_buttresses SG_bases int_wall int_slab RV_housing small_walls RV_slab'
youngs_modulus = 24.8 #GPa
poissons_ratio = 0.2
[]
[elasticity_rigid_concrete]
type = ComputeIsotropicElasticityTensor
block = 'upper_basemat'
youngs_modulus = 99.2 #GPa # 4 x concrete for rigid basemat
poissons_ratio = 0.2
[]
[elasticity_steel_316]
type = ComputeIsotropicElasticityTensor
block = 'SGs RV'
youngs_modulus = 170 #GPa
poissons_ratio = 0.3
[]
[elasticity_fluid]
type = ComputeIsotropicElasticityTensor
block = 'fluid_material'
bulk_modulus = 2 #GPa #water
poissons_ratio = 0.45 #water
[]
[strain_1]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y disp_z'
block = 'roof ext_buttresses ext_walls int_buttresses SG_bases SGs int_wall int_slab RV_housing RV small_walls upper_basemat fluid_material RV_slab'
[]
[stress_1]
type = ComputeFiniteStrainElasticStress
block = 'roof ext_buttresses ext_walls int_buttresses SG_bases SGs int_wall int_slab RV_housing RV small_walls upper_basemat fluid_material RV_slab'
[]
[concrete_density]
type = GenericConstantMaterial
block = 'roof ext_buttresses ext_walls int_buttresses SG_bases int_wall int_slab RV_housing small_walls upper_basemat RV_slab'
prop_names = density
prop_values = 2.4e-6 #e9kg/m3
[]
[steel_density]
type = GenericConstantMaterial
block = 'SGs RV'
prop_names = density
prop_values = 7.85e-6 #e9kg/m3
[]
[fluid_density]
type = GenericConstantMaterial
block = 'fluid_material'
prop_names = density
prop_values = 1.0e-6 #e9kg/m3 #water
[]
[isolator_deformation]
type = ComputeIsolatorDeformation
sd_ratio = 0.5
y_orientation = '1.0 0.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
block = 'isolator_elems'
[]
[elasticity]
type = ComputeFPIsolatorElasticity
mu_ref = 0.06
p_ref = 0.006 # GPa
block = 'isolator_elems'
diffusivity = 4.4e-6
conductivity = 18
a = 100
r_eff = 1.0 # meters. 2sec sliding period
r_contact = 0.2
uy = 0.001
unit = 4
beta = 0.275625
gamma = 0.55
pressure_dependent = false
temperature_dependent = false
velocity_dependent = false
k_x = 78.53 # 7.853e10 N
k_xx = 0.62282 # 622820743.6 N
k_yy = 0.3114 # 311410371.8 N
k_zz = 0.3114 # 311410371.8 N
[]
[elasticity_beam_rigid]
type = ComputeElasticityBeam
youngs_modulus = 2e4
poissons_ratio = 0.27
shear_coefficient = 0.85
block = 'upper_rigid_elems'
[]
[stress_beam_rigid]
type = ComputeBeamResultants
block = 'upper_rigid_elems'
[]
[]
[Functions]
[input_motion_x]
type = PiecewiseLinear
data_file = 'case2_scaled.csv'
format = columns
scale_factor = 9.81
y_index_in_file = 1
xy_in_file_only = false
[]
[input_motion_y]
type = PiecewiseLinear
data_file = 'case2_scaled.csv'
format = columns
scale_factor = 9.81
y_index_in_file = 2
xy_in_file_only = false
[]
[input_motion_z]
type = PiecewiseLinear
data_file = 'case2_scaled.csv'
format = columns
scale_factor = 9.81
y_index_in_file = 3
xy_in_file_only = false
[]
[]
[BCs]
[x_motion]
type = PresetAcceleration
acceleration = accel_x
velocity = vel_x
variable = disp_x
beta = 0.2725625
boundary = 'bottom_isolators'
function = 'input_motion_x'
[]
[y_motion]
type = PresetAcceleration
acceleration = accel_y
velocity = vel_y
variable = disp_y
beta = 0.2725625
boundary = 'bottom_isolators'
function = 'input_motion_y'
[]
[z_motion]
type = PresetAcceleration
acceleration = accel_z
velocity = vel_z
variable = disp_z
beta = 0.2725625
boundary = 'bottom_isolators'
function = 'input_motion_z'
[]
[fixrxbot]
type = DirichletBC
variable = rot_x
boundary = 'bottom_isolators'
value = 0.0
[]
[fixrybot]
type = DirichletBC
variable = rot_y
boundary = 'bottom_isolators'
value = 0.0
[]
[fixrzbot]
type = DirichletBC
variable = rot_z
boundary = 'bottom_isolators'
value = 0.0
[]
[fixrxcon]
type = DirichletBC
variable = rot_x
boundary = 'connections'
value = 0.0
[]
[fixrycon]
type = DirichletBC
variable = rot_y
boundary = 'connections'
value = 0.0
[]
[fixrzcon]
type = DirichletBC
variable = rot_z
boundary = 'connections'
value = 0.0
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-ksp_snes_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
solve_type = 'NEWTON'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-15
dt = 0.01
end_time = 28
timestep_tolerance = 1e-6
automatic_scaling = true
[TimeIntegrator]
type = NewmarkBeta
beta = 0.275625
gamma = 0.55
inactive_tsteps = 2
[]
[]
[Controls]
[inertia_switch]
type = TimePeriod
start_time = 0.0
end_time = 0.03
disable_objects = '*/inertia_x */inertia_y */inertia_z
*/vel_x */vel_y */vel_z
*/accel_x */accel_y */accel_z
*/rot_vel_x */rot_vel_y */rot_vel_z
*/rot_accel_x */rot_accel_y */rot_accel_z'
set_sync_times = true
execute_on = 'timestep_begin timestep_end'
[]
[]
[Postprocessors]
[inp_accel_x]
type = PointValue
point = '5.0 0.0 -1.3'
variable = accel_x
[]
[inp_accel_y]
type = PointValue
point = '5.0 0.0 -1.3'
variable = accel_y
[]
[inp_accel_z]
type = PointValue
point = '5.0 0.0 -1.3'
variable = accel_z
[]
[basemat_accel_x]
type = PointValue
point = '0.0 0.0 0.0'
variable = accel_x
[]
[basemat_accel_y]
type = PointValue
point = '0.0 0.0 0.0'
variable = accel_y
[]
[basemat_accel_z]
type = PointValue
point = '0.0 0.0 0.0'
variable = accel_z
[]
[iso1_fb_axial]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Fb_x
[]
[iso1_defb_axial]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Defb_x
[]
[iso1_fb_shear1]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Fb_y
[]
[iso1_defb_shear1]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Defb_y
[]
[iso1_fb_shear2]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Fb_z
[]
[iso1_defb_shear2]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Defb_z
[]
[]
[VectorPostprocessors]
[accel_hist_x]
type = ResponseHistoryBuilder
variables = 'accel_x'
nodes = '5252 2767 59044 24207 44503 41781 59152 38767 59100'
# locations:
# 5252-roof_edge
# 2767-roof_center
# 59044-RV_slab_center
# 24207-SG_base
# 44503-basemat_center-(0.35,-0.75,-1)(approx)
# 41781-center_isolator_top-(5,0,-1)
# 59152-center_isolator_bottom-(5,0,-1.3)
# 38767-edge_isolator_top-(-45,30,-1)
# 59100-edge_isolator_bottom(-45,30,-1.3)
outputs = out1
[]
[accel_spec_x]
type = ResponseSpectraCalculator
vectorpostprocessor = accel_hist_x
regularize_dt = 0.01
damping_ratio = 0.05
start_frequency = 0.1
end_frequency = 50
outputs = out1
[]
[accel_hist_y]
type = ResponseHistoryBuilder
variables = 'accel_y'
nodes = '5252 2767 59044 24207 44503 41781 59152 38767 59100'
# locations:
# 5252-roof_edge
# 2767-roof_center
# 59044-RV_slab_center
# 24207-SG_base
# 44503-basemat_center-(0.35,-0.75,-1)(approx)
# 41781-center_isolator_top-(5,0,-1)
# 59152-center_isolator_bottom-(5,0,-1.3)
# 38767-edge_isolator_top-(-45,30,-1)
# 59100-edge_isolator_bottom(-45,30,-1.3)
outputs = out1
[]
[accel_spec_y]
type = ResponseSpectraCalculator
vectorpostprocessor = accel_hist_y
regularize_dt = 0.01
damping_ratio = 0.05
start_frequency = 0.1
end_frequency = 50
outputs = out1
[]
[accel_hist_z]
type = ResponseHistoryBuilder
variables = 'accel_z'
nodes = '5252 2767 59044 24207 44503 41781 59152 38767 59100'
# locations:
# 5252-roof_edge
# 2767-roof_center
# 59044-RV_slab_center
# 24207-SG_base
# 44503-basemat_center-(0.35,-0.75,-1)(approx)
# 41781-center_isolator_top-(5,0,-1)
# 59152-center_isolator_bottom-(5,0,-1.3)
# 38767-edge_isolator_top-(-45,30,-1)
# 59100-edge_isolator_bottom(-45,30,-1.3)
outputs = out1
[]
[accel_spec_z]
type = ResponseSpectraCalculator
vectorpostprocessor = accel_hist_z
regularize_dt = 0.01
damping_ratio = 0.05
start_frequency = 0.1
end_frequency = 50
outputs = out1
[]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[out1]
type = CSV
execute_on = 'final'
[]
[]
(examples/ex14/basemat_with_isolators_new.i)
[Mesh]
[mesh_gen]
type = FileMeshGenerator
file = basemat_with_isolators_new.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[rot_x]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_y]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_z]
block = 'isolator_elems upper_rigid_elems'
[]
[]
[AuxVariables]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[rot_vel_x]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_vel_y]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_vel_z]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_accel_x]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_accel_y]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_accel_z]
block = 'isolator_elems upper_rigid_elems'
[]
[Fb_x]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Fb_y]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Fb_z]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Defb_x]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Velb_x]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Defb_y]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Defb_z]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/LineElement/QuasiStatic]
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.275625
gamma = 0.55
alpha = -0.05
[rigid_beams]
block = 'upper_rigid_elems'
area = 130.06
Iy = 24166.729
Iz = 24166.729
y_orientation = '0.0 0.0 1.0'
[]
[]
[Kernels]
[DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
block = 'upper_basemat'
hht_alpha = -0.05
static_initialization = true
stiffness_damping_coefficient = 0.0019
[]
[inertia_x]
type = InertialForce
block = 'upper_basemat'
variable = disp_x
eta = 0.038
alpha = -0.05
[]
[inertia_y]
type = InertialForce
block = 'upper_basemat'
variable = disp_y
eta = 0.038
alpha = -0.05
[]
[inertia_z]
type = InertialForce
block = 'upper_basemat'
variable = disp_z
eta = 0.038
alpha = -0.05
[]
[lr_disp_x]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_disp_y]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_disp_z]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_rot_x]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_rot_y]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_rot_z]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[gravity]
type = Gravity
variable = disp_z
value = -9.81
block = 'upper_basemat'
alpha = -0.05
[]
[]
[AuxKernels]
[Fb_x]
type = MaterialRealCMMAux
property = basic_forces
row = 0
column = 0
variable = Fb_x
block = 'isolator_elems'
[]
[Fb_y]
type = MaterialRealCMMAux
property = basic_forces
row = 1
column = 0
variable = Fb_y
block = 'isolator_elems'
[]
[Fb_z]
type = MaterialRealCMMAux
property = basic_forces
row = 2
column = 0
variable = Fb_z
block = 'isolator_elems'
[]
[Defb_x]
type = MaterialRealCMMAux
property = deformations
row = 0
column = 0
variable = Defb_x
block = 'isolator_elems'
[]
[Velb_x]
type = MaterialRealCMMAux
property = deformation_rates
row = 0
column = 0
variable = Velb_x
block = 'isolator_elems'
[]
[Defb_y]
type = MaterialRealCMMAux
property = deformations
row = 1
column = 0
variable = Defb_y
block = 'isolator_elems'
[]
[Defb_z]
type = MaterialRealCMMAux
property = deformations
row = 2
column = 0
variable = Defb_z
block = 'isolator_elems'
[]
[accel_x]
type = TestNewmarkTI
displacement = disp_x
variable = accel_x
first = false
[]
[vel_x]
type = TestNewmarkTI
displacement = disp_x
variable = vel_x
[]
[accel_y]
type = TestNewmarkTI
displacement = disp_y
variable = accel_y
first = false
[]
[vel_y]
type = TestNewmarkTI
displacement = disp_y
variable = vel_y
[]
[accel_z]
type = TestNewmarkTI
displacement = disp_z
variable = accel_z
first = false
[]
[vel_z]
type = TestNewmarkTI
displacement = disp_z
variable = vel_z
[]
[rot_accel_x]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_x
variable = rot_accel_x
first = false
[]
[rot_vel_x]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_x
variable = rot_vel_x
[]
[rot_accel_y]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_y
variable = rot_accel_y
first = false
[]
[rot_vel_y]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_y
variable = rot_vel_y
[]
[rot_accel_z]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_z
variable = rot_accel_z
first = false
[]
[rot_vel_z]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_z
variable = rot_vel_z
[]
[]
[Materials]
[elasticity_concrete]
type = ComputeIsotropicElasticityTensor
block = 'upper_basemat'
youngs_modulus = 99.2 #GPa # concrete x 4 making basemat rigid
poissons_ratio = 0.2
[]
[strain_1]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y disp_z'
block = 'upper_basemat'
[]
[stress_1]
type = ComputeFiniteStrainElasticStress
block = 'upper_basemat'
[]
[concrete_density]
type = GenericConstantMaterial
block = 'upper_basemat'
prop_names = density
prop_values = 11.04e-6 # e9kg/m3 # total wt of 75,000 tons
[]
[isolator_deformation]
type = ComputeIsolatorDeformation
sd_ratio = 0.5
y_orientation = '1.0 0.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
block = 'isolator_elems'
[]
[elasticity]
type = ComputeFPIsolatorElasticity
mu_ref = 0.06
p_ref = 0.05 # GPa
block = 'isolator_elems'
diffusivity = 4.4e-6
conductivity = 18
a = 100
r_eff = 1.0 # meters. 2sec sliding period
r_contact = 0.2
uy = 0.001
unit = 4
beta = 0.275625
gamma = 0.55
pressure_dependent = false
temperature_dependent = false
velocity_dependent = false
k_x = 78.53 # 7.853e10 N
k_xx = 0.62282 # 622820743.6 N
k_yy = 0.3114 # 311410371.8 N
k_zz = 0.3114 # 311410371.8 N
[]
[elasticity_beam_rigid]
type = ComputeElasticityBeam
youngs_modulus = 2e4
poissons_ratio = 0.27
shear_coefficient = 0.85
block = 'upper_rigid_elems'
[]
[stress_beam_rigid]
type = ComputeBeamResultants
block = 'upper_rigid_elems'
[]
[]
[Functions]
[input_motion_x]
type = PiecewiseLinear
data_file = 'case2_scaled.csv'
format = columns
scale_factor = 9.81
y_index_in_file = 1
xy_in_file_only = false
[]
[]
[BCs]
[x_motion]
type = PresetAcceleration
acceleration = accel_x
velocity = vel_x
variable = disp_x
beta = 0.2725625
boundary = 'bottom_isolators'
function = 'input_motion_x'
[]
[fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom_isolators'
value = 0.0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'bottom_isolators'
value = 0.0
[]
[fixrxbot]
type = DirichletBC
variable = rot_x
boundary = 'bottom_isolators'
value = 0.0
[]
[fixrybot]
type = DirichletBC
variable = rot_y
boundary = 'bottom_isolators'
value = 0.0
[]
[fixrzbot]
type = DirichletBC
variable = rot_z
boundary = 'bottom_isolators'
value = 0.0
[]
[fixrxcon]
type = DirichletBC
variable = rot_x
boundary = 'connections'
value = 0.0
[]
[fixrycon]
type = DirichletBC
variable = rot_y
boundary = 'connections'
value = 0.0
[]
[fixrzcon]
type = DirichletBC
variable = rot_z
boundary = 'connections'
value = 0.0
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-ksp_snes_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
solve_type = 'NEWTON'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-15
dt = 0.01
end_time = 28
timestep_tolerance = 1e-6
automatic_scaling = true
[TimeIntegrator]
type = NewmarkBeta
beta = 0.275625
gamma = 0.55
inactive_tsteps = 2
[]
[]
[Controls]
[inertia_switch]
type = TimePeriod
start_time = 0.0
end_time = 0.03
disable_objects = '*/inertia_x */inertia_y */inertia_z
*/vel_x */vel_y */vel_z
*/accel_x */accel_y */accel_z
*/rot_vel_x */rot_vel_y */rot_vel_z
*/rot_accel_x */rot_accel_y */rot_accel_z'
set_sync_times = true
execute_on = 'timestep_begin timestep_end'
[]
[]
[Postprocessors]
[inp_accel_x]
type = PointValue
point = '5.0 0.0 -1.3'
variable = accel_x
[]
[inp_accel_y]
type = PointValue
point = '5.0 0.0 -1.3'
variable = accel_y
[]
[inp_accel_z]
type = PointValue
point = '5.0 0.0 -1.3'
variable = accel_z
[]
[basemat_accel_x]
type = PointValue
point = '0.0 0.0 0.0'
variable = accel_x
[]
[basemat_accel_y]
type = PointValue
point = '0.0 0.0 0.0'
variable = accel_y
[]
[basemat_accel_z]
type = PointValue
point = '0.0 0.0 0.0'
variable = accel_z
[]
[iso1_fb_axial]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Fb_x
[]
[iso1_defb_axial]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Defb_x
[]
[iso1_fb_shear1]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Fb_y
[]
[iso1_defb_shear1]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Defb_y
[]
[iso1_fb_shear2]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Fb_z
[]
[iso1_defb_shear2]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Defb_z
[]
[]
[VectorPostprocessors]
[accel_hist_x]
type = ResponseHistoryBuilder
variables = 'accel_x'
nodes = '7943 4568 8640 564 8588'
# locations:
# 7943-basemat_center-(0.35,-0.75,-1)(approx)
# 4568-center_isolator_top-(5,0,-1)
# 8640-center_isolator_bottom-(5,0,-1.3)
# 564-edge_isolator_top-(-45,30,-1)
# 8588-edge_isolator_bottom(-45,30,-1.3)
outputs = out1
[]
[accel_spec_x]
type = ResponseSpectraCalculator
vectorpostprocessor = accel_hist_x
regularize_dt = 0.01
damping_ratio = 0.05
start_frequency = 0.1
end_frequency = 50
outputs = out1
[]
[accel_hist_y]
type = ResponseHistoryBuilder
variables = 'accel_y'
nodes = '7943 4568 8640 564 8588'
# locations:
# 7943-basemat_center-(0.35,-0.75,-1)(approx)
# 4568-center_isolator_top-(5,0,-1)
# 8640-center_isolator_bottom-(5,0,-1.3)
# 564-edge_isolator_top-(-45,30,-1)
# 8588-edge_isolator_bottom(-45,30,-1.3)
outputs = out1
[]
[accel_spec_y]
type = ResponseSpectraCalculator
vectorpostprocessor = accel_hist_y
regularize_dt = 0.01
damping_ratio = 0.05
start_frequency = 0.1
end_frequency = 50
outputs = out1
[]
[accel_hist_z]
type = ResponseHistoryBuilder
variables = 'accel_z'
nodes = '7943 4568 8640 564 8588'
# locations:
# 7943-basemat_center-(0.35,-0.75,-1)(approx)
# 4568-center_isolator_top-(5,0,-1)
# 8640-center_isolator_bottom-(5,0,-1.3)
# 564-edge_isolator_top-(-45,30,-1)
# 8588-edge_isolator_bottom(-45,30,-1.3)
outputs = out1
[]
[accel_spec_z]
type = ResponseSpectraCalculator
vectorpostprocessor = accel_hist_z
regularize_dt = 0.01
damping_ratio = 0.05
start_frequency = 0.1
end_frequency = 50
outputs = out1
[]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[out1]
type = CSV
execute_on = 'final'
[]
[]
(test/tests/auxkernels/materialrealcmm/spring_static.i)
# Test for MaterialRealCMMAux auxkernel
# A sawtooth force history is applied at one node of a spring element in each
# of the 6 degrees of freedom. The displacements and rotations are calculated
# at this node. The other node is fixed in all directions.
# This is a static analysis and therefore, the inertia kernels are ommitted.
# The global axial force in the spring is also calculated using the MaterialRealCMMAux
# auxkernel.
[Mesh]
type = GeneratedMesh
xmin = 0
xmax = 1
nx = 1
dim = 1
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[rot_x]
order = FIRST
family = LAGRANGE
[]
[rot_y]
order = FIRST
family = LAGRANGE
[]
[rot_z]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[global_force_x]
block = '0'
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[global_force_x]
type = MaterialRealCMMAux
property = global_forces
row = 0
column = 0
variable = global_force_x
block = '0'
[]
[]
[Kernels]
[spring_disp_x]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
[]
[spring_disp_y]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
[]
[spring_disp_z]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
[]
[spring_rot_x]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
[]
[spring_rot_y]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
[]
[spring_rot_z]
type = StressDivergenceSpring
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
[]
[]
[BCs]
[fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[fixy1]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[]
[fixz1]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[]
[fixr1]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[]
[fixr2]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[]
[fixr3]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[]
[]
[NodalKernels]
[force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = right
function = force_x
[]
[force_y]
type = UserForcingFunctionNodalKernel
variable = disp_y
boundary = right
function = force_y
[]
[force_z]
type = UserForcingFunctionNodalKernel
variable = disp_z
boundary = right
function = force_z
[]
[moment_x]
type = UserForcingFunctionNodalKernel
variable = rot_x
boundary = right
function = moment_x
[]
[moment_y]
type = UserForcingFunctionNodalKernel
variable = rot_y
boundary = right
function = moment_y
[]
[moment_z]
type = UserForcingFunctionNodalKernel
variable = rot_z
boundary = right
function = moment_z
[]
[]
[Functions]
[force_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # force
[]
[force_y]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 2.0 0.0 -2.0 0.0' # force
[]
[force_z]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 3.0 0.0 -3.0 0.0' # force
[]
[moment_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 10.0 0.0 -10.0 0.0' # moment
[]
[moment_y]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 20.0 0.0 -20.0 0.0' # moment
[]
[moment_z]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 30.0 0.0 -30.0 0.0' # force
[]
[]
[Materials]
[linear_spring_test]
type = LinearSpring
block = 0
y_orientation = '0.0 1.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
kx = 1.0
ky = 2.0
kz = 3.0
krx = 10.0
kry = 20.0
krz = 30.0
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
line_search = none
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
start_time = 0.0
end_time = 4.0
dt = 0.005
dtmin = 1e-4
timestep_tolerance = 1e-6
[]
[Postprocessors]
[disp_x]
type = PointValue
point = '1.0 0.0 0.0'
variable = disp_x
[]
[disp_y]
type = PointValue
point = '1.0 0.0 0.0'
variable = disp_y
[]
[disp_z]
type = PointValue
point = '1.0 0.0 0.0'
variable = disp_z
[]
[rot_x]
type = PointValue
point = '1.0 0.0 0.0'
variable = rot_x
[]
[rot_y]
type = PointValue
point = '1.0 0.0 0.0'
variable = rot_y
[]
[rot_z]
type = PointValue
point = '1.0 0.0 0.0'
variable = rot_z
[]
[gf_x]
type = PointValue
point = '0.5 0 0'
variable = global_force_x
[]
[]
[Outputs]
exodus = false
csv = true
[]
(examples/ex14/basemat_with_isolators_new_3D.i)
[Mesh]
[mesh_gen]
type = FileMeshGenerator
file = basemat_with_isolators_new.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[rot_x]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_y]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_z]
block = 'isolator_elems upper_rigid_elems'
[]
[]
[AuxVariables]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[rot_vel_x]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_vel_y]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_vel_z]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_accel_x]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_accel_y]
block = 'isolator_elems upper_rigid_elems'
[]
[rot_accel_z]
block = 'isolator_elems upper_rigid_elems'
[]
[Fb_x]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Fb_y]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Fb_z]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Defb_x]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Velb_x]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Defb_y]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[Defb_z]
block = 'isolator_elems'
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/LineElement/QuasiStatic]
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
accelerations = 'accel_x accel_y accel_z'
rotational_velocities = 'rot_vel_x rot_vel_y rot_vel_z'
rotational_accelerations = 'rot_accel_x rot_accel_y rot_accel_z'
beta = 0.275625
gamma = 0.55
alpha = -0.05
[rigid_beams]
block = 'upper_rigid_elems'
area = 130.06
Iy = 24166.729
Iz = 24166.729
y_orientation = '0.0 0.0 1.0'
[]
[]
[Kernels]
[DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
block = 'upper_basemat'
hht_alpha = -0.05
static_initialization = true
stiffness_damping_coefficient = 0.0019
[]
[inertia_x]
type = InertialForce
block = 'upper_basemat'
variable = disp_x
eta = 0.038
alpha = -0.05
[]
[inertia_y]
type = InertialForce
block = 'upper_basemat'
variable = disp_y
eta = 0.038
alpha = -0.05
[]
[inertia_z]
type = InertialForce
block = 'upper_basemat'
variable = disp_z
eta = 0.038
alpha = -0.05
[]
[lr_disp_x]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_disp_y]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_disp_z]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_rot_x]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_rot_y]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[lr_rot_z]
type = StressDivergenceIsolator
block = 'isolator_elems'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
static_initialization = true
zeta = 0.0019
alpha = -0.05
[]
[gravity]
type = Gravity
variable = disp_z
value = -9.81
block = 'upper_basemat'
alpha = -0.05
[]
[]
[AuxKernels]
[Fb_x]
type = MaterialRealCMMAux
property = basic_forces
row = 0
column = 0
variable = Fb_x
block = 'isolator_elems'
[]
[Fb_y]
type = MaterialRealCMMAux
property = basic_forces
row = 1
column = 0
variable = Fb_y
block = 'isolator_elems'
[]
[Fb_z]
type = MaterialRealCMMAux
property = basic_forces
row = 2
column = 0
variable = Fb_z
block = 'isolator_elems'
[]
[Defb_x]
type = MaterialRealCMMAux
property = deformations
row = 0
column = 0
variable = Defb_x
block = 'isolator_elems'
[]
[Velb_x]
type = MaterialRealCMMAux
property = deformation_rates
row = 0
column = 0
variable = Velb_x
block = 'isolator_elems'
[]
[Defb_y]
type = MaterialRealCMMAux
property = deformations
row = 1
column = 0
variable = Defb_y
block = 'isolator_elems'
[]
[Defb_z]
type = MaterialRealCMMAux
property = deformations
row = 2
column = 0
variable = Defb_z
block = 'isolator_elems'
[]
[accel_x]
type = TestNewmarkTI
displacement = disp_x
variable = accel_x
first = false
[]
[vel_x]
type = TestNewmarkTI
displacement = disp_x
variable = vel_x
[]
[accel_y]
type = TestNewmarkTI
displacement = disp_y
variable = accel_y
first = false
[]
[vel_y]
type = TestNewmarkTI
displacement = disp_y
variable = vel_y
[]
[accel_z]
type = TestNewmarkTI
displacement = disp_z
variable = accel_z
first = false
[]
[vel_z]
type = TestNewmarkTI
displacement = disp_z
variable = vel_z
[]
[rot_accel_x]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_x
variable = rot_accel_x
first = false
[]
[rot_vel_x]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_x
variable = rot_vel_x
[]
[rot_accel_y]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_y
variable = rot_accel_y
first = false
[]
[rot_vel_y]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_y
variable = rot_vel_y
[]
[rot_accel_z]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_z
variable = rot_accel_z
first = false
[]
[rot_vel_z]
block = 'isolator_elems upper_rigid_elems'
type = TestNewmarkTI
displacement = rot_z
variable = rot_vel_z
[]
[]
[Materials]
[elasticity_concrete]
type = ComputeIsotropicElasticityTensor
block = 'upper_basemat'
youngs_modulus = 99.2 #GPa # concrete x 4 making basemat rigid
poissons_ratio = 0.2
[]
[strain_1]
type = ComputeFiniteStrain
displacements = 'disp_x disp_y disp_z'
block = 'upper_basemat'
[]
[stress_1]
type = ComputeFiniteStrainElasticStress
block = 'upper_basemat'
[]
[concrete_density]
type = GenericConstantMaterial
block = 'upper_basemat'
prop_names = density
prop_values = 11.04e-6 # e9kg/m3 # total wt of 75,000 tons
[]
[isolator_deformation]
type = ComputeIsolatorDeformation
sd_ratio = 0.5
y_orientation = '1.0 0.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
block = 'isolator_elems'
[]
[elasticity]
type = ComputeFPIsolatorElasticity
mu_ref = 0.06
p_ref = 0.1 # GPa
block = 'isolator_elems'
diffusivity = 4.4e-6
conductivity = 18
a = 100
r_eff = 1.0 # meters. 2sec sliding period
r_contact = 0.2
uy = 0.001
unit = 4
beta = 0.275625
gamma = 0.55
pressure_dependent = true
temperature_dependent = true
velocity_dependent = true
k_x = 78.53 # 7.853e10 N
k_xx = 0.62282 # 622820743.6 N
k_yy = 0.3114 # 311410371.8 N
k_zz = 0.3114 # 311410371.8 N
[]
[elasticity_beam_rigid]
type = ComputeElasticityBeam
youngs_modulus = 2e4
poissons_ratio = 0.27
shear_coefficient = 0.85
block = 'upper_rigid_elems'
[]
[stress_beam_rigid]
type = ComputeBeamResultants
block = 'upper_rigid_elems'
[]
[]
[Functions]
[input_motion_x]
type = PiecewiseLinear
data_file = 'case2_scaled.csv'
format = columns
scale_factor = 9.81
y_index_in_file = 1
xy_in_file_only = false
[]
[input_motion_y]
type = PiecewiseLinear
data_file = 'case2_scaled.csv'
format = columns
scale_factor = 9.81
y_index_in_file = 2
xy_in_file_only = false
[]
[input_motion_z]
type = PiecewiseLinear
data_file = 'case2_scaled.csv'
format = columns
scale_factor = 9.81
y_index_in_file = 3
xy_in_file_only = false
[]
[]
[BCs]
[x_motion]
type = PresetAcceleration
acceleration = accel_x
velocity = vel_x
variable = disp_x
beta = 0.2725625
boundary = 'bottom_isolators'
function = 'input_motion_x'
[]
[y_motion]
type = PresetAcceleration
acceleration = accel_y
velocity = vel_y
variable = disp_y
beta = 0.2725625
boundary = 'bottom_isolators'
function = 'input_motion_y'
[]
[z_motion]
type = PresetAcceleration
acceleration = accel_z
velocity = vel_z
variable = disp_z
beta = 0.2725625
boundary = 'bottom_isolators'
function = 'input_motion_z'
[]
[fixrxbot]
type = DirichletBC
variable = rot_x
boundary = 'bottom_isolators'
value = 0.0
[]
[fixrybot]
type = DirichletBC
variable = rot_y
boundary = 'bottom_isolators'
value = 0.0
[]
[fixrzbot]
type = DirichletBC
variable = rot_z
boundary = 'bottom_isolators'
value = 0.0
[]
[fixrxcon]
type = DirichletBC
variable = rot_x
boundary = 'connections'
value = 0.0
[]
[fixrycon]
type = DirichletBC
variable = rot_y
boundary = 'connections'
value = 0.0
[]
[fixrzcon]
type = DirichletBC
variable = rot_z
boundary = 'connections'
value = 0.0
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-ksp_snes_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
solve_type = 'NEWTON'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-15
dt = 0.01
end_time = 28
timestep_tolerance = 1e-6
automatic_scaling = true
[TimeIntegrator]
type = NewmarkBeta
beta = 0.275625
gamma = 0.55
inactive_tsteps = 2
[]
[]
[Controls]
[inertia_switch]
type = TimePeriod
start_time = 0.0
end_time = 0.03
disable_objects = '*/inertia_x */inertia_y */inertia_z
*/vel_x */vel_y */vel_z
*/accel_x */accel_y */accel_z
*/rot_vel_x */rot_vel_y */rot_vel_z
*/rot_accel_x */rot_accel_y */rot_accel_z'
set_sync_times = true
execute_on = 'timestep_begin timestep_end'
[]
[]
[Postprocessors]
[inp_accel_x]
type = PointValue
point = '5.0 0.0 -1.3'
variable = accel_x
[]
[inp_accel_y]
type = PointValue
point = '5.0 0.0 -1.3'
variable = accel_y
[]
[inp_accel_z]
type = PointValue
point = '5.0 0.0 -1.3'
variable = accel_z
[]
[basemat_accel_x]
type = PointValue
point = '0.0 0.0 0.0'
variable = accel_x
[]
[basemat_accel_y]
type = PointValue
point = '0.0 0.0 0.0'
variable = accel_y
[]
[basemat_accel_z]
type = PointValue
point = '0.0 0.0 0.0'
variable = accel_z
[]
[iso1_fb_axial]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Fb_x
[]
[iso1_defb_axial]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Defb_x
[]
[iso1_fb_shear1]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Fb_y
[]
[iso1_defb_shear1]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Defb_y
[]
[iso1_fb_shear2]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Fb_z
[]
[iso1_defb_shear2]
type = PointValue
point = '5.0 0.0 -1.3'
variable = Defb_z
[]
[]
[VectorPostprocessors]
[accel_hist_x]
type = ResponseHistoryBuilder
variables = 'accel_x'
nodes = '7943 4568 8640 564 8588'
# locations:
# 7943-basemat_center-(0.35,-0.75,-1)(approx)
# 4568-center_isolator_top-(5,0,-1)
# 8640-center_isolator_bottom-(5,0,-1.3)
# 564-edge_isolator_top-(-45,30,-1)
# 8588-edge_isolator_bottom(-45,30,-1.3)
outputs = out1
[]
[accel_spec_x]
type = ResponseSpectraCalculator
vectorpostprocessor = accel_hist_x
regularize_dt = 0.01
damping_ratio = 0.05
start_frequency = 0.1
end_frequency = 50
outputs = out1
[]
[accel_hist_y]
type = ResponseHistoryBuilder
variables = 'accel_y'
nodes = '7943 4568 8640 564 8588'
# locations:
# 7943-basemat_center-(0.35,-0.75,-1)(approx)
# 4568-center_isolator_top-(5,0,-1)
# 8640-center_isolator_bottom-(5,0,-1.3)
# 564-edge_isolator_top-(-45,30,-1)
# 8588-edge_isolator_bottom(-45,30,-1.3)
outputs = out1
[]
[accel_spec_y]
type = ResponseSpectraCalculator
vectorpostprocessor = accel_hist_y
regularize_dt = 0.01
damping_ratio = 0.05
start_frequency = 0.1
end_frequency = 50
outputs = out1
[]
[accel_hist_z]
type = ResponseHistoryBuilder
variables = 'accel_z'
nodes = '7943 4568 8640 564 8588'
# locations:
# 7943-basemat_center-(0.35,-0.75,-1)(approx)
# 4568-center_isolator_top-(5,0,-1)
# 8640-center_isolator_bottom-(5,0,-1.3)
# 564-edge_isolator_top-(-45,30,-1)
# 8588-edge_isolator_bottom(-45,30,-1.3)
outputs = out1
[]
[accel_spec_z]
type = ResponseSpectraCalculator
vectorpostprocessor = accel_hist_z
regularize_dt = 0.01
damping_ratio = 0.05
start_frequency = 0.1
end_frequency = 50
outputs = out1
[]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[out1]
type = CSV
execute_on = 'final'
[]
[]