Skip to content

Local Time Stepping Plan

We could rather quickly implement a local time steppging version a la SeisSol where we store the full space-time face data only for faces of coarse grid cells along mesh resolution transitions.

Steps (in German):

  • Aufbrechen des Extrapolations-Operators (Cell Boundary -> Single Face)
  • Aufbrechen der Face Data Felder. We need one pointer/index per face.
  • Mithilfe meiner Marker fuer gewisse Faces space-time Face Data speichern
  • Den space Prolongationsoperator mit einem space-time Operator ersetzen (Face Prolongation -> "Volume" Prolongation (vorhanden))
  • Counter im State einfuehren und dann entsprechend des Wertes nur bestimmte Levels an* [ ] und ausschalten, ginge mit Hilfe Deiner level Information in den MappingSpecifications
  • Nur am Anfang eines Batches die alte Loesung sichern (implementiert)
  • Batchgroesse entsprechend des aktuellen tiefsten Verfeinerungslevels berechnen
  • Rollback zu Anfang des Batches, falls das Gitter nicht gepasst hat.

Some implementational aspects

Some preparational work has already been done.

  • No changes to the current faceIntegral procedure need to be performed as we already skip the integral where a Leaf cell shares an interface with a Refined ("Parent") cell.

    const int dofsPerFace = getBndFluxSize();
        for (int direction=0; direction<DIMENSIONS; direction++) {
          for (int orientation=0; orientation<2; orientation++) {
            const int faceIndex=2*direction+orientation;
            if ( cellDescription.getFacewiseAugmentationStatus(faceIndex)<MaximumAugmentationStatus ) { // ignore Ancestors
              double* const lFhbnd = static_cast<double*>(cellDescription.getFluctuation()) + dofsPerFace * faceIndex;
              faceIntegral(output,lFhbnd,direction,orientation,0/*implicit conversion*/,0,cellDescription.getSize(),
                           cellDescription.getTimeStepSize(),addToUpdate);
            }
          }
        }
Edited by Ghost User