- componentAn 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).
C++ Type:unsigned int
Controllable:No
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).
- displacementsThe displacement variables for isolator.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The displacement variables for isolator.
- rotationsThe rotation variables for the isolator.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The rotation variables for the isolator.
- variableThe name of the variable that this residual object operates on
C++ Type:NonlinearVariableName
Unit:(no unit assumed)
Controllable:No
Description:The name of the variable that this residual object operates on
StressDivergenceIsolator
Kernel for isolator element
Description
This kernel assembles the Jacobian (stiffness matrix) and the residual for a two-noded isolator element (such as lead-rubber and friction-pendulum isolator elements) and should be defined for simulating an isolator element. This kernel also allows for stiffness damping and HHT integration when numerical damping is desired. It can also perform static initialization (by setting static_initialization = true
) to ignore stiffness damping for the first time step. This is useful when a gravity analysis is performed. Further information on HHT damping and static initialization is provided here. The syntax and input parameters for this object are described below.
Input Parameters
- alpha0alpha parameter for HHT time integration
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:alpha parameter for HHT time integration
- 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
- matrix_onlyFalseWhether this object is only doing assembly to matrices (no vectors)
Default:False
C++ Type:bool
Controllable:No
Description:Whether this object is only doing assembly to matrices (no vectors)
- static_initializationFalseSet to true to get the system to equilibrium under gravity by running a quasi-static analysis (by solving Ku = F) in the first time step
Default:False
C++ Type:bool
Controllable:No
Description:Set to true to get the system to equilibrium under gravity by running a quasi-static analysis (by solving Ku = F) in the first time step
- zeta0Name of material property or a constant real number defining the zeta parameter for the Rayleigh damping.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Name of material property or a constant real number defining the zeta parameter for the Rayleigh damping.
Optional Parameters
- absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution
C++ Type:std::vector<TagName>
Controllable:No
Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector<TagName>
Controllable:No
Description:The extra tags for the matrices this Kernel should fill
- extra_vector_tagsThe extra tags for the vectors this Kernel should fill
C++ Type:std::vector<TagName>
Controllable:No
Description:The extra tags for the vectors this Kernel should fill
- matrix_tagssystemThe tag for the matrices this Kernel should fill
Default:system
C++ Type:MultiMooseEnum
Options:nontime, system
Controllable:No
Description:The tag for the matrices this Kernel should fill
- vector_tagsnontimeThe tag for the vectors this Kernel should fill
Default:nontime
C++ Type:MultiMooseEnum
Options:nontime, time
Controllable:No
Description:The tag for the vectors this Kernel should fill
Contribution To Tagged Field Data Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- diag_save_inThe name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector<AuxVariableName>
Unit:(no unit assumed)
Controllable:No
Description:The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- save_inThe name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector<AuxVariableName>
Unit:(no unit assumed)
Controllable:No
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.)
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshTrueWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:True
C++ Type:bool
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
- (examples/ex14/building_basemat_with_isolators_new.i)
- (test/tests/materials/lr_isolator/lr_isolator_axial_ct.i)
- (test/tests/materials/lr_isolator/lr_isolator_tension.i)
- (examples/ex14/basemat_with_isolators_new.i)
- (test/tests/materials/lr_isolator/lr_isolator_seismic.i)
- (test/tests/materials/fp_isolator/fp_isolator_shear_PTV.i)
- (test/tests/materials/lr_isolator/lr_isolator_shear.i)
- (test/tests/materials/fp_isolator/fp_isolator_seismic_PTV.i)
- (examples/ex14/basemat_with_isolators_new_3D.i)
- (test/tests/materials/lr_isolator/lr_isolator_PDelta.i)
(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'
[]
[]
(test/tests/materials/lr_isolator/lr_isolator_axial_ct.i)
# 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]
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]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./reaction_x]
[../]
[./reaction_y]
[../]
[./reaction_z]
[../]
[./reaction_xx]
[../]
[./reaction_yy]
[../]
[./reaction_zz]
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixx0]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy0]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz0]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixrx0]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixry0]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixrz0]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[./fixrx1]
type = DirichletBC
variable = rot_x
boundary = right
value = 0.0
[../]
[./fixry1]
type = DirichletBC
variable = rot_y
boundary = right
value = 0.0
[../]
[./fixrz1]
type = DirichletBC
variable = rot_z
boundary = right
value = 0.0
[../]
[./disp_x_1]
type = PresetDisplacement
boundary = right
function = history_disp_axial
variable = disp_x
beta = 0.25
acceleration = accel_x
velocity = vel_x
[../]
[./disp_y_1]
type = PresetDisplacement
boundary = right
function = history_disp_shear
variable = disp_y
beta = 0.25
acceleration = accel_y
velocity = vel_y
[../]
[]
[Functions]
[./history_disp_axial]
type = PiecewiseLinear
data_file = disp_axial_ct.csv
format = columns
[../]
[./history_disp_shear]
type = PiecewiseLinear
x = '0.0 10.0'
y = '0.0 0.3048'
[../]
[]
[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.02
end_time = 2.5
dt = 0.005
dtmin = 0.001
timestep_tolerance = 1e-6
[]
[Kernels]
[./lr_disp_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
save_in = reaction_x
[../]
[./lr_disp_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
save_in = reaction_y
[../]
[./lr_disp_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
save_in = reaction_z
[../]
[./lr_rot_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
save_in = reaction_xx
[../]
[./lr_rot_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
save_in = reaction_yy
[../]
[./lr_rot_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
save_in = reaction_zz
[../]
[]
[Materials]
[./deformation]
type = ComputeIsolatorDeformation
block = 0
sd_ratio = 0.5
y_orientation = '0.0 1.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
[../]
[./elasticity]
type = ComputeLRIsolatorElasticity
block = 0
fy = 207160
alpha = 0.03812
G_rubber = 0.87e6
K_rubber = 2e9
D1 = 0.1397
D2 = 0.508
ts = 0.00476
tr = 0.009525
n = 16
tc = 0.0127
kc = 20
phi_m = 0.75
ac = 1
cd = 0
gamma = 0.5
beta = 0.25
k_steel = 50
a_steel = 1.41e-5
rho_lead = 11200
c_lead = 130
cavitation = true
horizontal_stiffness_variation = true
vertical_stiffness_variation = true
strength_degradation = true
buckling_load_variation = true
[../]
[]
[Postprocessors]
[./disp_x]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./vel_x]
type = NodalVariableValue
nodeid = 1
variable = vel_x
[../]
[./accel_x]
type = NodalVariableValue
nodeid = 1
variable = accel_x
[../]
[./reaction_x]
type = NodalSum
variable = reaction_x
boundary = left
[../]
[./disp_y]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./vel_y]
type = NodalVariableValue
nodeid = 1
variable = vel_y
[../]
[./accel_y]
type = NodalVariableValue
nodeid = 1
variable = accel_y
[../]
[./reaction_y]
type = NodalSum
variable = reaction_y
boundary = left
[../]
[./disp_z]
type = NodalVariableValue
nodeid = 1
variable = disp_z
[../]
[./vel_z]
type = NodalVariableValue
nodeid = 1
variable = vel_z
[../]
[./accel_z]
type = NodalVariableValue
nodeid = 1
variable = accel_z
[../]
[./reaction_z]
type = NodalSum
variable = reaction_z
boundary = left
[../]
[./reaction_xx]
type = NodalSum
variable = reaction_xx
boundary = left
[../]
[./reaction_yy]
type = NodalSum
variable = reaction_yy
boundary = left
[../]
[./reaction_zz]
type = NodalSum
variable = reaction_zz
boundary = left
[../]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(test/tests/materials/lr_isolator/lr_isolator_tension.i)
# Test for lead rubber isolator in Axial (only tension)
#Loading conditions
# i) A cyclic displacement loading in axial tension (x_direction)
[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]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./reaction_x]
[../]
[./reaction_y]
[../]
[./reaction_z]
[../]
[./reaction_xx]
[../]
[./reaction_yy]
[../]
[./reaction_zz]
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixx0]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy0]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz0]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixrx0]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixry0]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixrz0]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[./fixrx1]
type = DirichletBC
variable = rot_x
boundary = right
value = 0.0
[../]
[./fixry1]
type = DirichletBC
variable = rot_y
boundary = right
value = 0.0
[../]
[./fixrz1]
type = DirichletBC
variable = rot_z
boundary = right
value = 0.0
[../]
[./disp_x_1]
type = PresetDisplacement
boundary = right
function = history_disp_tension
variable = disp_x
beta = 0.25
acceleration = accel_x
velocity = vel_x
[../]
[]
[Functions]
[./history_disp_tension]
type = PiecewiseLinear
data_file = disp_tension.csv
format = columns
[../]
[]
[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.02
end_time = 2.5
dt = 0.01
dtmin = 0.001
timestep_tolerance = 1e-6
[]
[Kernels]
[./lr_disp_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
save_in = reaction_x
[../]
[./lr_disp_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
save_in = reaction_y
[../]
[./lr_disp_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
save_in = reaction_z
[../]
[./lr_rot_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
save_in = reaction_xx
[../]
[./lr_rot_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
save_in = reaction_yy
[../]
[./lr_rot_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
save_in = reaction_zz
[../]
[]
[Materials]
[./deformation]
type = ComputeIsolatorDeformation
block = 0
sd_ratio = 0.5
y_orientation = '0.0 1.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
[../]
[./elasticity]
type = ComputeLRIsolatorElasticity
block = 0
fy = 207155
alpha = 0.03812
G_rubber = 0.87e6
K_rubber = 2e9
D1 = 0.1397
D2 = 0.508
ts = 0.00476
tr = 0.009525
n = 16
tc = 0.0127
kc = 20
phi_m = 0.75
ac = 1
cd = 0
gamma = 0.5
beta = 0.25
k_steel = 50
a_steel = 1.41e-5
rho_lead = 11200
c_lead = 130
cavitation = true
horizontal_stiffness_variation = true
vertical_stiffness_variation = true
strength_degradation = true
buckling_load_variation = true
[../]
[]
[Postprocessors]
[./disp_x]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./vel_x]
type = NodalVariableValue
nodeid = 1
variable = vel_x
[../]
[./accel_x]
type = NodalVariableValue
nodeid = 1
variable = accel_x
[../]
[./reaction_x]
type = NodalSum
variable = reaction_x
boundary = left
[../]
[./disp_y]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./vel_y]
type = NodalVariableValue
nodeid = 1
variable = vel_y
[../]
[./accel_y]
type = NodalVariableValue
nodeid = 1
variable = accel_y
[../]
[./reaction_y]
type = NodalSum
variable = reaction_y
boundary = left
[../]
[./disp_z]
type = NodalVariableValue
nodeid = 1
variable = disp_z
[../]
[./vel_z]
type = NodalVariableValue
nodeid = 1
variable = vel_z
[../]
[./accel_z]
type = NodalVariableValue
nodeid = 1
variable = accel_z
[../]
[./reaction_z]
type = NodalSum
variable = reaction_z
boundary = left
[../]
[./reaction_xx]
type = NodalSum
variable = reaction_xx
boundary = left
[../]
[./reaction_yy]
type = NodalSum
variable = reaction_yy
boundary = left
[../]
[./reaction_zz]
type = NodalSum
variable = reaction_zz
boundary = left
[../]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(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/materials/lr_isolator/lr_isolator_seismic.i)
# Test for lead rubber isolator under seismic loading
#Loading conditions
# i) Seismic loading(ground motion) as acceleration profile at bottom node in 3 directions
[Mesh]
type = GeneratedMesh
xmin = 0
xmax = 0.224
nx = 1
dim = 1
displacements = 'disp_x disp_y disp_z'
[]
[Controls]
[./C1]
type = TimePeriod
disable_objects = '*::x_inertial1 *::y_inertial1 *::z_inertial1 *::vel_x *::vel_y *::vel_z *::accel_x *::accel_y *::accel_z'
start_time = '0'
end_time = '0.10'
[../]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./reaction_x]
[../]
[./reaction_y]
[../]
[./reaction_z]
[../]
[./reaction_xx]
[../]
[./reaction_yy]
[../]
[./reaction_zz]
[../]
[]
[Kernels]
[./lr_disp_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
save_in = reaction_x
[../]
[./lr_disp_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
save_in = reaction_y
[../]
[./lr_disp_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
save_in = reaction_z
[../]
[./lr_rot_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
save_in = reaction_xx
[../]
[./lr_rot_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
save_in = reaction_yy
[../]
[./lr_rot_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
save_in = reaction_zz
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixx0]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy0]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz0]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixrx0]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixry0]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixrz0]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[./fixrx1]
type = DirichletBC
variable = rot_x
boundary = right
value = 0.0
[../]
[./fixry1]
type = DirichletBC
variable = rot_y
boundary = right
value = 0.0
[../]
[./fixrz1]
type = DirichletBC
variable = rot_z
boundary = right
value = 0.0
[../]
[./accel_x0]
type = PresetAcceleration
boundary = 'left'
function = acceleration_x
variable = disp_x
beta = 0.25
acceleration = 'accel_x'
velocity = 'vel_x'
[../]
[./accel_y0]
type = PresetAcceleration
boundary = 'left'
function = acceleration_y
variable = disp_y
beta = 0.25
acceleration = 'accel_y'
velocity = 'vel_y'
[../]
[./accel_z0]
type = PresetAcceleration
boundary = 'left'
function = acceleration_z
variable = disp_z
beta = 0.25
acceleration = 'accel_z'
velocity = 'vel_z'
[../]
[]
[NodalKernels]
[./x_inertial1]
type = NodalTranslationalInertia
variable = disp_x
velocity = vel_x
acceleration = accel_x
boundary = right
beta = 0.25
gamma = 0.5
mass = 146890
alpha =0
eta =0
[../]
[./y_inertial1]
type = NodalTranslationalInertia
variable = disp_y
velocity = vel_y
acceleration = accel_y
boundary = right
beta = 0.25
gamma = 0.5
mass = 146890
alpha =0
eta =0
[../]
[./z_inertial1]
type = NodalTranslationalInertia
variable = disp_z
velocity = vel_z
acceleration = accel_z
boundary = right
beta = 0.25
gamma = 0.5
mass = 146890
alpha =0
eta =0
[../]
[./force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = 'right'
function = force_x
[../]
[]
[Functions]
[./acceleration_x]
type = PiecewiseLinear
data_file = accel_x.csv
format=columns
[../]
[./acceleration_y]
type = PiecewiseLinear
data_file = accel_y.csv
format=columns
[../]
[./acceleration_z]
type = PiecewiseLinear
data_file = accel_z.csv
format=columns
[../]
[./force_x]
type = PiecewiseLinear
x='0.0 0.05 50'
y='0.0 -1468900 -1468900'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
line_search = none
nl_rel_tol = 1e-4
nl_abs_tol = 1e-4
start_time = 0
end_time = 0.125
dt = 1e-4
dtmin = 1e-7
timestep_tolerance = 1e-8
[]
[Materials]
[./deformation]
type = ComputeIsolatorDeformation
block = '0'
sd_ratio = 0.5
y_orientation = '0.0 1.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
[../]
[./elasticity]
type = ComputeLRIsolatorElasticity
block = '0'
fy = 207155
alpha = 0.0381
G_rubber = 0.87e6
K_rubber = 2e9
D1 = 0.1397
D2 = 0.508
ts = 0.00476
tr = 0.009525
n = 16
tc = 0.0127
kc = 20
phi_m = 0.75
ac = 1
cd = 128000
gamma = 0.5
beta = 0.25
k_steel = 50
a_steel = 1.41e-5
rho_lead = 11200
c_lead = 130
cavitation = true
horizontal_stiffness_variation = true
vertical_stiffness_variation = true
strength_degradation = true
buckling_load_variation = true
[../]
[]
[Postprocessors]
[./disp_x0]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./vel_x0]
type = NodalVariableValue
nodeid = 0
variable = vel_x
[../]
[./accel_x0]
type = NodalVariableValue
nodeid = 0
variable = accel_x
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./vel_x1]
type = NodalVariableValue
nodeid = 1
variable = vel_x
[../]
[./accel_x1]
type = NodalVariableValue
nodeid = 1
variable = accel_x
[../]
[./reaction_x]
type = NodalSum
variable = reaction_x
boundary = left
[../]
[./disp_y0]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./vel_y0]
type = NodalVariableValue
nodeid = 0
variable = vel_y
[../]
[./accel_y0]
type = NodalVariableValue
nodeid = 0
variable = accel_y
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./vel_y1]
type = NodalVariableValue
nodeid = 1
variable = vel_y
[../]
[./accel_y1]
type = NodalVariableValue
nodeid = 1
variable = accel_y
[../]
[./reaction_y]
type = NodalSum
variable = reaction_y
boundary = left
[../]
[./disp_z0]
type = NodalVariableValue
nodeid = 0
variable = disp_z
[../]
[./vel_z0]
type = NodalVariableValue
nodeid = 0
variable = vel_z
[../]
[./accel_z0]
type = NodalVariableValue
nodeid = 0
variable = accel_z
[../]
[./disp_z1]
type = NodalVariableValue
nodeid = 1
variable = disp_z
[../]
[./vel_z1]
type = NodalVariableValue
nodeid = 1
variable = vel_z
[../]
[./accel_z1]
type = NodalVariableValue
nodeid = 1
variable = accel_z
[../]
[./reaction_z]
type = NodalSum
variable = reaction_z
boundary = left
[../]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
# interval = 10
[]
(test/tests/materials/fp_isolator/fp_isolator_shear_PTV.i)
# 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]
type = GeneratedMesh
displacements = 'disp_x disp_y disp_z'
xmin = 0
xmax = 1
nx = 1
dim = 1
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_z]
order = FIRST
family = LAGRANGE
[../]
[./reaction_x]
[../]
[./reaction_y]
[../]
[./reaction_z]
[../]
[./reaction_xx]
[../]
[./reaction_yy]
[../]
[./reaction_zz]
[../]
[]
[Kernels]
[./lr_disp_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
save_in = reaction_x
[../]
[./lr_disp_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
save_in = reaction_y
[../]
[./lr_disp_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
save_in = reaction_z
[../]
[./lr_rot_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
save_in = reaction_xx
[../]
[./lr_rot_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
save_in = reaction_yy
[../]
[./lr_rot_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
save_in = reaction_zz
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_z]
type = NewmarkAccelAux
variable = rot_accel_z
displacement = rot_z
velocity = rot_vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_z]
type = NewmarkVelAux
variable = rot_vel_z
acceleration = rot_accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixx0]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[../]
[./fixy0]
type = DirichletBC
variable = disp_y
boundary = 'left'
value = 0.0
[../]
[./fixz0]
type = DirichletBC
variable = disp_z
boundary = 'left'
value = 0.0
[../]
[./fixrx0]
type = DirichletBC
variable = rot_x
boundary = 'left'
value = 0.0
[../]
[./fixry0]
type = DirichletBC
variable = rot_y
boundary = 'left'
value = 0.0
[../]
[./fixrz0]
type = DirichletBC
variable = rot_z
boundary = 'left'
value = 0.0
[../]
[./fixrx1]
type = DirichletBC
variable = rot_x
boundary = 'right'
value = 0.0
[../]
[./fixry1]
type = DirichletBC
variable = rot_y
boundary = 'right'
value = 0.0
[../]
[./fixrz1]
type = DirichletBC
variable = rot_z
boundary = 'right'
value = 0.0
[../]
[./disp_y_1]
type = PresetDisplacement
boundary = 'right'
variable = disp_y
function = history_shear_dispy
beta = 0.25
acceleration = 'accel_y'
velocity = 'vel_y'
[../]
[]
[NodalKernels]
[./force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = 'right'
function = force_x
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 11.0'
y = '0.0 -6285710 -6285710'
[../]
[./history_shear_dispy]
type = PiecewiseLinear
data_file = disp_shear.csv
format = columns
[../]
[]
[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
end_time = 2.5
dt = 0.005
dtmin = 0.0001
timestep_tolerance = 1e-6
[]
[Materials]
[./deformation]
type = ComputeIsolatorDeformation
block = '0'
sd_ratio = 0.5
y_orientation = '0.0 1.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
[../]
[./elasticity]
type = ComputeFPIsolatorElasticity
block = '0'
mu_ref = 0.06
p_ref = 50e6
diffusivity = 4.4e-6
conductivity = 18
a = 100
r_eff = 2.2352
r_contact = 0.2
uy = 0.001
unit = 1
gamma = 0.5
beta = 0.25
pressure_dependent = true
temperature_dependent = true
velocity_dependent = true
[../]
[]
[Postprocessors]
[./disp_y]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./reaction_y]
type = NodalSum
variable = 'reaction_y'
boundary = 'left'
[../]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(test/tests/materials/lr_isolator/lr_isolator_shear.i)
# Test for lead rubber isolator in shear
#Loading conditions
# i) A constant axial load acting on isolator
# ii) A sinusoidal displacement in shear (y_direction)
[Mesh]
type = GeneratedMesh
displacements = 'disp_x disp_y disp_z'
xmin = 0
xmax = 1
nx = 1
dim = 1
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./reaction_x]
[../]
[./reaction_y]
[../]
[./reaction_z]
[../]
[./reaction_xx]
[../]
[./reaction_yy]
[../]
[./reaction_zz]
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = 'disp_x'
velocity = 'vel_x'
beta = 0.25
execute_on = 'timestep_end'
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = 'accel_x'
gamma = 0.5
execute_on = 'timestep_end'
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = 'disp_y'
velocity = 'vel_y'
beta = 0.25
execute_on = 'timestep_end'
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = 'accel_y'
gamma = 0.5
execute_on = 'timestep_end'
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = 'disp_z'
velocity = 'vel_z'
beta = 0.25
execute_on = 'timestep_end'
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = 'accel_z'
gamma = 0.5
execute_on = 'timestep_end'
[../]
[]
[BCs]
[./fixx0]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[../]
[./fixy0]
type = DirichletBC
variable = disp_y
boundary = 'left'
value = 0.0
[../]
[fixz0]
type = DirichletBC
variable = disp_z
boundary = 'left'
value = 0.0
[../]
[./fixrx0]
type = DirichletBC
variable = rot_x
boundary = 'left'
value = 0.0
[../]
[./fixry0]
type = DirichletBC
variable = rot_y
boundary = 'left'
value = 0.0
[../]
[./fixrz0]
type = DirichletBC
variable = rot_z
boundary = 'left'
value = 0.0
[../]
[fixrx1]
type = DirichletBC
variable = rot_x
boundary = 'right'
value = 0.0
[../]
[./fixry1]
type = DirichletBC
variable = rot_y
boundary = 'right'
value = 0.0
[../]
[./fixrz1]
type = DirichletBC
variable = rot_z
boundary = 'right'
value = 0.0
[../]
[./disp_y_1]
type = PresetDisplacement
boundary = 'right'
variable = disp_y
function = history_shear_dispy
beta = 0.25
acceleration = 'accel_y'
velocity = 'vel_y'
[../]
[]
[NodalKernels]
[./force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = 'right'
function = force_x
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 11.0'
y = '0.0 -1439520 -1439520'
[../]
[./history_shear_dispy]
type = PiecewiseLinear
data_file = disp_shear.csv
format = columns
[../]
[]
[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.02
end_time = 2.5
dt = 0.005
dtmin = 0.0001
timestep_tolerance = 1e-6
[]
[Kernels]
[./lr_disp_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
save_in = 'reaction_x'
[../]
[./lr_disp_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
save_in = 'reaction_y'
[../]
[./lr_disp_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
save_in = 'reaction_z'
[../]
[./lr_rot_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
save_in = 'reaction_xx'
[../]
[lr_rot_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
save_in = 'reaction_yy'
[../]
[./lr_rot_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
save_in = 'reaction_zz'
[../]
[]
[Materials]
[./deformation]
type = ComputeIsolatorDeformation
block = '0'
sd_ratio = 0.5
y_orientation = '0.0 1.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
[../]
[./elasticity]
type = ComputeLRIsolatorElasticity
block = '0'
fy = 207155
alpha = 0.0381
G_rubber = 0.87e6
K_rubber = 2e9
D1 = 0.1397
D2 = 0.508
ts = 0.00476
tr = 0.009525
n = 16
tc = 0.0127
kc = 15
phi_m = 0.75
ac = 1
cd = 128000
gamma = 0.5
beta = 0.25
k_steel = 50
a_steel = 1.41e-5
rho_lead = 11200
c_lead = 130
cavitation = true
horizontal_stiffness_variation = true
vertical_stiffness_variation = true
strength_degradation = true
buckling_load_variation = true
[../]
[]
[Postprocessors]
[./disp_x]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./vel_x]
type = NodalVariableValue
nodeid = 1
variable = vel_x
[../]
[./accel_x]
type = NodalVariableValue
nodeid = 1
variable = accel_x
[../]
[./reaction_x]
type = NodalSum
variable = 'reaction_x'
boundary = 'left'
[../]
[./disp_y]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./vel_y]
type = NodalVariableValue
nodeid = 1
variable = vel_y
[../]
[accel_y]
type = NodalVariableValue
nodeid = 1
variable = accel_y
[../]
[./reaction_y]
type = NodalSum
variable = 'reaction_y'
boundary = 'left'
[../]
[./disp_z]
type = NodalVariableValue
nodeid = 1
variable = disp_z
[../]
[./accel_z]
type = NodalVariableValue
nodeid = 1
variable = accel_z
[../]
[./reaction_z]
type = NodalSum
variable = 'reaction_z'
boundary = 'left'
[../]
[./reaction_xx]
type = NodalSum
variable = 'reaction_xx'
boundary = 'left'
[../]
[./reaction_yy]
type = NodalSum
variable = 'reaction_yy'
boundary = 'left'
[../]
[./reaction_zz]
type = NodalSum
variable = 'reaction_zz'
boundary = 'left'
[../]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]
(test/tests/materials/fp_isolator/fp_isolator_seismic_PTV.i)
# 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]
type = GeneratedMesh
xmin = 0
xmax = 0.224
nx = 1
dim = 1
displacements = 'disp_x disp_y disp_z'
[]
[Controls]
[./C1]
type = TimePeriod
disable_objects = '*::x_inertial1 *::y_inertial1 *::z_inertial1 *::vel_x *::vel_y *::vel_z *::accel_x *::accel_y *::accel_z'
start_time = '0'
end_time = '0.10'
[../]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_vel_z]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_x]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_y]
order = FIRST
family = LAGRANGE
[../]
[./rot_accel_z]
order = FIRST
family = LAGRANGE
[../]
[./reaction_x]
[../]
[./reaction_y]
[../]
[./reaction_z]
[../]
[./reaction_xx]
[../]
[./reaction_yy]
[../]
[./reaction_zz]
[../]
[]
[Kernels]
[./lr_disp_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
save_in = reaction_x
[../]
[./lr_disp_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
save_in = reaction_y
[../]
[./lr_disp_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
save_in = reaction_z
[../]
[./lr_rot_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
save_in = reaction_xx
[../]
[./lr_rot_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
save_in = reaction_yy
[../]
[./lr_rot_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
save_in = reaction_zz
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_x]
type = NewmarkAccelAux
variable = rot_accel_x
displacement = rot_x
velocity = rot_vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_x]
type = NewmarkVelAux
variable = rot_vel_x
acceleration = rot_accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_y]
type = NewmarkAccelAux
variable = rot_accel_y
displacement = rot_y
velocity = rot_vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_y]
type = NewmarkVelAux
variable = rot_vel_y
acceleration = rot_accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./rot_accel_z]
type = NewmarkAccelAux
variable = rot_accel_z
displacement = rot_z
velocity = rot_vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./rot_vel_z]
type = NewmarkVelAux
variable = rot_vel_z
acceleration = rot_accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixrx0]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixry0]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixrz0]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[./fixrx1]
type = DirichletBC
variable = rot_x
boundary = right
value = 0.0
[../]
[./fixry1]
type = DirichletBC
variable = rot_y
boundary = right
value = 0.0
[../]
[./fixrz1]
type = DirichletBC
variable = rot_z
boundary = right
value = 0.0
[../]
[./accel_x0]
type = PresetAcceleration
boundary = 'left'
function = acceleration_x
variable = disp_x
beta = 0.25
acceleration = 'accel_x'
velocity = 'vel_x'
[../]
[./accel_y0]
type = PresetAcceleration
boundary = 'left'
function = acceleration_y
variable = disp_y
beta = 0.25
acceleration = 'accel_y'
velocity = 'vel_y'
[../]
[./accel_z0]
type = PresetAcceleration
boundary = 'left'
function = acceleration_z
variable = disp_z
beta = 0.25
acceleration = 'accel_z'
velocity = 'vel_z'
[../]
[]
[NodalKernels]
[./x_inertial1]
type = NodalTranslationalInertia
variable = disp_x
velocity = vel_x
acceleration = accel_x
boundary = right
beta = 0.25
gamma = 0.5
mass = 640745
alpha =0
eta =0
[../]
[./y_inertial1]
type = NodalTranslationalInertia
variable = disp_y
velocity = vel_y
acceleration = accel_y
boundary = right
beta = 0.25
gamma = 0.5
mass = 640745
alpha =0
eta =0
[../]
[./z_inertial1]
type = NodalTranslationalInertia
variable = disp_z
velocity = vel_z
acceleration = accel_z
boundary = right
beta = 0.25
gamma = 0.5
mass = 640745
alpha =0
eta =0
[../]
[./force_x]
type = UserForcingFunctionNodalKernel
variable = disp_x
boundary = 'right'
function = force_x
[../]
[]
[Functions]
[./acceleration_x]
type = PiecewiseLinear
data_file = accel_x.csv
format=columns
[../]
[./acceleration_y]
type = PiecewiseLinear
data_file = accel_y.csv
format=columns
[../]
[./acceleration_z]
type = PiecewiseLinear
data_file = accel_z.csv
format=columns
[../]
[./force_x]
type = PiecewiseLinear
x='0.0 0.05 50.11'
y='0.0 -6285710 -6285710'
[../]
[]
[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
end_time =0.15
dt = 0.001
dtmin = 0.0000001
timestep_tolerance = 1e-8
[]
[Materials]
[./deformation]
type = ComputeIsolatorDeformation
block = '0'
sd_ratio = 0.5
y_orientation = '0.0 1.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
[../]
[./elasticity]
type = ComputeFPIsolatorElasticity
block = '0'
mu_ref = 0.06
p_ref = 50e6
diffusivity = 4.4e-6
conductivity = 18
a = 100
r_eff = 2.2352
r_contact = 0.2
uy = 0.001
unit = 1
gamma = 0.5
beta = 0.25
pressure_dependent = true
temperature_dependent = true
velocity_dependent = true
[../]
[]
[Postprocessors]
[./disp_x0]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./vel_x0]
type = NodalVariableValue
nodeid = 0
variable = vel_x
[../]
[./accel_x0]
type = NodalVariableValue
nodeid = 0
variable = accel_x
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./vel_x1]
type = NodalVariableValue
nodeid = 1
variable = vel_x
[../]
[./accel_x1]
type = NodalVariableValue
nodeid = 1
variable = accel_x
[../]
[./reaction_x]
type = NodalSum
variable = reaction_x
boundary = left
[../]
[./disp_y0]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./vel_y0]
type = NodalVariableValue
nodeid = 0
variable = vel_y
[../]
[./accel_y0]
type = NodalVariableValue
nodeid = 0
variable = accel_y
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./vel_y1]
type = NodalVariableValue
nodeid = 1
variable = vel_y
[../]
[./accel_y1]
type = NodalVariableValue
nodeid = 1
variable = accel_y
[../]
[./reaction_y]
type = NodalSum
variable = reaction_y
boundary = left
[../]
[./disp_z0]
type = NodalVariableValue
nodeid = 0
variable = disp_z
[../]
[./vel_z0]
type = NodalVariableValue
nodeid = 0
variable = vel_z
[../]
[./accel_z0]
type = NodalVariableValue
nodeid = 0
variable = accel_z
[../]
[./disp_z1]
type = NodalVariableValue
nodeid = 1
variable = disp_z
[../]
[./vel_z1]
type = NodalVariableValue
nodeid = 1
variable = vel_z
[../]
[./accel_z1]
type = NodalVariableValue
nodeid = 1
variable = accel_z
[../]
[./reaction_z]
type = NodalSum
variable = reaction_z
boundary = left
[../]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
interval=1
[]
(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'
[]
[]
(test/tests/materials/lr_isolator/lr_isolator_PDelta.i)
# Test for lead rubber isolator
# Axial direction
[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]
[./vel_x]
order = FIRST
family = LAGRANGE
[../]
[./vel_y]
order = FIRST
family = LAGRANGE
[../]
[./vel_z]
order = FIRST
family = LAGRANGE
[../]
[./accel_x]
order = FIRST
family = LAGRANGE
[../]
[./accel_y]
order = FIRST
family = LAGRANGE
[../]
[./accel_z]
order = FIRST
family = LAGRANGE
[../]
[./reaction_x]
[../]
[./reaction_y]
[../]
[./reaction_z]
[../]
[./reaction_xx]
[../]
[./reaction_yy]
[../]
[./reaction_zz]
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.25
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.25
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.5
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.25
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.5
execute_on = timestep_end
[../]
[]
[BCs]
[./fixx0]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./fixy0]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[../]
[./fixz0]
type = DirichletBC
variable = disp_z
boundary = left
value = 0.0
[../]
[./fixrx0]
type = DirichletBC
variable = rot_x
boundary = left
value = 0.0
[../]
[./fixry0]
type = DirichletBC
variable = rot_y
boundary = left
value = 0.0
[../]
[./fixrz0]
type = DirichletBC
variable = rot_z
boundary = left
value = 0.0
[../]
[./fixrx1]
type = DirichletBC
variable = rot_x
boundary = right
value = 0.0
[../]
[./fixry1]
type = DirichletBC
variable = rot_y
boundary = right
value = 0.0
[../]
[./fixrz1]
type = DirichletBC
variable = rot_z
boundary = right
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
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 5.0' # time
y = '0.0 -590156.0 -590156.0' # force
[../]
[./force_y]
type = PiecewiseLinear
x = '0.0 1.0 5.0' # time
y = '0.0 371188.0 371188.0' # force
[../]
[]
[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.02
end_time = 1.5
dt = 0.001
dtmin = 0.0001
timestep_tolerance = 1e-6
[]
[Kernels]
[./lr_disp_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 0
variable = disp_x
save_in = reaction_x
[../]
[./lr_disp_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 1
variable = disp_y
save_in = reaction_y
[../]
[./lr_disp_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 2
variable = disp_z
save_in = reaction_z
[../]
[./lr_rot_x]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 3
variable = rot_x
save_in = reaction_xx
[../]
[./lr_rot_y]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 4
variable = rot_y
save_in = reaction_yy
[../]
[./lr_rot_z]
type = StressDivergenceIsolator
block = '0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
component = 5
variable = rot_z
save_in = reaction_zz
[../]
[]
[Materials]
[./deformation]
type = ComputeIsolatorDeformation
block = 0
sd_ratio = 0.5
y_orientation = '0.0 1.0 0.0'
displacements = 'disp_x disp_y disp_z'
rotations = 'rot_x rot_y rot_z'
velocities = 'vel_x vel_y vel_z'
[../]
[./elasticity]
type = ComputeLRIsolatorElasticity
block = 0
fy = 207160
alpha = 0.03812
G_rubber = 0.87e6
K_rubber = 2e9
D1 = 0.1397
D2 = 0.508
ts = 0.00476
tr = 0.009525
n = 16
tc = 0.0127
kc = 20
phi_m = 0.75
ac = 1
cd = 128000
gamma = 0.5
beta = 0.25
k_steel = 50
a_steel = 1.41e-5
rho_lead = 11200
c_lead = 130
cavitation = true
horizontal_stiffness_variation = true
vertical_stiffness_variation = true
strength_degradation = true
buckling_load_variation = true
[../]
[]
[Postprocessors]
[./disp_x]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./vel_x]
type = NodalVariableValue
nodeid = 1
variable = vel_x
[../]
[./reaction_x]
type = NodalSum
variable = reaction_x
boundary = left
[../]
[./disp_y]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./vel_y]
type = NodalVariableValue
nodeid = 1
variable = vel_y
[../]
[./reaction_y]
type = NodalSum
variable = reaction_y
boundary = left
[../]
[./disp_z]
type = NodalVariableValue
nodeid = 1
variable = disp_z
[../]
[./reaction_z]
type = NodalSum
variable = reaction_z
boundary = left
[../]
[./reaction_xx]
type = NodalSum
variable = reaction_xx
boundary = left
[../]
[./reaction_yy]
type = NodalSum
variable = reaction_yy
boundary = left
[../]
[./reaction_zz]
type = NodalSum
variable = reaction_zz
boundary = left
[../]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[]