ETDRK4Solver

Fourth-order exponential time differencing solver.

Fourth-order exponential time differencing integrator for split-operator problems. The solver applies the Runge-Kutta ETD scheme of Cox and Matthews using precomputed exponential coefficients to evolve the linear reciprocal term exactly over each substep while integrating nonlinear contributions in spectral space. The optional "substeps" parameter subdivides each transient step to keep high-order stability when the full time step is large compared to the stiff linear dynamics.

Example Input File Syntax

[TensorSolver<<<{"href": "../../syntax/TensorSolver/index.html"}>>>]
  type = ETDRK4Solver
  buffer = 'u'
  reciprocal_buffer = 'u_bar'
  linear_reciprocal = 'L'
  nonlinear_reciprocal = 'zero'
  substeps = ${ss}
[]
(test/tests/solvers/etdrk4_diffusion.i)

Input Parameters

  • bufferThe buffer this solver is writing to

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

    Controllable:No

    Description:The buffer this solver is writing to

  • linear_reciprocalBuffer with the reciprocal of the linear prefactor (e.g. kappa*k^2). Either one buffer per nonlinear_reciprocal, or no buffer names, or `0` to skip linear reciprocal buffers for a given variable.

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

    Controllable:No

    Description:Buffer with the reciprocal of the linear prefactor (e.g. kappa*k^2). Either one buffer per nonlinear_reciprocal, or no buffer names, or `0` to skip linear reciprocal buffers for a given variable.

  • nonlinear_reciprocalBuffer with the reciprocal of the non-linear contribution

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

    Controllable:No

    Description:Buffer with the reciprocal of the non-linear contribution

  • reciprocal_bufferBuffer with the reciprocal of the integrated buffer

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

    Controllable:No

    Description:Buffer with the reciprocal of the integrated buffer

Required Parameters

  • forward_bufferThese buffers are updated with the corresponding buffers from forward_buffer_old. No integration is performed. Buffer forwarding is used only to resolve cyclic dependencies.

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

    Controllable:No

    Description:These buffers are updated with the corresponding buffers from forward_buffer_old. No integration is performed. Buffer forwarding is used only to resolve cyclic dependencies.

  • forward_buffer_newNew values to update `forward_buffer` with.

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

    Controllable:No

    Description:New values to update `forward_buffer` with.

  • root_computePrimary compute object that updates the buffers. This is usually a ComputeGroup object. A ComputeGroup encompassing all computes will be generated automatically if the user does not provide this parameter.

    C++ Type:std::string

    Controllable:No

    Description:Primary compute object that updates the buffers. This is usually a ComputeGroup object. A ComputeGroup encompassing all computes will be generated automatically if the user does not provide this parameter.

  • substeps1Solver substeps per time step.

    Default:1

    C++ Type:unsigned int

    Controllable:No

    Description:Solver substeps per time step.

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

Input Files