ExplicitMixedOrder

Implementation of explicit time integration without invoking any of the nonlinear solver.

Overview

ExplicitMixedOrder applies a time integrator for central difference in which the acceleration used for the solution update is calculated directly from the residual forces.

The formulation assumes a constant acceleration between midpoints. An average between the old and current time step is used to increment midpoint velocity to account for changing time steps, which is the same method used in Abaqus.

For example if, then,

When using Dirichlet BCs, one must use the (ExplicitDirichletBC,ExplicitFunctionDirichletBC) variations to enforce Dirichlet BC's properly.

Additionally, the time integrator must be used with MassMatrix, with a properly tagged mass matrix.

Example Input File Syntax

An example input file is shown below:



[GlobalParams]
    displacements = 'disp_x disp_y'
[]

[Kernels]
    [DynamicSolidMechanics]
        displacements = 'disp_x disp_y'
    []
    [massmatrix]
        type = MassMatrix
        density = 1
        matrix_tags = 'system'
        variable = disp_x
    []
    [massmatrix_y]
        type = MassMatrix
        density = 1
        matrix_tags = 'system'
        variable = disp_y
    []
[]

[Executioner]
    type = Transient

    [TimeIntegrator]
        type = CentralDifferenceDirect
        mass_matrix_tag = 'system'
    []
[]

Input Parameters

  • first_order_varsA subset of variables that require first-order integration (velocity only) to be applied by this time integrator.

    C++ Type:std::vector<VariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:A subset of variables that require first-order integration (velocity only) to be applied by this time integrator.

  • mass_matrix_tagmassThe tag for the mass matrix

    Default:mass

    C++ Type:TagName

    Controllable:No

    Description:The tag for the mass matrix

  • second_order_varsA subset of variables that require second-order integration (velocity and acceleration) to be applied by this time integrator.

    C++ Type:std::vector<VariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:A subset of variables that require second-order integration (velocity and acceleration) to be applied by this time integrator.

  • use_constant_massFalseIf set to true, will only compute the mass matrix in the first time step, and keep using it throughout the simulation.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:If set to true, will only compute the mass matrix in the first time step, and keep using it throughout the simulation.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Set the enabled status of the MooseObject.

Advanced Parameters