Example 5b: Dynamic analysis of a stick model of a nuclear power plant with mesh generated using text input

Model

This example demonstrates the BeamMeshGenerator to create a stick model of a nuclear power plant taken from the SASSI2000 user manual Ostadan (2006), and described in Example 5a. Unlike in Example 5a, the basemat is not modeled. The rotations of the stick model are restrained at the base and the same input acceleration history shown in Example 5a is applied at the base of the structure. The dynamic responses thus obtained are compared with the dynamic responses obtained from Example 5a, which imports a mesh file generated using Cubit.

[Mesh<<<{"href": "../syntax/Mesh/index.html"}>>>]
  [./beam]
    type = BeamMeshGenerator<<<{"href": "../source/meshgenerators/BeamMeshGenerator.html"}>>>
    mesh_file<<<{"description": "Mesh file containing node data and element connectivity. Node data should start with header `# Nodes` and should contain node id, x, y, z coordinates of the nodes and nodeset ids. Each row corresponds to a different node. Element connectivity starts with header `# Element Linear` and should contain element id, nodes and block id. Each row corresponds to a different element. Currently only linear 1d elements can be generated."}>>> = stick_model.txt
  [../]
[]

[Variables<<<{"href": "../syntax/Variables/index.html"}>>>]
  [./disp_x]
  [../]
  [./disp_y]
  [../]
  [./disp_z]
  [../]
  [./rot_x]
    block = '1 2 3 4 5 6 7 8 9 10 11 12 13 14'
  [../]
  [./rot_y]
    block = '1 2 3 4 5 6 7 8 9 10 11 12 13 14'
  [../]
  [./rot_z]
    block = '1 2 3 4 5 6 7 8 9 10 11 12 13 14'
  [../]
[]

[AuxVariables<<<{"href": "../syntax/AuxVariables/index.html"}>>>]
  [./vel_x]
  [../]
  [./vel_y]
  [../]
  [./vel_z]
  [../]
  [./accel_x]
  [../]
  [./accel_y]
  [../]
  [./accel_z]
  [../]
  [./rot_vel_x]
    block = '1 2 3 4 5 6 7 8 9 10 11 12 13 14'
  [../]
  [./rot_vel_y]
    block = '1 2 3 4 5 6 7 8 9 10 11 12 13 14'
  [../]
  [./rot_vel_z]
    block = '1 2 3 4 5 6 7 8 9 10 11 12 13 14'
  [../]
  [./rot_accel_x]
    block = '1 2 3 4 5 6 7 8 9 10 11 12 13 14'
  [../]
  [./rot_accel_y]
    block = '1 2 3 4 5 6 7 8 9 10 11 12 13 14'
  [../]
  [./rot_accel_z]
    block = '1 2 3 4 5 6 7 8 9 10 11 12 13 14'
  [../]
[]

