Peano
Loading...
Searching...
No Matches
exahype2.solvers.LocalTimeSteppingCodeSnippets.LocalTimeSteppingCodeSnippets Class Reference

Code snippet generator for all subcycling solvers. More...

Inheritance diagram for exahype2.solvers.LocalTimeSteppingCodeSnippets.LocalTimeSteppingCodeSnippets:
Collaboration diagram for exahype2.solvers.LocalTimeSteppingCodeSnippets.LocalTimeSteppingCodeSnippets:

Public Member Functions

 create_abstract_solver_user_declarations (self)
 
 create_abstract_solver_user_definitions (self)
 
 create_abstract_solver_constructor_statements (self)
 
 create_compute_time_step_size (self)
 Within the actual compute kernels, the kernels ask the solver variant how to determine a new field.
 
 create_compute_new_time_step_size (self)
 :: Zero eigenvalues
 
 create_finish_time_step_implementation (self)
 This routine is inserted after we have reduced all global quantities.
 
- Public Member Functions inherited from exahype2.solvers.SolverCodeSnippets.SolverCodeSnippets
 create_start_time_step_implementation (self)
 

Detailed Description

Code snippet generator for all subcycling solvers.

Definition at line 6 of file LocalTimeSteppingCodeSnippets.py.

Member Function Documentation

◆ create_abstract_solver_constructor_statements()

exahype2.solvers.LocalTimeSteppingCodeSnippets.LocalTimeSteppingCodeSnippets.create_abstract_solver_constructor_statements ( self)

◆ create_abstract_solver_user_declarations()

exahype2.solvers.LocalTimeSteppingCodeSnippets.LocalTimeSteppingCodeSnippets.create_abstract_solver_user_declarations ( self)

◆ create_abstract_solver_user_definitions()

exahype2.solvers.LocalTimeSteppingCodeSnippets.LocalTimeSteppingCodeSnippets.create_abstract_solver_user_definitions ( self)

◆ create_compute_new_time_step_size()

exahype2.solvers.LocalTimeSteppingCodeSnippets.LocalTimeSteppingCodeSnippets.create_compute_new_time_step_size ( self)

:: Zero eigenvalues

If you solve non-linear problems, cells can have a zero eigenvalue. It means that nothing happens within this cell. There are two options on the table: You can take the biggest global eigenvalue and march forward using this value. In ExaHyPE 2, this yields a staircase effect if you have larger, regular region, then we have something similar to many stencil codes which then update the cells in the middle again, and then those in the middle again, and so forth.

We can avoid this by making a cell march if an only if one neighbour has advanced. In this case large global areas where nothing happens lag behind.

avoid_staircase_effect: Boolean

discretisation_steps: Integer
See exahype2::discretiseAndTruncateTimeStepSizes() for a description of admissible values and the semantics of the values.

Reimplemented from exahype2.solvers.SolverCodeSnippets.SolverCodeSnippets.

Definition at line 58 of file LocalTimeSteppingCodeSnippets.py.

◆ create_compute_time_step_size()

exahype2.solvers.LocalTimeSteppingCodeSnippets.LocalTimeSteppingCodeSnippets.create_compute_time_step_size ( self)

Within the actual compute kernels, the kernels ask the solver variant how to determine a new field.

const double timeStepSize = ...;

You can remove the const if you want. Anyway, this routine has to build up the right time step size choice.

Reimplemented from exahype2.solvers.SolverCodeSnippets.SolverCodeSnippets.

Definition at line 51 of file LocalTimeSteppingCodeSnippets.py.

◆ create_finish_time_step_implementation()

exahype2.solvers.LocalTimeSteppingCodeSnippets.LocalTimeSteppingCodeSnippets.create_finish_time_step_implementation ( self)

This routine is inserted after we have reduced all global quantities.

These are the quantities with the postfix ThisTimeStep.

Reimplemented from exahype2.solvers.SolverCodeSnippets.SolverCodeSnippets.

Reimplemented in exahype2.solvers.fv.LocalTimeSteppingCodeSnippets.LocalTimeSteppingCodeSnippets.

Definition at line 135 of file LocalTimeSteppingCodeSnippets.py.


The documentation for this class was generated from the following file: