# proteus.SplitOperator module¶

A class hierarchy for split operator methods.

class proteus.SplitOperator.System[source]
class proteus.SplitOperator.SO_base(modelList, system=<proteus.SplitOperator.System instance>, stepExact=True)[source]

Base class for operating splitting methods for systems.

The base class implements sequential splitting with a fixed time step based on the input parameter default_so.dt_system. If default_so.stepExactSystem is True then the time step will be reduced when needed to match the output times in default_so.tnList, otherwise the output will be the first time step after each step in tnList.

Here each model takes the same fixed time step

converged()[source]
stepExact_system(tExact)[source]
choose_dt_system()[source]
initialize_dt_system(t0, tOut)[source]
updateTimeHistory()[source]
retryModelStep_solverFailure(model)[source]
retryModelStep_errorFailure(model)[source]
ignoreSequenceStepFailure(model)[source]
retrySequence_modelStepFailure()[source]
modelStepTaken(model, t_stepSequence)[source]
sequenceStepTaken(model)[source]
sequenceTaken()[source]
SysNorm(rSys=0)[source]

Compute the maximum discrete residual value from both models

setFromOptions(soOptions)[source]

allow classes to set various numerical parameters

proteus.SplitOperator.Sequential_FixedStep[source]

alias of SO_base

class proteus.SplitOperator.Sequential_tnList(modelList, system=<proteus.SplitOperator.System instance>, stepExact=True)[source]
stepExact_system(tExact)[source]
initialize_dt_system(t0, tOut)[source]
choose_dt_system()[source]
proteus.SplitOperator.Sequential_FixedStep_Simple[source]

alias of Sequential_tnList

class proteus.SplitOperator.Sequential_NonUniformFixedStep(modelList, system=<proteus.SplitOperator.System instance>, stepExact=True)[source]

Just step to system output time levels, allowing models to substep if necessary to system steps

stepExact_system(tExact)[source]
choose_dt_system()[source]
modelStepTaken(model, t_stepSequence)[source]
sequenceTaken()[source]
class proteus.SplitOperator.Sequential_MinModelStep(modelList, system=<proteus.SplitOperator.System instance>, stepExact=True)[source]

Look at the minimum model step and make that the system step as well as all the model steps

Force models to step exactly to each with substepping if necessary,
but this isn’t strictly necessary
converged()[source]
stepExact_system(tExact)[source]
choose_dt_system()[source]
initialize_dt_system(t0, tOut)[source]
class proteus.SplitOperator.Sequential_MinFLCBDFModelStep(modelList, system=<proteus.SplitOperator.System instance>, stepExact=False)[source]

Look at the minimum model step and make that the system step as well as all the model steps

converged()[source]
stepExact_system(tExact)[source]
choose_dt_system()[source]
initialize_dt_system(t0, tOut)[source]
retryModelStep_solverFailure(model)[source]
retryModelStep_errorFailure(model)[source]
ignoreSequenceStepFailure(model)[source]
retrySequence_modelStepFailure()[source]
modelStepTaken(model, t_stepSequence)[source]
sequenceStepTaken(model)[source]
sequenceTaken()[source]
class proteus.SplitOperator.Sequential_MinAdaptiveModelStep(modelList, system=<proteus.SplitOperator.System instance>, stepExact=False)[source]

Look at the minimum model step and make that the system step as well as all the model steps

converged()[source]
stepExact_system(tExact)[source]
choose_dt_system()[source]
initialize_dt_system(t0, tOut)[source]
retryModelStep_solverFailure(model)[source]
retryModelStep_errorFailure(model)[source]
ignoreSequenceStepFailure(model)[source]
retrySequence_modelStepFailure()[source]
modelStepTaken(model, t_stepSequence)[source]
sequenceStepTaken(model)[source]
sequenceTaken()[source]
class proteus.SplitOperator.ISO_fixed_MinAdaptiveModelStep(modelList, system=<proteus.SplitOperator.System instance>, stepExact=False)[source]

Look at the minimum model step and make that the system step as well as all the model steps

converged()[source]
stepExact_system(tExact)[source]
choose_dt_system()[source]
initialize_dt_system(t0, tOut)[source]
retryModelStep_solverFailure(model)[source]
retryModelStep_errorFailure(model)[source]
ignoreSequenceStepFailure(model)[source]
retrySequence_modelStepFailure()[source]
modelStepTaken(model, t_stepSequence)[source]
sequenceStepTaken(model)[source]
sequenceTaken()[source]
class proteus.SplitOperator.Sequential_MinAdaptiveModelStep_SS(modelList, system=<proteus.SplitOperator.System instance>, stepExact=False)[source]

Look at the minimum model step and make that the system step as well as all the model steps

converged()[source]
stepExact_system(tExact)[source]
choose_dt_system()[source]
initialize_dt_system(t0, tOut)[source]
retryModelStep_solverFailure(model)[source]
retryModelStep_errorFailure(model)[source]
ignoreSequenceStepFailure(model)[source]
retrySequence_modelStepFailure()[source]
modelStepTaken(model, t_stepSequence)[source]
sequenceStepTaken(model)[source]
sequenceTaken()[source]
class proteus.SplitOperator.SequentialNotInOrder_MinFLCBDFModelStep(modelList, modelSequenceList=[1], system=<proteus.SplitOperator.System instance>, stepExact=False)[source]

loop through the models in some specified order

stepExact_system(tExact)[source]
choose_dt_system()[source]
initialize_dt_system(t0, tOut)[source]
class proteus.SplitOperator.SequentialNotInOrder_MinAdaptiveModelStep(modelList, modelSequenceList=[1], system=<proteus.SplitOperator.System instance>, stepExact=False)[source]

loop through the models in some specified order

stepExact_system(tExact)[source]
choose_dt_system()[source]
initialize_dt_system(t0, tOut)[source]