[Physics<<<{"href": "../syntax/Physics/index.html"}>>>/SolidMechanics<<<{"href": "../syntax/Physics/SolidMechanics/index.html"}>>>/LineElement<<<{"href": "../syntax/Physics/SolidMechanics/LineElement/index.html"}>>>/QuasiStatic<<<{"href": "../syntax/Physics/SolidMechanics/LineElement/QuasiStatic/index.html"}>>>]
#    add_variables = true
    displacements<<<{"description": "The nonlinear displacement variables for the problem"}>>> = 'disp_x disp_y disp_z'
    rotations<<<{"description": "The rotations appropriate for the simulation geometry and coordinate system"}>>> = 'rot_x rot_y rot_z'

    # dynamic simulation using consistent mass/inertia matrix
    dynamic_nodal_translational_inertia<<<{"description": "If set to true, nodal mass matrix is used for the inertial force calculation."}>>> = true

    velocities<<<{"description": "Translational velocity variables"}>>> = 'vel_x vel_y vel_z'
    accelerations<<<{"description": "Translational acceleration variables"}>>> = 'accel_x accel_y accel_z'
    rotational_velocities<<<{"description": "Rotational velocity variables"}>>> = 'rot_vel_x rot_vel_y rot_vel_z'
    rotational_accelerations<<<{"description": "Rotational acceleration variables"}>>> = 'rot_accel_x rot_accel_y rot_accel_z'

    beta<<<{"description": "beta parameter for Newmark Time integration"}>>> = 0.25 # Newmark time integration parameter
    gamma<<<{"description": "gamma parameter for Newmark Time integration"}>>> = 0.5 # Newmark time integration parameter

    # parameters for 5% Rayleigh damping
    zeta<<<{"description": "Name of material property or a constant real number defining the zeta parameter for stiffness proportional Rayleigh damping."}>>> = 0.0005438894818 # stiffness proportional damping
    eta<<<{"description": "Name of material property or a constant real number defining the eta parameter for mass proportional Rayleigh damping."}>>> = 3.26645357034 # Mass proportional Rayleigh damping
  [./block_1]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 1
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 1400
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 2.8e6
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 2.8e6
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 142.860001
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 1
  [../]
  [./block_2]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 2
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 1400
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 2.8e6
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 2.8e6
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 130.429993
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = '2 3 4 5 6'
  [../]
  [./block_3]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 3
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 1400
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 2.8e6
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 2.8e6
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 143.169998
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 7
  [../]
  [./block_4]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 4
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 990
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 1.9e6
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 1.9e6
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 93.79000092
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 8
  [../]
  [./block_5]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 5
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 990
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 1.5e6
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 1.5e6
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 76.70999908
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 9
  [../]
  [./block_6]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 6
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 990
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 8e5
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 8e5
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 65.83999634
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 10
  [../]
  [./block_7]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 7
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 990
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 2e5
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 2e5
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 5.90000010
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 11
  [../]
  # right
  [./block_8]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 8
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 2000
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 1.1e6
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 1.1e6
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 86.95999908
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 12
  [../]
  [./block_9]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 9
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 2560
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 1.2e6
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 1.2e6
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 77.94999695
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 13
  [../]
  [./block_10]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 10
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 2210
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 1.2e6
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 1.2e6
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 195.339996
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 14
  [../]
  [./block_11]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 11
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 1960
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 1.3e6
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 1.3e6
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 116.769997
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 15
  [../]
  [./block_12]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 12
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 1740
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 9e5
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 9e5
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 265.220001
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 16
  [../]
  [./block_13]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 13
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 780
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 2e5
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 2e5
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 37.88999939
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 17
  [../]
  [./block_14]
    block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence, inertia kernels and materials will be applied to"}>>> = 14
    area<<<{"description": "Cross-section area of the beam. Can be supplied as either a number or a variable name."}>>> = 190
    Iy<<<{"description": "Second moment of area of the beam about y axis. Can be supplied as either a number or a variable name."}>>> = 4000.0
    Iz<<<{"description": "Second moment of area of the beam about z axis. Can be supplied as either a number or a variable name."}>>> = 4000.0
    y_orientation<<<{"description": "Orientation of the y direction along which Iyy is provided. This should be perpendicular to the axis of the beam."}>>> = '0.0 1.0 0.0'

    nodal_mass<<<{"description": "Mass associated with the node"}>>> = 25.46999931
    boundary<<<{"description": "The list of boundary IDs from the mesh where the nodal mass/inertia will be applied."}>>> = 18
  [../]
[]

