Base MPCs#

MPC#

src/physics/ats/src/pks/mpc/mpc.hh

A multi process coupler is a PK which coordinates and couples several PKs. Each of these coordinated PKs may be MPCs themselves, or physical PKs. Note this does NOT provide a full implementation of PK – it does not supply the AdvanceStep() method. Therefore this class cannot be instantiated, but must be inherited by derived classes which finish supplying the functionality. Instead, this provides the data structures and methods (which may be overridden by derived classes) for managing multiple PKs.

Most of these methods simply loop through the coordinated PKs, calling their respective methods.

pk-mpc-spec

  • “PKs order[Array(string)] Provide a specific order to the sub-PKs; most methods loop over all sub-PKs, and will call the sub-PK method in this order.

INCLUDES:

  • [pk-spec] Is a PK.

Strong MPC#

src/physics/ats/src/pks/mpc/strong_mpc.hh

Globally implicit coupling solves all sub-PKs as a single system of equations. This can be completely automated when all PKs are also PK: BDF PKs, using a block-diagonal preconditioner where each diagonal block is provided by its own sub-PK.

“PK type” = “strong MPC

pk-strong-mpc-spec

INCLUDES:

  • [mpc-spec] Is a MPC.

  • [pk-bdf-default-spec] Is a PK: BDF.

Weak MPC#

src/physics/ats/src/pks/mpc/weak_mpc.hh

Noniterative sequential coupling simply calls each PK’s AdvanceStep() method in order.

“PK type” = “weak MPC

pk-weak-mpc-spec

INCLUDES:

  • [mpc-spec] Is a MPC.

Subcycling MPC#

src/physics/ats/src/pks/mpc/mpc_subcycled.hh

A generic MPC that weakly couples N PKs, potentially subcycling any of them.

“PK type” = “subcycling MPC

pk-subcycling-mpc-spec

  • “subcycle[Array(bool)] Array of the same length as sub_pks.

  • “subcycling target timestep [s][double] optional If provided, this target dt is included, setting a ceiling on the largest timestep size and therefore setting a max dt over which we let the sub-PKs step independently without synchronization. This is required if all sub-PKs are being subcycled.

INCLUDES:

  • [mpc-spec] Is a MPC.

Weakly Coupled Subdomains#

src/physics/ats/src/pks/mpc/mpc_weak_subdomain.hh

A weak MPC that couples the same PK across many subdomains. Note that this means that the number of PKs is not known a priori – it depends on a domain set. It may also subcycle all or none of its child PKs.

“PK type” = “domain set weak MPC

pk-domain-set-weak-mpc-spec

IF

  • “subcycle[bool] false Subcycle the sub PKs or not.

THEN

  • “subcycling target timestep [s][double] timestep over which to syncronize the sub PKs.

END

INCLUDES

  • [mpc-spec] Is a MPC.