-
Notifications
You must be signed in to change notification settings - Fork 12
Implicit Linear and Nonlinear Schemes
The overall structure of the JSON
file to run the implicit linear and nonlinear schemes is generally similar to the explicit scheme. The main differences of the input settings will be highlighted in the following sections.
The structure of the mesh
object is the same as in the explicit explicit scheme other than the kinematic boundary conditions.
{
"mesh":{
"boundary_conditions":{
"displacement_constraints": [
{
"nset_id": 1,
"dir": 1,
"displacement": 0.0
},
{
"file": "displacement_constraints_inputs.txt",
}
]
}
},
}
Only displacement boundary condition is supported for implicit MPM.
For nodal displacement constraints:
-
"nset_id"
and"pset_id"
correspond to defined sets within the entity sets JSON file. -
"dir"
is the direction of the constraint(0|1|2)
. -
"displacement"
is the specified velocity in declared direction. - Nodal displacement constraints can be input as a
.txt
file with each row corresponding to an individual constraint.
The major difference between the implicit and the explicit schemes is located at the analysis
object defined at the input JSON
file.
{
"analysis": {
"type": "MPMImplicit2D",
"mpm_scheme": "newmark",
"scheme_settings": {
"nonlinear": true,
"quasi_static": false,
"beta": 0.25,
"gamma": 0.50,
"max_iteration": 10,
"displacement_tolerance": 1.0e-10,
"residual_tolerance": 1.0e-10,
"relative_residual_tolerance": 1.0e-6,
"verbosity": 0
},
"linear_solver": {
"assembler_type": "EigenImplicit2D",
"solver_settings": [
{
"dof": "displacement",
"solver_type": "KrylovPETSC",
"sub_solver_type": "cg",
"preconditioner_type": "none",
"max_iter": 1000,
"tolerance": 1E-9,
"abs_tolerance": 1E-9,
"verbosity": 0
}]
},
"dt": 1.0e-5,
"nsteps": 1001,
"locate_particles": true,
"nload_balance_steps": 100,
"uuid": "output-name-000",
"resume": {
"resume": false,
"uuid": "output-name-000",
"step": 100
}
}
}
The following objects follow the description written in the explicit scheme:
-
"dt"
is the time step. -
"nsteps"
is the total number of steps. -
"locate_particles"
flag is setfalse
to allow simulation to continue if material points leave the mesh domain. -
"nload_balance_steps"
is optional to redefine the dynamic load balancing; default is every 1000 steps. -
"uuid"
is the analysis name. -
"resume"
is the option to resume the simulation from a specific time step.
Supported types:
Analysis | Description |
---|---|
MPMImplicit2D | implicit 2D MPM |
MPMImplicit3D | implicit 3D MPM |
Supported schemes:
Schemes | Description |
---|---|
newmark | Newmark's time integration. |
In addition to specifying the scheme used, user can also specify the "scheme_settings"
option to change the default parameter considered in the simulation.
-
"nonlinear"
is used to specify the linear (false
) and nonlinear scheme (true
). The default setting istrue
. -
"quasi_static"
is used to include or exclude the inertia force in the momentum balance. The default setting isfalse
, i.e. dynamic condition is considered. -
"beta"
and"gamma"
are the Newmark's parameter. The default values are 0.25 and 0.50, respectively.
If the "nonlinear"
setting above is set as true
, then additional settings can be modified:
-
"max_iteration"
is the maximum number of Newton-Raphson iteration allowed. The default value is 20. -
"displacement_tolerance"
is the tolerance controlling the allowable magnitude of displacement norm. The default value is 1.0e-10. -
"residual_tolerance"
is the tolerance controlling the allowable magnitude of residual norm, i.e.R=Ax-b
. The default value is 1.0e-10. -
"relative_residual_tolerance"
is the residual norm normalized with the residual norm at the first iteration. The default value is 1.0e-6. -
"verbosity"
is to control how much information is outputed in the console. The default value is 0.
The "linear_solver"
option is used to control the type of assembler and linear solver needed to solve the momentum equation implicitly.
-
"assembler_type"
should be"EigenImplicit2D"
or"EigenImplicit3D"
for 2D or 3D simulation. -
"solver_settings"
contains all necessary settings to solve the linear equationAx=b
. -
"dof"
is the name of degrees of freedom."displacement"
must be specified for the implicit MPM scheme. -
"solver_type"
is the name of the linear solver library used. Options available are:
Analysis | Description |
---|---|
DirectEigen | Direct solver of Eigen Library |
IterativeEigen | Iterative solver of Eigen Library |
KrylovPETSC | Iterative solver of PETSc Library |
-
"sub_solver_type"
is the name of the linear solver within the selected library. -
"preconditioner_type"
is the name of used preconditioner. -
"max_iter"
is the maximum number of iterations for the iterative linear solver. -
"tolerance"
is the relative residual tolerance. -
"abs_tolerance"
is the absolute tolerance. -
"div_tolerance"
is the divergence tolerance. -
"verbosity"
is to control how much information is output in the console. The default value is 0.
- Prerequisite packages
- Compiling MPM in Linux
- Compiling MPM in ARM-based MacOS
- Advanced compilation with MPI
- Explicit single-phase MPM
- Implicit linear and nonlinear schemes
- Semi-implicit Navier Stokes solver
- Two-phase MPM solver
- Using higher-order basis functions
- Infinitesimal strain
- Finite strain
- Fluids