[Materials<<<{"href": "../syntax/Materials/index.html"}>>>]
  [./elasticity_beam_outer_1]
    type = ComputeElasticityBeam<<<{"description": "Computes the equivalent of the elasticity tensor for the beam element, which are vectors of material translational and flexural stiffness.", "href": "../source/materials/ComputeElasticityBeam.html"}>>>
    youngs_modulus<<<{"description": "Young's modulus of the material. Can be supplied as either a number or a variable name."}>>> = 6.9e5
    poissons_ratio<<<{"description": "Poisson's ratio of the material. Can be supplied as either a number or a variable name."}>>> = 0.278
    shear_coefficient<<<{"description": "Scale factor for the shear modulus. Can be supplied as either a number or a variable name."}>>> = 0.5
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '1 2 3'
  [../]
  [./elasticity_beam_outer_2]
    type = ComputeElasticityBeam<<<{"description": "Computes the equivalent of the elasticity tensor for the beam element, which are vectors of material translational and flexural stiffness.", "href": "../source/materials/ComputeElasticityBeam.html"}>>>
    youngs_modulus<<<{"description": "Young's modulus of the material. Can be supplied as either a number or a variable name."}>>> = 6.9e5
    poissons_ratio<<<{"description": "Poisson's ratio of the material. Can be supplied as either a number or a variable name."}>>> = 0.278
    shear_coefficient<<<{"description": "Scale factor for the shear modulus. Can be supplied as either a number or a variable name."}>>> = 0.505
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '4 5 6 7'
  [../]
  [./elasticity_beam_inner_1]
    type = ComputeElasticityBeam<<<{"description": "Computes the equivalent of the elasticity tensor for the beam element, which are vectors of material translational and flexural stiffness.", "href": "../source/materials/ComputeElasticityBeam.html"}>>>
    youngs_modulus<<<{"description": "Young's modulus of the material. Can be supplied as either a number or a variable name."}>>> = 3.45e5
    poissons_ratio<<<{"description": "Poisson's ratio of the material. Can be supplied as either a number or a variable name."}>>> = 0.278
    shear_coefficient<<<{"description": "Scale factor for the shear modulus. Can be supplied as either a number or a variable name."}>>> = 0.66
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '8'
  [../]
  [./elasticity_beam_inner_2]
     type = ComputeElasticityBeam<<<{"description": "Computes the equivalent of the elasticity tensor for the beam element, which are vectors of material translational and flexural stiffness.", "href": "../source/materials/ComputeElasticityBeam.html"}>>>
     youngs_modulus<<<{"description": "Young's modulus of the material. Can be supplied as either a number or a variable name."}>>> = 3.45e5
     poissons_ratio<<<{"description": "Poisson's ratio of the material. Can be supplied as either a number or a variable name."}>>> = 0.278
     shear_coefficient<<<{"description": "Scale factor for the shear modulus. Can be supplied as either a number or a variable name."}>>> = 0.609375
     block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '9'
  [../]
  [./elasticity_beam_inner_3]
    type = ComputeElasticityBeam<<<{"description": "Computes the equivalent of the elasticity tensor for the beam element, which are vectors of material translational and flexural stiffness.", "href": "../source/materials/ComputeElasticityBeam.html"}>>>
    youngs_modulus<<<{"description": "Young's modulus of the material. Can be supplied as either a number or a variable name."}>>> = 3.45e5
    poissons_ratio<<<{"description": "Poisson's ratio of the material. Can be supplied as either a number or a variable name."}>>> = 0.278
    shear_coefficient<<<{"description": "Scale factor for the shear modulus. Can be supplied as either a number or a variable name."}>>> = 0.6606
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '10'
  [../]
  [./elasticity_beam_inner_4]
    type = ComputeElasticityBeam<<<{"description": "Computes the equivalent of the elasticity tensor for the beam element, which are vectors of material translational and flexural stiffness.", "href": "../source/materials/ComputeElasticityBeam.html"}>>>
    youngs_modulus<<<{"description": "Young's modulus of the material. Can be supplied as either a number or a variable name."}>>> = 3.45e5
    poissons_ratio<<<{"description": "Poisson's ratio of the material. Can be supplied as either a number or a variable name."}>>> = 0.278
    shear_coefficient<<<{"description": "Scale factor for the shear modulus. Can be supplied as either a number or a variable name."}>>> = 0.372
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '11'
  [../]
  [./elasticity_beam_inner_5]
    type = ComputeElasticityBeam<<<{"description": "Computes the equivalent of the elasticity tensor for the beam element, which are vectors of material translational and flexural stiffness.", "href": "../source/materials/ComputeElasticityBeam.html"}>>>
    youngs_modulus<<<{"description": "Young's modulus of the material. Can be supplied as either a number or a variable name."}>>> = 3.45e5
    poissons_ratio<<<{"description": "Poisson's ratio of the material. Can be supplied as either a number or a variable name."}>>> = 0.278
    shear_coefficient<<<{"description": "Scale factor for the shear modulus. Can be supplied as either a number or a variable name."}>>> = 0.345
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '12'
  [../]
  [./elasticity_beam_inner_6]
    type = ComputeElasticityBeam<<<{"description": "Computes the equivalent of the elasticity tensor for the beam element, which are vectors of material translational and flexural stiffness.", "href": "../source/materials/ComputeElasticityBeam.html"}>>>
    youngs_modulus<<<{"description": "Young's modulus of the material. Can be supplied as either a number or a variable name."}>>> = 3.45e5
    poissons_ratio<<<{"description": "Poisson's ratio of the material. Can be supplied as either a number or a variable name."}>>> = 0.278
    shear_coefficient<<<{"description": "Scale factor for the shear modulus. Can be supplied as either a number or a variable name."}>>> = 0.462
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '13'
  [../]
  [./elasticity_beam_inner_7]
    type = ComputeElasticityBeam<<<{"description": "Computes the equivalent of the elasticity tensor for the beam element, which are vectors of material translational and flexural stiffness.", "href": "../source/materials/ComputeElasticityBeam.html"}>>>
    youngs_modulus<<<{"description": "Young's modulus of the material. Can be supplied as either a number or a variable name."}>>> = 3.45e5
    poissons_ratio<<<{"description": "Poisson's ratio of the material. Can be supplied as either a number or a variable name."}>>> = 0.278
    shear_coefficient<<<{"description": "Scale factor for the shear modulus. Can be supplied as either a number or a variable name."}>>> = 0.368
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '14'
  [../]
  [./stress_beam]
    type = ComputeBeamResultants<<<{"description": "Compute forces and moments using elasticity", "href": "../source/materials/ComputeBeamResultants.html"}>>>
    block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '1 2 3 4 5 6 7 8 9 10 11 12 13 14'
  [../]
