Step 1 - First steps
Let's get started with a minimal input file.
#
# Initial single block mechanics input
# https://mooseframework.inl.gov/modules/solid_mechanics/tutorials/introduction/step01.html
#
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
[]
[]
[Materials]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e9
poissons_ratio = 0.3
[]
[stress]
type = ComputeLinearElasticStress
[]
[]
[Executioner]
type = Transient
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(moose/modules/solid_mechanics/tutorials/introduction/mech_step01.i)Input file
GlobalParams
In the [GlobalParams]
we set a default value for the displacements
parameters. That way we do not have to specify it explicitly in the multiple blocks below that all need this parameter set.
Mesh
We create a simple regular orthogonal mesh block using the GeneratedMeshGenerator
. All subblocks under [Mesh]
are the so called MeshGenerators. They can be chained together and MOOSE provides a multitude of generators to create and modify meshes. Later on we will see how to create a second block and combine it into a two block mesh. A commonly used MeshGenerator is the FileMeshGenerator
, it is used to load a mesh file generated by third party software like Cubit of Gmsh (or sometimes even meshes generated by MOOSE). MOOSE provides a shorthand for the FileMeshGenerator
through the "file" parameter inside [Mesh]
, e.g.
[Mesh]
file = pressure_vessel.e
[]
MOOSE supports a variety of mesh file formats; most commonly used is the Exodus format.
SolidMechanics QuasiStatic Physics
The third top level block has a path with three components in the title. You can think of the MOOSE input file block structure like a directory. The QuasiStatic Physics is nested under Modules
and SolidMechanics
. A MOOSE Action is a convenience object that can setup multiple aspects of a simulation for the user, resulting in a more compact syntax. Actions can also enforce consistency in the simulation definition. In this simple example the action will create the displacement variables (as specified by the GlobalParams/displacements
parameter). The action will automatically determine if second order shape functions are needed, based on the order of the mesh in the simulation (this works with any kind of mesh, whether it is generated by MOOSE or read in from a file).
Furthermore the appropriate strain calculator will be added for the chosen coordinate system (axisymmetric, spherical, Cartesian).
Check the quasi-static physics documentation for a full run-down of all objects it creates.
Materials
The two subblocks under [Materials]
define an isotropic elasticity tensor and a linear elastic stress calculator. Neither object is block restricted (using the block
parameter), so they apply to the entire simulation domain.
Executioner
In the [Executioner]
block all parameters relevant to the solution of the current problem are set. type = Transient
selects a time-dependent simulation (as opposed to type = Steady
). We chose to run for five simulation steps; with a timestep of 1
.
Outputs
We use the exodus = true
shorthand to setup an output object of type Exodus
to write an Exodus mesh and solution file to the disk. You can visualize these outputs using Paraview.
Questions
Units
A question that comes up often is "What units does MOOSE use?".
Look through the input file and try to identify places where units might be relevant.
Expected outcome
Before you run this first input file take a moment to think about what you expect to happen.
Once you've answered the questions and run the first example it is time to move on to a slightly more complex scenario in Step 2.