3import exahype2.solvers.FixedSubcyclingTimeSteppingCodeSnippets
9 Code snippet generator for fixed time stepping in the Runge-Kutta schemes
12 def __init__(self, normalised_time_step_size, use_enclave_tasking, remove_accumulation_errors):
13 super( FixedSubcyclingTimeSteppingCodeSnippets, self ).
__init__(remove_accumulation_errors)
22 The outcome is used before we actually roll over the accumulation variables
27 tarch::mpi::Rank::getInstance().isGlobalMaster()
33 predicate +=
"""and (_solverState == SolverState::Primary or _solverState == SolverState::PrimaryAfterGridInitialisation) """
36 if (""" + predicate +
""") {
37 logInfo( "step()", "Solver {{SOLVER_NAME}}:" );
38 logInfo( "step()", "t_{min,global} = " << _minTimeStampThisTimeStep );
39 logInfo( "step()", "t_{max,global} = " << _maxTimeStampThisTimeStep );
40 logInfo( "step()", "t_{min,this-step} = " << _localMinTimeStampThisTimeStep );
41 logInfo( "step()", "t_{max,this-step} = " << _localMaxTimeStampThisTimeStep );
42 if (_minTimeStepSize > _maxTimeStepSize ) {
43 logInfo( "step()", "dt_{min} = <not yet known>" );
44 logInfo( "step()", "dt_{max} = <not yet known>" );
47 logInfo( "step()", "dt_{min} = " << _minTimeStepSizeThisTimeStep );
48 logInfo( "step()", "dt_{max} = " << _maxTimeStepSizeThisTimeStep );
50 logInfo( "step()", "h_{min} = " << _minVolumeH << " (volume size)");
51 logInfo( "step()", "h_{max} = " << _maxVolumeH << " (volume size)" );
52 logInfo( "step()", "#updates = " << _patchUpdates << " (no of patches)" );
60 The superclass takes the admissible cell size and divides it by the
61 maximum eigenvalue. The Finite Volume solvers however operate with
62 patches, i.e. we have to devide by the volume count per axis.
66 assertion( _minVolumeH >= 0.0 );
67 assertion( MaxAdmissibleVolumeH > 0.0 );
68 if (_minVolumeH <= MaxAdmissibleVolumeH) {
Code snippet generator for fixed time stepping in the Runge-Kutta schemes.
create_finish_time_step_implementation(self)
The superclass takes the admissible cell size and divides it by the maximum eigenvalue.
__init__(self, normalised_time_step_size, use_enclave_tasking, remove_accumulation_errors)
create_start_time_step_implementation(self)
The outcome is used before we actually roll over the accumulation variables and other stuff.
_normalised_time_step_size