[]

[BCs<<<{"href": "../syntax/BCs/index.html"}>>>]
  [./disp_x]
    type = PresetAcceleration<<<{"description": "Prescribe acceleration on a given boundary in a given direction", "href": "../source/bcs/PresetAcceleration.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
    velocity<<<{"description": "The velocity variable."}>>> = vel_x
    acceleration<<<{"description": "The acceleration variable."}>>> = accel_x
    beta<<<{"description": "beta parameter for Newmark time integration."}>>> = 0.25
    function<<<{"description": "Function describing the velocity."}>>> = accel_x
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '0'
  [../]
  [./disp_y]
    type = PresetAcceleration<<<{"description": "Prescribe acceleration on a given boundary in a given direction", "href": "../source/bcs/PresetAcceleration.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_y
    velocity<<<{"description": "The velocity variable."}>>> = vel_y
    acceleration<<<{"description": "The acceleration variable."}>>> = accel_y
    beta<<<{"description": "beta parameter for Newmark time integration."}>>> = 0.25
    function<<<{"description": "Function describing the velocity."}>>> = accel_y
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '0'
  [../]
  [./disp_z]
    type = PresetAcceleration<<<{"description": "Prescribe acceleration on a given boundary in a given direction", "href": "../source/bcs/PresetAcceleration.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_z
    velocity<<<{"description": "The velocity variable."}>>> = vel_z
    acceleration<<<{"description": "The acceleration variable."}>>> = accel_z
    beta<<<{"description": "beta parameter for Newmark time integration."}>>> = 0.25
    function<<<{"description": "Function describing the velocity."}>>> = accel_z
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '0'
  [../]
  [./rot_x]
   type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../source/bcs/DirichletBC.html"}>>>
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '0'
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_x
    value<<<{"description": "Value of the BC"}>>> = 0.0
  [../]
  [./rot_y]
    type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../source/bcs/DirichletBC.html"}>>>
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '0'
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_y
    value<<<{"description": "Value of the BC"}>>> = 0.0
  [../]
  [./rot_z]
    type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../source/bcs/DirichletBC.html"}>>>
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '0'
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = rot_z
    value<<<{"description": "Value of the BC"}>>> = 0.0
  [../]
[]

[Functions<<<{"href": "../syntax/Functions/index.html"}>>>]
  [./accel_x]
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../source/functions/PiecewiseLinear.html"}>>>
    data_file<<<{"description": "File holding CSV data"}>>> = 'accel_x.csv'
    format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = 'columns'
    scale_factor<<<{"description": "Scale factor to be applied to the output values"}>>> = 32.2000008
  [../]
  [./accel_y]
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../source/functions/PiecewiseLinear.html"}>>>
    data_file<<<{"description": "File holding CSV data"}>>> = 'accel_y.csv'
    format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = 'columns'
    scale_factor<<<{"description": "Scale factor to be applied to the output values"}>>> = 32.2000008
  [../]
  [./accel_z]
    type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../source/functions/PiecewiseLinear.html"}>>>
    data_file<<<{"description": "File holding CSV data"}>>> = 'accel_z.csv'
    format<<<{"description": "Format of csv data file that is in either in columns or rows"}>>> = 'columns'
    scale_factor<<<{"description": "Scale factor to be applied to the output values"}>>> = 32.2000008
  [../]
[]

[Preconditioning<<<{"href": "../syntax/Preconditioning/index.html"}>>>]
  [./smp]
    type = SMP<<<{"description": "Single matrix preconditioner (SMP) builds a preconditioner using user defined off-diagonal parts of the Jacobian.", "href": "../source/preconditioners/SingleMatrixPreconditioner.html"}>>>
    full<<<{"description": "Set to true if you want the full set of couplings between variables simply for convenience so you don't have to set every off_diag_row and off_diag_column combination."}>>> = true
  [../]
[]

[Executioner<<<{"href": "../syntax/Executioner/index.html"}>>>]
  type = Transient
  solve_type = 'NEWTON'
  end_time = 45.0
  dt = 0.005
  dtmin = 0.005
  nl_abs_tol = 1e-8
  nl_rel_tol = 1e-8
  l_tol = 1e-8
  l_max_its = 20
  timestep_tolerance = 1e-8
[]

[Postprocessors<<<{"href": "../syntax/Postprocessors/index.html"}>>>]
  [./accel_x_11]
    type = PointValue<<<{"description": "Compute the value of a variable at a specified location", "href": "../source/postprocessors/PointValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on."}>>> = accel_x
    point<<<{"description": "The physical point where the solution will be evaluated."}>>> = '0.0 0.0 217.0'
  [../]
  [./accel_y_11]
    type = PointValue<<<{"description": "Compute the value of a variable at a specified location", "href": "../source/postprocessors/PointValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on."}>>> = accel_y
    point<<<{"description": "The physical point where the solution will be evaluated."}>>> = '0.0 0.0 217.0'
  [../]
  [./accel_z_11]
    type = PointValue<<<{"description": "Compute the value of a variable at a specified location", "href": "../source/postprocessors/PointValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on."}>>> = accel_z
    point<<<{"description": "The physical point where the solution will be evaluated."}>>> = '0.0 0.0 217.0'
  [../]
  [./accel_x_14]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    variable<<<{"description": "The variable to be monitored"}>>> = accel_x
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 14
  [../]
  [./accel_y_14]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    variable<<<{"description": "The variable to be monitored"}>>> = accel_y
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 14
  [../]
  [./accel_z_14]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    variable<<<{"description": "The variable to be monitored"}>>> = accel_z
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 14
  [../]
  [./accel_x_17]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    variable<<<{"description": "The variable to be monitored"}>>> = accel_x
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 17
  [../]
  [./accel_y_17]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    variable<<<{"description": "The variable to be monitored"}>>> = accel_y
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 17
  [../]
  [./accel_z_17]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    variable<<<{"description": "The variable to be monitored"}>>> = accel_z
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 17
  [../]
  [./accel_x_18]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    variable<<<{"description": "The variable to be monitored"}>>> = accel_x
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 18
  [../]
  [./accel_y_18]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    variable<<<{"description": "The variable to be monitored"}>>> = accel_y
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 18
  [../]
  [./accel_z_18]
    type = NodalVariableValue<<<{"description": "Outputs values of a nodal variable at a particular location", "href": "../source/postprocessors/NodalVariableValue.html"}>>>
    variable<<<{"description": "The variable to be monitored"}>>> = accel_z
    nodeid<<<{"description": "The ID of the node where we monitor"}>>> = 18
  [../]
  [./accel_x_0]
    type = PointValue<<<{"description": "Compute the value of a variable at a specified location", "href": "../source/postprocessors/PointValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on."}>>> = accel_x
    point<<<{"description": "The physical point where the solution will be evaluated."}>>> = '0.0 0.0 10.0'
  [../]
  [./accel_y_0]
    type = PointValue<<<{"description": "Compute the value of a variable at a specified location", "href": "../source/postprocessors/PointValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on."}>>> = accel_y
    point<<<{"description": "The physical point where the solution will be evaluated."}>>> = '0.0 0.0 10.0'
  [../]
  [./accel_z_0]
    type = PointValue<<<{"description": "Compute the value of a variable at a specified location", "href": "../source/postprocessors/PointValue.html"}>>>
    variable<<<{"description": "The name of the variable that this postprocessor operates on."}>>> = accel_z
    point<<<{"description": "The physical point where the solution will be evaluated."}>>> = '0.0 0.0 10.0'
  [../]
[]

[VectorPostprocessors<<<{"href": "../syntax/VectorPostprocessors/index.html"}>>>]
  [./accel_hist]
    type = ResponseHistoryBuilder<<<{"description": "Calculates response histories for a given node and variable(s).", "href": "../source/vectorpostprocessors/ResponseHistoryBuilder.html"}>>>
    variables<<<{"description": "Variable name for which the response history is requested."}>>> = 'accel_x accel_y accel_z'
    nodes<<<{"description": "Node number(s) at which the response history is needed."}>>> = '0 11 14 17 18'
  [../]
  [./accel_spec]
    type = ResponseSpectraCalculator<<<{"description": "Calculate the response spectrum at the requested nodes or points.", "href": "../source/vectorpostprocessors/ResponseSpectraCalculator.html"}>>>
    vectorpostprocessor<<<{"description": "Name of the ResponseHistoryBuilder vectorpostprocessor, for which response spectra are calculated."}>>> = accel_hist
    regularize_dt<<<{"description": "dt for response spectra calculation. The acceleration response will be regularized to this dt prior to the response spectrum calculation."}>>> = 0.005
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = out
  [../]
[]

[Outputs<<<{"href": "../syntax/Mastodon/Outputs/index.html"}>>>]
  [./out]
    type = CSV<<<{"description": "Output for postprocessors, vector postprocessors, and scalar variables using comma seperated values (CSV).", "href": "../source/outputs/CSV.html"}>>>
    execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'final'
    file_base<<<{"description": "The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it."}>>> = example5bmod
  [../]
  exodus<<<{"description": "Output the results using the default settings for Exodus output."}>>> = true
  [./console]
    type = Console<<<{"description": "Object for screen output.", "href": "../source/outputs/Console.html"}>>>
    max_rows<<<{"description": "The maximum number of postprocessor/scalar values displayed on screen during a timestep (set to 0 for unlimited)"}>>> = 1
  [../]

[]
(examples/ex05b/beam_constraint.i)

The mesh is generated by using the BeamMeshGenerator, which generates a beam mesh shown in Figure 1 from a text file. Each row of the text file following # Nodes corresponds to a node and contains the node id, x, y and z coordinates of the node, and nodeset IDs that this node belongs to. Each row following the # Element Linear line corresponds to one beam element and contains the element id, node ids of the two nodes that this element connects, and the block id that this element belongs to. The text file defining the beam mesh, and an illustration of the generated mesh are below.

# Nodes
0, 0.0, 0.0, 10.0, 0
1, 0.0, 0.0, 33.5, 1
2, 0.0, 0.0, 53.8, 2
3, 0.0, 0.0, 73.8, 3
4, 0.0, 0.0, 93.8, 4
5, 0.0, 0.0, 113.8, 5
6, 0.0, 0.0, 133.8, 6
7, 0.0, 0.0, 153.8, 7
8, 0.0, 0.0, 175.3, 8
9, 0.0, 0.0, 194.4, 9
10, 0.0, 0.0, 208.5, 10
11, 0.0, 0.0, 217.0, 11
12, 0.0, 0.0, 18.0, 12
13, 0.0, 0.0, 23.0, 13
14, 0.0, 0.0, 32.0, 14
15, 0.0, 0.0, 43.5, 15
16, 0.0, 0.0, 59.0, 16
17, 0.0, 0.0, 71.0, 17
18, 0.0, 0.0, 103.0,18

# Element Linear
0, 0, 1, 1
1, 1, 2, 2
2, 2, 3, 2
3, 3, 4, 2
4, 4, 5, 2
5, 5, 6, 2
6, 6, 7, 3
7, 7, 8, 4
8, 8, 9, 5
9, 9, 10, 6
10, 10, 11, 7
11, 0, 12, 8
12, 12, 13, 9
13, 13, 14, 10
14, 14, 15, 11
15, 15, 16, 12
16, 16, 17, 13
17, 17, 18, 14
(examples/ex05b/stick_model.txt)

Figure 1: 1D stick model using BeamMeshGenerator.

The other sections of the input file are identical to those in Example 5a and are explained there.

Results

The response spectra at the top of the internal and containment structures obtained from this example and Example 5a are presented here. FileMesh corresponds to the results calculated when the mesh is imported from Cubit, and BeamMeshGenerator corresponds to the results calculated in this example.

Figure 2: Comparison of the response spectra at at an elevation of 22 ft at internal structure in X direction

Figure 3: Comparison of the response spectra at at an elevation of 22 ft at internal structure in Y direction

Figure 4: Comparison of the response spectra at at an elevation of 22 ft at internal structure in Z direction

Figure 5: Comparison of the response spectra at at an elevation of 61 ft at internal structure in X direction

Figure 6: Comparison of the response spectra at at an elevation of 61 ft at internal structure in Y direction

Figure 7: Comparison of the response spectra at at an elevation of 61 ft at internal structure in Z direction

References

  1. Farhang Ostadan. SASSI - A System for Analysis of Soil Structure Interaction - User's Manual. University of California, Berkeley, California, 2006.[BibTeX]