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); } } }