MAIA bb96820c
Multiphysics at AIA
|
#include <dgcartesiansolver.h>
Classes | |
struct | CellData |
Public Types | |
using | Geom = Geometry< nDim > |
using | CartesianSolver = typename maia::CartesianSolver< nDim, DgCartesianSolver > |
using | Grid = typename CartesianSolver::Grid |
using | GridProxy = typename CartesianSolver::GridProxy |
using | Cell = typename maia::grid::tree::Tree< nDim >::Cell |
Public Types inherited from maia::CartesianSolver< nDim, DgCartesianSolver< nDim, SysEqn > > | |
using | Grid = CartesianGrid< nDim > |
using | GridProxy = typename maia::grid::Proxy< nDim > |
using | Geom = Geometry< nDim > |
using | TreeProxy = maia::grid::tree::TreeProxy< nDim > |
using | Cell = maia::grid::tree::Cell |
Public Member Functions | |
DgCartesianSolver (const MInt solverId, GridProxy &gridProxy_, Geometry< nDim > &geometry_, const MPI_Comm comm) | |
Constructor of the DG solver reads properties and allocates solver resources (as far as they are known at instantiation time). More... | |
~DgCartesianSolver () override | |
Frees resources that were allocated in the constructor and that are not automatically released when the member variables are destroyed. More... | |
void | run () |
Main method to run this solver. More... | |
MInt | getCurrentTimeStep () const override |
void | forceTimeStep (const MFloat dt) |
Force time step externally. More... | |
MFloat | time () const override |
Return the time. More... | |
MInt | noVariables () const override |
Return the number of variables. More... | |
void | loadSampleVariables (MInt timeStep) |
void | getSampleVariables (MInt cellId, const MFloat *&vars) |
void | getSampleVariables (const MInt cellId, std::vector< MFloat > &) |
void | calculateHeatRelease () |
void | getHeatRelease (MFloat *&heatRelease) |
constexpr const Geom & | geometry () const |
Access the solver's geometry. More... | |
const MFloat & | a_coordinate (const MInt cellId, const MInt dim) const |
MInt | a_noCells () const |
MInt | a_hasNeighbor (const MInt cellId, const MInt dir) const |
MInt | a_level (const MInt) const |
void | initSolver () override |
Initialize the solver. More... | |
void | finalizeInitSolver () override |
Finalization of the solver initialization. More... | |
void | cleanUp () override |
Clean up after a simulation run. More... | |
void | preTimeStep () override |
Perform pre-time-step operations, e.g. set new dt if required. More... | |
MBool | solutionStep () override |
Perform one Runge-Kutta step/stage. More... | |
void | postTimeStep () |
Perform post-time-step operations, e.g. advance time, error analysis. More... | |
MBool | solverConverged () |
void | saveSolverSolution (const MBool forceOutput, const MBool finalTimeStep) override |
Save the solver solution, i.e. write solution files and sampling/slice output. More... | |
void | writeRestartFile (const MBool writeRestart, const MBool writeBackup, const MString gridFileName, MInt *recalcIdTree) override |
Write a restart file. More... | |
MBool | prepareRestart (MBool, MBool &) override |
Return true if the solver wants to write a restart file. More... | |
virtual void | reIntAfterRestart (MBool) |
void | resizeGridMap () |
Swap the given cells. More... | |
void | swapProxy (const MInt cellId0, const MInt cellId1) |
Swap the given cells. More... | |
void | prepareAdaptation () override |
prepare adaptation for split adaptation before the adaptation loop More... | |
void | setSensors (std::vector< std::vector< MFloat > > &NotUsed(sensors), std::vector< MFloat > &NotUsed(sensorWeight), std::vector< std::bitset< 64 > > &NotUsed(sensorCellFlag), std::vector< MInt > &NotUsed(sensorSolverId)) override |
void | postAdaptation () override |
post adaptation for split adaptation within the adaptation loop More... | |
void | finalizeAdaptation () override |
finalize adaptation for split sadptation after the adaptation loop More... | |
MBool | step (const MFloat externalDt=-std::numeric_limits< MFloat >::infinity(), const MBool substep=false) |
Advance the solution by one time step. More... | |
MFloat | calcTimeStep () |
Calculate the next time step. More... | |
MInt | getCellIdByIndex (const MInt index) |
Return cell id belonging to an element id/index. More... | |
MInt | getIdAtPoint (const MFloat *point, const MBool globalUnique=false) |
Return the element id containing a given point. More... | |
void | calcSamplingVarAtPoint (const MFloat *point, const MInt elementId, const MInt sampleVarId, MFloat *state, const MBool interpolate) override |
Calculate the state vector at a given point and for the specified sampling variable. More... | |
void | getSolverSamplingProperties (std::vector< MInt > &samplingVarIds, std::vector< MInt > &noSamplingVars, std::vector< std::vector< MString > > &samplingVarNames, const MString featureName="") override |
Return sampling properties for the DG solver. More... | |
virtual void | initSolverSamplingVariables (const std::vector< MInt > &NotUsed(varIds), const std::vector< MInt > &NotUsed(noSamplingVars)) |
virtual void | initInterpolationForCell (const MInt NotUsed(cellId)) |
virtual void | calcSamplingVariables (const std::vector< MInt > &NotUsed(varIds), const MBool NotUsed(exchange)) |
MInt | noInternalCells () const override |
Return the number of internal cells within this solver. More... | |
void | resetSolver () override |
Reset solver (for load balancing) More... | |
void | setCellWeights (MFloat *solverCellWeight) override |
Set cell weights with constant weighting factor weightPerNode. More... | |
MInt | noLoadTypes () const override |
Return the number of DG load types. More... | |
void | getDefaultWeights (MFloat *weights, std::vector< MString > &names) const |
Return the default weights for all load quantities. More... | |
void | getLoadQuantities (MInt *const loadQuantities) const override |
Return the cumulative load quantities on this domain. More... | |
MFloat | getCellLoad (const MInt cellId, const MFloat *const weights) const override |
Return the load of a single cell (given computational weights). More... | |
void | balance (const MInt *const NotUsed(noCellsToReceiveByDomain), const MInt *const NotUsed(noCellsToSendByDomain), const MInt *const NotUsed(targetDomainsByCell), const MInt NotUsed(oldNoCells)) override |
Perform load balancing. More... | |
MBool | hasSplitBalancing () const override |
Return if load balancing for solver is split into multiple methods or implemented in balance() More... | |
void | balancePre () override |
Reinitialize solver prior to setting solution data in DLB. More... | |
void | balancePost () override |
Reinitialize solver after setting solution data. More... | |
void | finalizeBalance () override |
void | localToGlobalIds () override |
Change local into global ids. More... | |
void | globalToLocalIds () override |
Change global into local ids. More... | |
MInt | noCellDataDlb () const override |
Methods to inquire solver data information. More... | |
MInt | cellDataTypeDlb (const MInt dataId) const override |
Get data type of cell data. More... | |
MInt | cellDataSizeDlb (const MInt dataId, const MInt cellId) override |
Return data size of cell data. More... | |
template<typename dataType > | |
void | getCellDataDlb_ (const MInt dataId, const MInt oldNoCells, const MInt *const bufferIdToCellId, dataType *const data) |
void | getCellDataDlb (const MInt dataId, const MInt oldNoCells, const MInt *const bufferIdToCellId, MInt *const data) override |
void | getCellDataDlb (const MInt dataId, const MInt oldNoCells, const MInt *const bufferIdToCellId, MFloat *const data) override |
template<typename dataType > | |
void | setCellDataDlb_ (const MInt dataId, const dataType *const data) |
void | setCellDataDlb (const MInt dataId, const MInt *const data) override |
void | setCellDataDlb (const MInt dataId, const MFloat *const data) override |
void | getGlobalSolverVars (std::vector< MFloat > &NotUsed(globalFloatVars), std::vector< MInt > &NotUsed(globalIntVars)) override |
Get global solver variables that need to be communicated for DLB (same on each domain) More... | |
void | setGlobalSolverVars (std::vector< MFloat > &NotUsed(globalFloatVars), std::vector< MInt > &NotUsed(globalIdVars)) override |
Set global solver variables for DLB (same on each domain) More... | |
MInt | noSolverTimers (const MBool allTimings) override |
void | getSolverTimings (std::vector< std::pair< MString, MFloat > > &solverTimings, const MBool allTimings) override |
Get solver timings. More... | |
void | getDomainDecompositionInformation (std::vector< std::pair< MString, MInt > > &domainInfo) override |
Return decomposition information, i.e. number of local elements,... More... | |
template<typename DataType > | |
void | getCellDataDlb_ (const MInt dataId, const MInt oldNoCells, const MInt *const bufferIdToCellId, DataType *const data) |
Get solver cell (element) data for load balancing. More... | |
template<typename DataType > | |
void | setCellDataDlb_ (const MInt dataId, const DataType *const data) |
Set solver cell (element) data. More... | |
Public Member Functions inherited from maia::CartesianSolver< nDim, DgCartesianSolver< nDim, SysEqn > > | |
CartesianSolver (const MInt solverId, GridProxy &gridProxy_, const MPI_Comm comm, const MBool checkActive=false) | |
MInt | minLevel () const |
Read-only accessors for grid data. More... | |
MInt | maxLevel () const |
MInt | maxNoGridCells () const |
MInt | maxRefinementLevel () const |
MInt | maxUniformRefinementLevel () const |
MInt | noNeighborDomains () const |
MInt | neighborDomain (const MInt id) const |
MLong | domainOffset (const MInt id) const |
MInt | noHaloLayers () const |
MInt | noHaloCells (const MInt domainId) const |
MInt | haloCellId (const MInt domainId, const MInt cellId) const |
MInt | noWindowCells (const MInt domainId) const |
MInt | windowCellId (const MInt domainId, const MInt cellId) const |
MString | gridInputFileName () const |
MFloat | reductionFactor () const |
MFloat | centerOfGravity (const MInt dir) const |
MInt | neighborList (const MInt cellId, const MInt dir) const |
const MLong & | localPartitionCellGlobalIds (const MInt cellId) const |
MLong | localPartitionCellOffsets (const MInt index) const |
MInt | noMinCells () const |
MInt | minCell (const MInt id) const |
const MInt & | haloCell (const MInt domainId, const MInt cellId) const |
const MInt & | windowCell (const MInt domainId, const MInt cellId) const |
MBool | isActive () const override |
constexpr GridProxy & | grid () const |
GridProxy & | grid () |
virtual void | sensorDerivative (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorDivergence (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorTotalPressure (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorEntropyGrad (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorEntropyQuot (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorVorticity (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorInterface (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
void | sensorLimit (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt, std::function< MFloat(MInt)>, const MFloat, const MInt *, const MBool, const MBool allowCoarsening=true) |
simple sensor to apply a limit for a value More... | |
void | sensorSmooth (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
sensor to smooth level jumps NOTE: only refines additional cells to ensure a smooth level transition this requires that all other sensors are frozen i.e. no refine/coarse sensors set! More... | |
void | sensorBand (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
This sensor generates a max refinement band around the cells with max refinement level. In order for it to work, the property addedAdaptationSteps has to be equal to /maxRefinementLevel() - minLevel()/. This sensor also ensures a smooth transition between levels. Do not use together with sensorSmooth. More... | |
virtual void | sensorMeanStress (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorParticle (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorSpecies (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
virtual void | sensorPatch (std::vector< std::vector< MFloat > > &sensor, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) |
virtual void | sensorCutOff (std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
void | saveSensorData (const std::vector< std::vector< MFloat > > &sensors, const MInt &level, const MString &gridFileName, const MInt *const recalcIds) override |
Saves all sensor values for debug/tunig purposes. More... | |
void | assertValidGridCellId (const MInt) const |
MLong | c_parentId (const MInt cellId) const |
Returns the grid parent id of the cell cellId . More... | |
MLong | c_neighborId (const MInt cellId, const MInt dir) const |
Returns the grid neighbor id of the grid cell cellId dir . More... | |
MInt | c_noCells () const |
MInt | c_level (const MInt cellId) const |
MLong | c_globalGridId (const MInt cellId) |
void | exchangeData (T *data, const MInt dataBlockSize=1) |
Exchange memory in 'data' assuming a solver size of 'dataBlockSize' per cell. More... | |
void | exchangeLeafData (std::function< T &(MInt, MInt)> data, const MInt noDat=1) |
Blocking exchange memory in 'data' assuming a solver size of 'dataBlockSize' per cell NOTE: exchange is only performed on leaf-cells and leaf-NeighborDomains Assumes, that updateLeafCellExchange has been called in the proxy previously! More... | |
void | exchangeSparseLeafValues (G getData, S setData, const MInt dataSize, M cellMapping) |
Exchange of sparse data structures on max Level. More... | |
void | exchangeAzimuthalPer (T *data, MInt dataBlockSize=1, MInt firstBlock=0) |
Exchange of sparse data structures on max Level. More... | |
void | collectVariables (T *variablesIn, ScratchSpace< T > &variablesOut, const std::vector< MString > &variablesNameIn, std::vector< MString > &variablesNameOut, const MInt noVars, const MInt noCells, const MBool reverseOrder=false) |
generalised helper function for writing restart files! This is necessary for example if the minLevel shall be raised at the new restart! More... | |
void | collectVariables (T **variablesIn, ScratchSpace< T > &variablesOut, const std::vector< MString > &variablesNameIn, std::vector< MString > &variablesNameOut, const MInt noVars, const MInt noCells) |
generalised helper function for writing restart files! This is necessary for example if the minLevel shall be raised at the new restart! More... | |
void | saveGridFlowVars (const MChar *fileName, const MChar *gridFileName, const MInt noTotalCells, const MInt noInternal, MFloatScratchSpace &dbVariables, std::vector< MString > &dbVariablesName, MInt noDbVars, MIntScratchSpace &idVariables, std::vector< MString > &idVariablesName, MInt noIdVars, MFloatScratchSpace &dbParameters, std::vector< MString > &dbParametersName, MIntScratchSpace &idParameters, std::vector< MString > &idParametersName, MInt *recalcIds, MFloat time) |
This function writes the parallel Netcdf cartesian grid cell based solution/restart file currently used in PostData, LPT and LS solvers! More... | |
void | collectParameters (T, ScratchSpace< T > &, const MChar *, std::vector< MString > &) |
This function collects a single parameters for the massivley parallel IO functions. More... | |
void | calcRecalcCellIdsSolver (const MInt *const recalcIdsTree, MInt &noCells, MInt &noInternalCellIds, std::vector< MInt > &recalcCellIdsSolver, std::vector< MInt > &reorderedCellIds) |
Derive recalc cell ids of the solver and reordered cell ids. More... | |
Public Member Functions inherited from Solver | |
MString | getIdentifier (const MBool useSolverId=false, const MString preString="", const MString postString="_") |
virtual | ~Solver ()=default |
virtual MInt | noInternalCells () const =0 |
Return the number of internal cells within this solver. More... | |
virtual MFloat | time () const =0 |
Return the time. More... | |
virtual MInt | noVariables () const |
Return the number of variables. More... | |
virtual void | getDimensionalizationParams (std::vector< std::pair< MFloat, MString > > &) const |
Return the dimensionalization parameters of this solver. More... | |
void | updateDomainInfo (const MInt domainId, const MInt noDomains, const MPI_Comm mpiComm, const MString &loc) |
Set new domain information. More... | |
virtual MFloat & | a_slope (const MInt, MInt const, const MInt) |
virtual MBool | a_isBndryCell (const MInt) const |
virtual MFloat & | a_FcellVolume (MInt) |
virtual MInt | getCurrentTimeStep () const |
virtual void | accessSampleVariables (MInt, MFloat *&) |
virtual void | getSampleVariableNames (std::vector< MString > &NotUsed(varNames)) |
virtual MBool | a_isBndryGhostCell (MInt) const |
virtual void | saveCoarseSolution () |
virtual void | getSolverSamplingProperties (std::vector< MInt > &NotUsed(samplingVarIds), std::vector< MInt > &NotUsed(noSamplingVars), std::vector< std::vector< MString > > &NotUsed(samplingVarNames), const MString NotUsed(featureName)="") |
virtual void | initSolverSamplingVariables (const std::vector< MInt > &NotUsed(varIds), const std::vector< MInt > &NotUsed(noSamplingVars)) |
virtual void | calcSamplingVariables (const std::vector< MInt > &NotUsed(varIds), const MBool NotUsed(exchange)) |
virtual void | calcSamplingVarAtPoint (const MFloat *NotUsed(point), const MInt NotUsed(id), const MInt NotUsed(sampleVarId), MFloat *NotUsed(state), const MBool NotUsed(interpolate)=false) |
virtual void | balance (const MInt *const NotUsed(noCellsToReceiveByDomain), const MInt *const NotUsed(noCellsToSendByDomain), const MInt *const NotUsed(targetDomainsByCell), const MInt NotUsed(oldNoCells)) |
Perform load balancing. More... | |
virtual MBool | hasSplitBalancing () const |
Return if load balancing for solver is split into multiple methods or implemented in balance() More... | |
virtual void | balancePre () |
virtual void | balancePost () |
virtual void | finalizeBalance () |
virtual void | resetSolver () |
Reset the solver/solver for load balancing. More... | |
virtual void | cancelMpiRequests () |
Cancel open mpi (receive) requests in the solver (e.g. due to interleaved execution) More... | |
virtual void | setCellWeights (MFloat *) |
Set cell weights. More... | |
virtual MInt | noLoadTypes () const |
virtual void | getDefaultWeights (MFloat *NotUsed(weights), std::vector< MString > &NotUsed(names)) const |
virtual void | getLoadQuantities (MInt *const NotUsed(loadQuantities)) const |
virtual MFloat | getCellLoad (const MInt NotUsed(cellId), const MFloat *const NotUsed(weights)) const |
virtual void | limitWeights (MFloat *NotUsed(weights)) |
virtual void | localToGlobalIds () |
virtual void | globalToLocalIds () |
virtual MInt | noCellDataDlb () const |
Methods to inquire solver data information. More... | |
virtual MInt | cellDataTypeDlb (const MInt NotUsed(dataId)) const |
virtual MInt | cellDataSizeDlb (const MInt NotUsed(dataId), const MInt NotUsed(cellId)) |
virtual void | getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MInt *const NotUsed(data)) |
virtual void | getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MLong *const NotUsed(data)) |
virtual void | getCellDataDlb (const MInt NotUsed(dataId), const MInt NotUsed(oldNoCells), const MInt *const NotUsed(bufferIdToCellId), MFloat *const NotUsed(data)) |
virtual void | setCellDataDlb (const MInt NotUsed(dataId), const MInt *const NotUsed(data)) |
virtual void | setCellDataDlb (const MInt NotUsed(dataId), const MLong *const NotUsed(data)) |
virtual void | setCellDataDlb (const MInt NotUsed(dataId), const MFloat *const NotUsed(data)) |
virtual void | getGlobalSolverVars (std::vector< MFloat > &NotUsed(globalFloatVars), std::vector< MInt > &NotUsed(globalIntVars)) |
virtual void | setGlobalSolverVars (std::vector< MFloat > &NotUsed(globalFloatVars), std::vector< MInt > &NotUsed(globalIdVars)) |
void | enableDlbTimers () |
void | reEnableDlbTimers () |
void | disableDlbTimers () |
MBool | dlbTimersEnabled () |
void | startLoadTimer (const MString name) |
void | stopLoadTimer (const MString &name) |
void | stopIdleTimer (const MString &name) |
void | startIdleTimer (const MString &name) |
MBool | isLoadTimerRunning () |
virtual MInt | noSolverTimers (const MBool NotUsed(allTimings)) |
virtual void | getSolverTimings (std::vector< std::pair< MString, MFloat > > &NotUsed(solverTimings), const MBool NotUsed(allTimings)) |
virtual void | getDomainDecompositionInformation (std::vector< std::pair< MString, MInt > > &NotUsed(domainInfo)) |
void | setDlbTimer (const MInt timerId) |
virtual void | prepareAdaptation (std::vector< std::vector< MFloat > > &, std::vector< MFloat > &, std::vector< std::bitset< 64 > > &, std::vector< MInt > &) |
virtual void | reinitAfterAdaptation () |
virtual void | prepareAdaptation () |
prepare adaptation for split adaptation before the adaptation loop More... | |
virtual void | setSensors (std::vector< std::vector< MFloat > > &, std::vector< MFloat > &, std::vector< std::bitset< 64 > > &, std::vector< MInt > &) |
set solver sensors for split adaptation within the adaptation loop More... | |
virtual void | saveSensorData (const std::vector< std::vector< MFloat > > &, const MInt &, const MString &, const MInt *const) |
virtual void | postAdaptation () |
post adaptation for split adaptation within the adaptation loop More... | |
virtual void | finalizeAdaptation () |
finalize adaptation for split sadptation after the adaptation loop More... | |
virtual void | refineCell (const MInt) |
Refine the given cell. More... | |
virtual void | removeChilds (const MInt) |
Coarsen the given cell. More... | |
virtual void | removeCell (const MInt) |
Remove the given cell. More... | |
virtual void | swapCells (const MInt, const MInt) |
Swap the given cells. More... | |
virtual void | swapProxy (const MInt, const MInt) |
Swap the given cells. More... | |
virtual MInt | cellOutside (const MFloat *, const MInt, const MInt) |
Check whether cell is outside the fluid domain. More... | |
virtual void | resizeGridMap () |
Swap the given cells. More... | |
virtual MBool | prepareRestart (MBool, MBool &) |
Prepare the solvers for a grid-restart. More... | |
virtual void | reIntAfterRestart (MBool) |
MPI_Comm | mpiComm () const |
Return the MPI communicator used by this solver. More... | |
virtual MInt | domainId () const |
Return the domainId (rank) More... | |
virtual MInt | noDomains () const |
virtual MBool | isActive () const |
void | setSolverStatus (const MBool status) |
MBool | getSolverStatus () |
Get the solver status indicating if the solver is currently active in the execution recipe. More... | |
MString | testcaseDir () const |
Return the testcase directory. More... | |
MString | outputDir () const |
Return the directory for output files. More... | |
MString | restartDir () const |
Return the directory for restart files. More... | |
MString | solverMethod () const |
Return the solverMethod of this solver. More... | |
MString | solverType () const |
Return the solverType of this solver. More... | |
MInt | restartInterval () const |
Return the restart interval of this solver. More... | |
MInt | restartTimeStep () const |
Return the restart interval of this solver. More... | |
MInt | solverId () const |
Return the solverId. More... | |
MBool | restartFile () |
MInt | readSolverSamplingVarNames (std::vector< MString > &varNames, const MString featureName="") const |
Read sampling variables names, store in vector and return the number of sampling variables. More... | |
virtual MBool | hasRestartTimeStep () const |
virtual MBool | forceAdaptation () |
virtual void | preTimeStep ()=0 |
virtual void | postTimeStep ()=0 |
virtual void | initSolver ()=0 |
virtual void | finalizeInitSolver ()=0 |
virtual void | saveSolverSolution (const MBool NotUsed(forceOutput)=false, const MBool NotUsed(finalTimeStep)=false)=0 |
virtual void | cleanUp ()=0 |
virtual MBool | solutionStep () |
virtual void | preSolutionStep (MInt) |
virtual MBool | postSolutionStep () |
virtual MBool | solverConverged () |
virtual void | getInterpolatedVariables (MInt, const MFloat *, MFloat *) |
virtual void | loadRestartFile () |
virtual MInt | determineRestartTimeStep () const |
virtual void | writeRestartFile (MBool) |
virtual void | writeRestartFile (const MBool, const MBool, const MString, MInt *) |
virtual void | setTimeStep () |
virtual void | implicitTimeStep () |
virtual void | prepareNextTimeStep () |
Private Types | |
using | ElementCollector = maia::dg::collector::ElementCollector< nDim, SysEqn > |
using | HElementCollector = maia::dg::collector::HElementCollector< nDim, SysEqn > |
using | SurfaceCollector = maia::dg::collector::SurfaceCollector< nDim, SysEqn > |
using | Timers = maia::dg::Timers_ |
using | BC = typename DgBoundaryConditionFactory< nDim, SysEqn >::ReturnType |
Private Member Functions | |
Geom & | geometry () |
Access the solver's geometry (non-const version) More... | |
void | initDgCartesianSolver () |
Initializes basic properties of the solver. More... | |
void | initTimers () |
Initialize all solver-wide timers and start the solver timer. More... | |
void | setNumericalProperties () |
Reads properties associated with the numerical method. More... | |
void | setInputOutputProperties () |
void | allocateAndInitSolverMemory () |
Allocates main memory resources. More... | |
void | initGridMap () |
Determine grid-to-grid mapping. More... | |
void | loadGridMap (const MString &gridMapFileName) |
Load previously created grid map. More... | |
void | checkGridMap (const MString &donorGridFileName) |
Perform some sanity checks on loaded grid map. More... | |
void | initElements () |
Initialize all elements by iterating over all cells and creating an element for each internal leaf cell. More... | |
MBool | needElementForCell (const MInt cellId) |
Return true if element is needed for cell, false otherwise. More... | |
MInt | calculateNeededNoSurfaces () |
Determine the number of surfaces that need to be created on this domain. More... | |
MBool | pointIsInside (const MFloat *const coordinates) |
Check if point is inside the computational domain. More... | |
void | createElement (const MInt cellId) |
Create element for cell with id cellId . More... | |
void | initPolynomialDegree () |
Calculate and set initial polynomial degree and number of nodes in all elements. More... | |
void | initInterpolation () |
Calculates necessary coefficients for interpolation and stores them once for the whole solver. More... | |
void | initNodeCoordinates () |
Calculates the coordinates of the integration nodes within each element. More... | |
void | initJacobian () |
Calculates the inverse Jacobian for each element. More... | |
void | checkCellProperties () |
Check all relevant bit properties in the cells. More... | |
std::array< MInt, 2 *nDim > | getBoundaryConditionIds (const MInt cellId) |
Determine if element is boundary is cut by geometry elements and return corresponding boundary condition ids. More... | |
void | initSurfaces () |
Create for all elements and directions surfaces if necessary. More... | |
MInt | initBoundarySurface (const MInt elementId, const MInt dir) |
Check if the surface of the element in the given direction is a boundary surface. If it is init, a boundary surface. More... | |
MInt | initInnerSurface (const MInt elementId, const MInt dir) |
Check if the surface of the element in the given direction is an inner surface without h/p-refinement. If it is, init an inner surface. More... | |
MInt | initMpiSurface (const MInt elementId, const MInt dir) |
Check if the surface of the element in the given direction is a MPI surface. If it is, init a MPI surface. More... | |
MBool | hasSurface (const MInt elementId, const MInt dir) |
Check if a surface exists for the element in the given direction. More... | |
MInt | createSurface (const MInt elementId, const MInt dir, MInt nghbrId=-1) |
void | calcSurfaceNodeCoordinates (const MInt surfaceId) |
void | calcElementNodeCoordinates (const MInt elementId) |
Calculates the coordinates of the integration nodes within the element. More... | |
void | initMpiExchange () |
void | updateNodeVariables () |
Update all node variables at the surfaces. More... | |
void | extendNodeVariables () |
Extends nodeVars from given planes to given directions. More... | |
void | extendNodeVariablesSingleDirection (const MInt extendDir, const MFloat extendOffset, const MFloat extendLimit) |
Set nodeVars upstream of given plane to values of elements in plane. More... | |
void | updateNodeVariablesSingleElement (const MInt elementId, const MInt extendDir, MIntTensor hForwardSurfaceId, MIntTensor hReverseSurfaceId, std::vector< MBool > &cellHasUpdatedMeans, std::vector< MInt > &SurfaceWantsToMPISend, MBool &noMoreUpdates) |
Sets nodeVars of an element to values on the surface opposite to extendDir. More... | |
void | initSimulationStatistics () |
void | initSolverObjects () |
Initializes the solver. This must be called before using any of the discretization methods, and should be followed (after the simulation run) by a call to cleanUp(). More... | |
void | initData () |
Initialize solver data, i.e. set initial conditions or load restart file. More... | |
void | initMainLoop () |
Perform all operations that prepare the execution of the main loop. More... | |
MInt | getLevelByElementId (const MInt elementId) |
MInt | getLevelOfDirectNeighborCell (const MInt cellId, const MInt dir) |
MBool | hasNeighborCell (const MInt elementId, const MInt dir) |
MBool | isMpiSurface (const MInt id) const |
Return true if a surface is a MPI surface. More... | |
void | updateWeightsAndWorkloads () |
void | savePartitionCellWorkloads () |
void | writeEOC () |
MInt | getHElementId (const MInt elementId) const |
Return h-element id of a given element (if it exists). More... | |
void | finalizeMpiExchange () |
virtual void | initialCondition () |
Set the initial condition in all elements. More... | |
void | outputInitSummary () |
Print initialization summary to user and m_log. More... | |
void | saveSolutionFile () |
Saves all available data to disk. More... | |
void | saveSolutionFile (const MString &suffix) |
Saves all available data to disk. More... | |
virtual void | saveRestartFile () |
Saves a file to disk with all information that is necessary to restart the calculations from here. More... | |
void | loadRestartFile () override |
Load restart file with all information that is necessary to restart the calculations from here. More... | |
void | saveNodalData (const MString &fileNameBase, const MInt noVars, const std::vector< MString > &varNames, const MFloat *const data) const |
Save nodal data to file. More... | |
void | saveNodeVarsFile () |
Save node variables to file. More... | |
void | loadNodeVarsFile () |
Load node variables from file. More... | |
MString | getRestartFileName (const MInt timeStep, const MInt useNonSpecifiedRestartFile) |
Return name of a restart file for the given time step. More... | |
BC | make_bc (MInt bcId) |
void | calcDgTimeDerivative (const MFloat t, const MFloat tStage) |
Main routine to calculate the discontinuous Galerkin time derivative. After this method was called, m_rightHandSide contains the time derivative of the conservative variables at the integration points. More... | |
void | prolongToSurfaces () |
Extrapolate the solution from inside the elements to the surfaces. More... | |
void | prolongToSurfaces (const MInt begin, const MInt end) |
Extrapolate the solution in the given range of elements from the elements to the surfaces. More... | |
void | applyForwardProjection () |
void | calcVolumeIntegral () |
Calculate the volume integral for all elements and update m_rightHandSide. More... | |
template<class F > | |
void | calcVolumeIntegral (const MInt noElements, ElementCollector &elem, F &fluxFct) |
Calculate the volume integral for all elements and update m_rightHandSide. More... | |
void | calcBoundarySurfaceFlux (MFloat t) |
Calculate the numerical flux on the boundary surfaces and update m_flux. More... | |
void | calcInnerSurfaceFlux () |
Calculate the numerical flux on the internal surfaces and update m_flux. More... | |
void | calcMpiSurfaceFlux () |
Calculate the numerical flux on the MPI surfaces and update m_flux. More... | |
template<class F > | |
void | calcRegularSurfaceFlux (const MInt begin, const MInt end, SurfaceCollector &surf, F &riemannFct) |
Calculate the numerical flux for a regular (i.e. inner or MPI) surface. More... | |
void | calcSurfaceIntegral () |
Calculate the surface integral for all faces of element and update dU/dt. More... | |
void | calcSurfaceIntegral (const MInt begin, const MInt end, ElementCollector &elem, SurfaceCollector &surf, HElementCollector &helem, const MInt noHElements) |
Calculate the surface integral for all faces of each element and update dU/dt. More... | |
void | applySurfaceIntegral (MFloat *rhs, const MInt polyDeg, const MInt noNodes1D, const MInt srfcId, const MInt side, const MFloat *flux, SurfaceCollector &surf) |
Calculate the surface integral for a face of an element and update dU/dt. More... | |
void | applyJacobian () |
Adds the negative of the inverse Jacobian to the time derivative. More... | |
void | applyJacobian (const MInt noElements, ElementCollector &elem) |
Adds the negative of the inverse Jacobian to the time derivative. More... | |
void | calcSourceTerms (MFloat t) |
Calculates the source terms for each node and adds them to the time derivative of the conservative variables. More... | |
template<class F > | |
void | calcSourceTerms (MFloat t, const MInt noElements, ElementCollector &elem, F &sourceFct) |
Calculates the source terms for each node and adds them to the time derivative of the conservative variables. More... | |
void | applyExternalSourceTerms (const MFloat time) |
Add the external coupling source terms to the right hand side. More... | |
MBool | isMpiRoot () const |
Return true if this is the root rank of the solver MPI communicator. More... | |
MBool | hasMpiExchange () const |
void | startMpiSurfaceExchange () |
Start sending the window-side data and start receiving the halo-side data for all MPI surfaces. More... | |
void | finishMpiSurfaceExchange () |
Finish sending the window-side data and finish receiving the halo-side data for all MPI surfaces. More... | |
void | cancelMpiRequests () override |
Cancel open MPI (receive) requests. More... | |
void | timeStepRk (const MFloat t, const MFloat dt, const MInt substep=-1) |
Time integration using the five-stage fourth-order low-storage Runge-Kutta scheme as described in the book by Hesthaven and Warburton (2008), p. 64, Eqn. 3.5. More... | |
void | subTimeStepRk (const MFloat dt, const MInt stage, const MInt totalSize, const MFloat *const rhs, MFloat *const variables, MFloat *const timeIntStorage) |
Perform one Runge-Kutta substep on the given elements. More... | |
void | analyzeTimeStep (MFloat t, MFloat runTimeRelative, MFloat runTimeTotal, MInt timeStep, MFloat dt) |
Calculates and prints the L^2 and L^inf errors (using calcErrorNorms()) for the current time. More... | |
void | calcErrorNorms (const MFloat t, std::vector< MFloat > &L2Error, std::vector< MFloat > &LInfError, std::vector< MFloat > &L2ErrLocal, std::vector< MFloat > &LInfErrLocal) |
Calculate the L^2 and L^infinity error norms at a given time. The error is calculated in comparison to the initial condition. More... | |
virtual void | resetRHS () |
Reset the time derivative of the conservative variables to zero. More... | |
void | resetExternalSources () |
void | resetBuffer (const MInt totalSize, MFloat *const buffer) |
Reset the given buffer to zero. More... | |
MInt | getElementIdAtPoint (const MFloat *point, MBool globalUnique=false) |
returns the elementId of a element containing a given point More... | |
MBool | calcStateAtPoint (const MFloat *point, MFloat *state) |
returns the cellId of a cell containing a given point More... | |
void | calcStateAtPoint (const MFloat *point, const MInt elementId, MFloat *state) |
Calculate the node variables at a given point in an element. More... | |
void | calcStateAtPoint (const MFloat *point, const MInt elementId, const MInt noVars, const MFloat *const u, MFloat *state) |
Calculates the state vector at a given Point. More... | |
DgSponge< nDim, SysEqn > & | sponge () |
MBool | useSponge () const |
void | initMortarProjections () |
Calculate all necessary mortar projection matrices. More... | |
void | initPrefinement () |
Set polynomial degree for static p-refinement case. More... | |
template<MBool forward, MInt noVars> | |
void | calcMortarProjectionH (const MInt srfcId, const MInt dir, MFloat *source, MFloat *destination, ElementCollector &elem, SurfaceCollector &surf) |
Calculate the h-refinement mortar projection. More... | |
template<MBool forward, MInt noVars> | |
void | calcMortarProjectionP (const MInt srfcId, const MInt dir, MFloat *source, MFloat *destination, ElementCollector &elem, SurfaceCollector &surf) |
Calculate the p-refinement mortar projection. More... | |
template<MBool forward, MInt noVars> | |
void | calcMortarProjection (const MInt srfcId, const MInt dir, MFloat *source, MFloat *destination, ElementCollector &elem, SurfaceCollector &surf) |
template<MBool forward> | |
MFloat * | mortarP (const MInt sourcePolyDeg, const MInt targetPolyDeg) |
template<MBool forward> | |
MFloat * | mortarH (const MInt polyDeg, const MInt position) |
void | exchangeMpiSurfacePolyDeg () |
void | adaptiveRefinement (const MInt timeStep) |
Apply adaptive refinement (right now: only p-refinement) More... | |
void | calcErrorEstimate (std::vector< MFloat > &errorEstimate) |
Calculate error estimate for adaptive hp-refinement. More... | |
void | interpolateElement (const MInt elementId, const MInt newPolyDeg) |
Interpolate an element to a different polynomial degree. More... | |
MBool | hasAdaptivePref () const |
Return true if adaptive hp-refinement is activated. More... | |
MBool | needHElementForCell (const MInt cellId) |
Return true if h-element is needed for cell, false otherwise. More... | |
void | createHElement (const MInt cellId) |
Create h-element for cell with id cellId . More... | |
void | initHElements () |
Initialize all helements by iterating over all cells and creating an element for each coarse cell in a h-refined grid. More... | |
MInt | createHMPISurfaces (const MInt elementId, const MInt dir) |
MBool | hasPref () const |
Return true if p-refinement is set. More... | |
MBool | isAdaptationTimeStep (const MInt timeStep) const |
Return if the given timestep is an adaptation timestep. More... | |
MInt | noDgCartesianSolverCellData () const |
MInt | noBcSolverCellData () const |
Static Private Attributes | |
static const std::array< MInt, CellData::count > | s_cellDataTypeDlb = {{MINT, MINT, MINT, MFLOAT, MFLOAT}} |
Friends | |
class | DgBoundaryCondition< nDim, SysEqn > |
template<MInt nDim_, class CouplingX > | |
class | CouplingDgApe |
class | DgCcAcousticPerturb< nDim, SysEqn > |
class | CouplingDg< nDim, SysEqn > |
class | DgSlices< nDim, SysEqn > |
class | maia::CartesianSolver< nDim, DgCartesianSolver< nDim, SysEqn > > |
template<MInt nDim_, class ppType > | |
class | PostProcessing |
Additional Inherited Members | |
Public Attributes inherited from Solver | |
std::set< MInt > | m_freeIndices |
MBool | m_singleAdaptation = false |
MBool | m_splitAdaptation = true |
MBool | m_saveSensorData = false |
Protected Types inherited from maia::CartesianSolver< nDim, DgCartesianSolver< nDim, SysEqn > > | |
using | fun = void(CartesianSolver< nDim, DgCartesianSolver< nDim, SysEqn > >::*)(std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
Protected Member Functions inherited from maia::CartesianSolver< nDim, DgCartesianSolver< nDim, SysEqn > > | |
void | identifyBoundaryCells (MBool *const isInterface, const std::vector< MInt > &bndCndIds=std::vector< MInt >()) |
void | identifyBoundaryCells () |
MBool | cellIsOnGeometry (MInt cellId, Geometry< nDim > *geom) |
checks whether a cell lies on a certain geometry copied the essential part from identifyBoundaryCells More... | |
void | setBoundaryDistance (const MBool *const interfaceCell, const MFloat *const outerBandWidth, MFloatScratchSpace &distance) |
transverses over all neighboring cells for a specified length More... | |
void | markSurrndCells (MIntScratchSpace &inList, const MInt bandWidth, const MInt level, const MBool refineDiagonals=true) |
void | receiveWindowTriangles () |
Receives triangles from neighbors contained in their window cells and inserts them locally. More... | |
void | compactCells () |
Removes all holes in the cell collector and moves halo cells to the back of the collector. More... | |
MInt | createCellId (const MInt gridCellId) |
void | removeCellId (const MInt cellId) |
MInt | inCell (const MInt cellId, MFloat *point, MFloat fac=F1) |
MInt | setUpInterpolationStencil (const MInt cellId, MInt *, const MFloat *, std::function< MBool(MInt, MInt)>, MBool allowIncompleteStencil) |
MFloat | interpolateFieldData (MInt *, MFloat *, MInt varId, std::function< MFloat(MInt, MInt)> scalarField, std::function< MFloat(MInt, MInt)> coordinate) |
MFloat | leastSquaresInterpolation (MInt *, MFloat *, MInt varId, std::function< MFloat(MInt, MInt)> scalarField, std::function< MFloat(MInt, MInt)> coordinate) |
void | checkNoHaloLayers () |
check that each solver has the required number of haloLayers for leaf cells!!! TODO labels:toenhance under production, needs to be cleaned up! More... | |
void | mapInterpolationCells (std::map< MInt, MInt > &cellMap) |
void | setHaloCellsOnInactiveRanks () |
void | patchRefinement (std::vector< std::vector< MFloat > > &sensors, std::vector< std::bitset< 64 > > &sensorCellFlag, std::vector< MFloat > &sensorWeight, MInt sensorOffset, MInt sen) |
void | reOrderCellIds (std::vector< MInt > &reOrderedCells) |
reOrder cellIds before writing the restart file! This is necessary for example if the minLevel shall be raised at the new restart! More... | |
void | recomputeGlobalIds (std::vector< MInt > &, std::vector< MLong > &) |
reOrder cellIds before writing the restart file! This is necessary for example if the minLevel shall be raised at the new restart! More... | |
void | extractPointIdsFromGrid (Collector< PointBasedCell< nDim > > *&, Collector< CartesianGridPoint< nDim > > *&, const MBool, const std::map< MInt, MInt > &, MInt levelThreshold=999999, MFloat *bBox=nullptr, MBool levelSetMb=false) const |
Creates a list of unique corner points for all cells using a hash map levelThreshold optionally specifies the maximum cell level to be extracted bBox optionally specifies a bounding to box to which the extracted domain shall be truncated. More... | |
Protected Member Functions inherited from Solver | |
Solver (const MInt solverId, const MPI_Comm comm, const MBool isActive=true) | |
MFloat | returnLoadRecord () const |
MFloat | returnIdleRecord () const |
Protected Attributes inherited from maia::CartesianSolver< nDim, DgCartesianSolver< nDim, SysEqn > > | |
MInt * | m_rfnBandWidth |
MInt | m_noSensors |
MInt | m_adaptationInterval |
MInt | m_adaptationStep |
std::vector< MInt > | m_maxSensorRefinementLevel |
std::vector< MFloat > | m_sensorWeight |
std::vector< MFloat > | m_sensorDerivativeVariables |
MBool | m_adaptation |
MBool | m_adapts |
MInt | m_noInitialSensors |
MBool | m_resTriggeredAdapt |
MInt | m_noSmoothingLayers |
MInt | m_sensorBandAdditionalLayers |
MBool | m_sensorInterface |
MBool | m_sensorParticle |
std::vector< MString > | m_sensorType |
MInt * | m_recalcIds |
std::vector< fun > | m_sensorFnPtr |
MInt | m_maxNoSets |
std::vector< MFloat > | m_azimuthalCartRecCoord |
const MInt | m_revDir [6] |
const MInt | m_noDirs |
Protected Attributes inherited from Solver | |
MFloat | m_Re {} |
the Reynolds number More... | |
MFloat | m_Ma {} |
the Mach number More... | |
MInt | m_solutionInterval |
The number of timesteps before writing the next solution file. More... | |
MInt | m_solutionOffset {} |
std::set< MInt > | m_solutionTimeSteps |
MInt | m_restartInterval |
The number of timesteps before writing the next restart file. More... | |
MInt | m_restartTimeStep |
MInt | m_restartOffset |
MString | m_solutionOutput |
MBool | m_useNonSpecifiedRestartFile = false |
MBool | m_initFromRestartFile |
MInt | m_residualInterval |
The number of timesteps before writing the next residual. More... | |
const MInt | m_solverId |
a unique solver identifier More... | |
MFloat * | m_outerBandWidth = nullptr |
MFloat * | m_innerBandWidth = nullptr |
MInt * | m_bandWidth = nullptr |
MBool | m_restart = false |
MBool | m_restartFile = false |
Definition at line 44 of file dgcartesiansolver.h.
|
private |
Definition at line 61 of file dgcartesiansolver.h.
using DgCartesianSolver< nDim, SysEqn >::CartesianSolver = typename maia::CartesianSolver<nDim, DgCartesianSolver> |
Definition at line 65 of file dgcartesiansolver.h.
using DgCartesianSolver< nDim, SysEqn >::Cell = typename maia::grid::tree::Tree<nDim>::Cell |
Definition at line 93 of file dgcartesiansolver.h.
|
private |
Definition at line 57 of file dgcartesiansolver.h.
using DgCartesianSolver< nDim, SysEqn >::Geom = Geometry<nDim> |
Definition at line 64 of file dgcartesiansolver.h.
using DgCartesianSolver< nDim, SysEqn >::Grid = typename CartesianSolver::Grid |
Definition at line 66 of file dgcartesiansolver.h.
using DgCartesianSolver< nDim, SysEqn >::GridProxy = typename CartesianSolver::GridProxy |
Definition at line 67 of file dgcartesiansolver.h.
|
private |
Definition at line 58 of file dgcartesiansolver.h.
|
private |
Definition at line 59 of file dgcartesiansolver.h.
|
private |
Definition at line 60 of file dgcartesiansolver.h.
DgCartesianSolver< nDim, SysEqn >::DgCartesianSolver | ( | const MInt | solverId, |
GridProxy & | gridProxy_, | ||
Geometry< nDim > & | geometry_, | ||
const MPI_Comm | comm | ||
) |
The constructor does NOT prepare the solver for starting a simulation, however. You need to call initSolverObjects() to set up all necessary methods/data structures when you want to run a simulation.
Definition at line 51 of file dgcartesiansolver.cpp.
|
override |
|
inline |
Definition at line 139 of file dgcartesiansolver.h.
|
inline |
Definition at line 141 of file dgcartesiansolver.h.
|
inline |
Definition at line 142 of file dgcartesiansolver.h.
|
inline |
Definition at line 140 of file dgcartesiansolver.h.
|
private |
[in] | timeStep | Timestep at which adaptive refinement has been called |
Note: Further information can be found in: Chapter 4 of "Implementation and validation of an adaptive hp-refinement method for the discontinuous Galerkin spectral element method. Master thesis, Sven Berger, RWTH Aachen University, 2014".
Adaptive refinement method 1 Refine cells for x>0 +1 in each adaptive refinement step
Adaptive refinement method 2 Sets the error relative to the maximum error
Properties: The property adaptiveThreshold determines the error threshold relative to the max. error. E.g.:
*smaller value -> more elements are set to a higher polynomial degree
*larger value -> a smaller number of elements is set to each higher polynomial degree
Note: Further information can be found in: Chapter 4 of "Implementation and validation of an adaptive hp-refinement method for the discontinuous Galerkin spectral element method. Master thesis, Sven Berger, RWTH Aachen University, 2014".
Definition at line 8838 of file dgcartesiansolver.cpp.
|
private |
Some of the container sizes depend directly on the number of leaf cells, others are controlled by a property.
Definition at line 1125 of file dgcartesiansolver.cpp.
|
private |
[in] | t | Time at which to analyze the solution. |
Definition at line 7781 of file dgcartesiansolver.cpp.
|
private |
Definition at line 7332 of file dgcartesiansolver.cpp.
|
private |
Apply forward mortar projections (hp-refinement).
This method does two things: first, all missing results from the prolong step are copied to the remaining surfaces for h-refined faces. Then, both h- and p-refinement mortar projections are first applied to h-refined surfaces and then p-refinement mortar projections are applied to purely p-refined surfaces.
Definition at line 6805 of file dgcartesiansolver.cpp.
|
private |
Definition at line 7274 of file dgcartesiansolver.cpp.
|
private |
[in] | noElements | Number of elements. |
[in] | elem | Pointer to elements. |
Definition at line 7294 of file dgcartesiansolver.cpp.
|
private |
[in] | rhs | Time derivatives of element variables where the surface integral is added to. \parma[in] polyDeg Polynomial degree of element. |
[in] | srfcId | Surface id from which the flux is to be used. |
[in] | side | Position of element with respect to the surface. A value of zero means the element is in the -ve coordinate direction with respect to the surface, a value of one means the element is in the +ve direction. |
[in] | flux | The surface flux. |
[in] | surf | Pointer to surfaces. |
Definition at line 7169 of file dgcartesiansolver.cpp.
|
inlineoverridevirtual |
Reimplemented from Solver.
Definition at line 403 of file dgcartesiansolver.h.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 9696 of file dgcartesiansolver.cpp.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 9648 of file dgcartesiansolver.cpp.
|
private |
[in] | t | Time at which the boundary conditions should be set (necessary for time-dependent b.c.'s). |
Definition at line 6965 of file dgcartesiansolver.cpp.
|
private |
[in] | t | Physical time at which the time derivative is calculated. |
[in] | tStage | Pseudo time of the Runge-Kutta stage (needed for time-dependent source terms). |
Definition at line 6647 of file dgcartesiansolver.cpp.
|
private |
Definition at line 2799 of file dgcartesiansolver.cpp.
|
private |
[out] | errorEstimate | Reference to a vector of size noElements to store the calculated error. |
Definition at line 9009 of file dgcartesiansolver.cpp.
|
private |
[in] | t | Physical time at which to calculate the error norms. |
[out] | L2Error | Storage for the L^2 error (one value/variable). |
[out] | LInfError | Storage for the L^infinity error (one value/variable). |
[out] | L2ErrLocal | Storage for the local L^2 error (one value/variable). |
[out] | LInfErrLocal | Storage for the local L^infinity error (one value/variable). |
Definition at line 7925 of file dgcartesiansolver.cpp.
|
private |
Definition at line 6987 of file dgcartesiansolver.cpp.
|
private |
Calculate the forward/reverse mortar projection.
forward | True calculates the forward, false the reverse projection. |
[in] | srfcId | Surface ID of the surface to be projected. |
[in] | dir | Direction of the projection. |
[in] | source | Pointer to the values to be projected. |
[out] | destination | Pointer to the destination of the result. |
[in] | elem | Pointer to elements. |
[in] | surf | Pointer to surfaces. |
Definition at line 8498 of file dgcartesiansolver.cpp.
|
private |
[in] | srfcId | Surface ID of the surface to be projected. |
[in] | dir | Direction of the projection. |
[in] | source | Pointer to the values to be projected. |
[out] | destination | Pointer to the destination of the result. |
[in] | elem | Pointer to elements. |
[in] | surf | Pointer to surfaces. |
See also Chapter 3 in Sven Berger: Implementation and validation of an adaptive hp-refinement method for the discontinuous Galerkin spectral element method. Master thesis, RWTH Aachen University, 2014.
Definition at line 8618 of file dgcartesiansolver.cpp.
|
private |
[in] | srfcId | Surface ID of the surface to be projected. |
[in] | dir | Direction of the projection. |
[in] | source | Pointer to the values to be projected. |
[out] | destination | Pointer to the destination of the result. |
[in] | elem | Pointer to elements. |
[in] | surf | Pointer to surfaces. |
See also Chapter 3 in Sven Berger: Implementation and validation of an adaptive hp-refinement method for the discontinuous Galerkin spectral element method. Master thesis, RWTH Aachen University, 2014.
Definition at line 8527 of file dgcartesiansolver.cpp.
|
private |
Definition at line 7009 of file dgcartesiansolver.cpp.
|
private |
[in] | begin | Index of the first surface to consider. |
[in] | end | Index+1 of the last surface to consider. |
[in] | surf | Pointer to surfaces. |
[in] | riemannFct | Object which provides the calcRiemann() function used to compute the numerical flux. |
Definition at line 970 of file dgcartesiansolver.h.
|
override |
Definition at line 8288 of file dgcartesiansolver.cpp.
|
inlinevirtual |
|
private |
Definition at line 7320 of file dgcartesiansolver.cpp.
|
private |
[in] | t | Current time. |
[in] | noElements | Number of elements. |
[in] | elem | Pointer to elements. |
[in] | sourceFct | Object which provides the calcSource() function used to calculate the source terms. |
Definition at line 1009 of file dgcartesiansolver.h.
|
private |
[in] | point | Evaluation point. |
[in] | elementId | Element ID of the evaluation point. |
[in] | noVars | Number of variables of given element data field. |
[in] | u | Element data field to evaluate. |
[out] | state | State vector at a given point. |
state should have the dimension 'noVars'.
Definition at line 8171 of file dgcartesiansolver.cpp.
|
private |
Calculate the state variables at a given point in an element
Definition at line 8279 of file dgcartesiansolver.cpp.
|
private |
[in] | point | Evaluation point. |
[out] | returns | cellId. |
Calculates the state vector at a given Point.
[in] | point | Evaluation point. |
[out] | state | State vector at a given point. |
state should have the dimension SysEqn::noVars();
Definition at line 8143 of file dgcartesiansolver.cpp.
|
private |
Definition at line 7029 of file dgcartesiansolver.cpp.
|
private |
[in] | begin | Index of the first element to consider. |
[in] | end | Index+1 of the last element to consider. |
[in] | elem | Pointer to elements. |
[in] | surf | Pointer to surfaces. |
[in] | helem | Pointer to h-elements. |
[in] | noHElements | Number of h-elements. |
Definition at line 7051 of file dgcartesiansolver.cpp.
|
private |
Definition at line 3905 of file dgcartesiansolver.cpp.
MFloat DgCartesianSolver< nDim, SysEqn >::calcTimeStep |
Definition at line 7587 of file dgcartesiansolver.cpp.
|
inline |
Definition at line 123 of file dgcartesiansolver.h.
|
private |
Definition at line 2398 of file dgcartesiansolver.cpp.
|
private |
Definition at line 6944 of file dgcartesiansolver.cpp.
|
private |
[in] | noElements | Number of elements. |
[in] | elem | Pointer to elements. |
[in] | fluxFct | Object which provides the calcFlux() function used to compute the physical flux. |
Definition at line 894 of file dgcartesiansolver.h.
|
overrideprivatevirtual |
Cancel opened receive request that do not have a matching send initiated yet. Note: canceling send requests might cause MPI errors depending on the MPI implementation.
Reimplemented from Solver.
Definition at line 4418 of file dgcartesiansolver.cpp.
|
override |
[in] | dataId | Data id of requested cell data. |
[in] | gridCellId | Requested grid cell id. |
Definition at line 9584 of file dgcartesiansolver.cpp.
|
override |
[in] | dataId | Data id of requested cell data. |
Definition at line 9544 of file dgcartesiansolver.cpp.
|
private |
Definition at line 2870 of file dgcartesiansolver.cpp.
|
private |
[in] | donorGridFileName | Name of donor grid file. |
Note: tests should be sorted by increasing test time, i.e. simpler tests should go first.
Definition at line 2157 of file dgcartesiansolver.cpp.
|
overridevirtual |
Clean up only stuff that cannot (or maybe is not) properly handled in the destructor of the solver. So e.g. do not clean up every single std::vector that was used as a member variable, but free file resources, free MPI resources, destroy manually allocated memory etc.
Implements Solver.
Definition at line 4384 of file dgcartesiansolver.cpp.
|
private |
[in] | cellId | Cell id of cell for which element should be created. |
Definition at line 2500 of file dgcartesiansolver.cpp.
|
private |
[in] | cellId | Cell id of cell for which h-element should be created. |
Definition at line 2523 of file dgcartesiansolver.cpp.
|
private |
Definition at line 3644 of file dgcartesiansolver.cpp.
|
private |
Definition at line 3750 of file dgcartesiansolver.cpp.
|
private |
Exchange polynomial degrees for MPI surfaces (necessary for adaptive p-refinement)
Definition at line 8767 of file dgcartesiansolver.cpp.
|
private |
This method checks if the meanExtension feature has been activated properly in the properties file and triggers the extension for each specified direction/plane-pair.
This method must be called once after updateNodeVars and will call updateNodeVars itself again.
Definition at line 4845 of file dgcartesiansolver.cpp.
|
private |
This method executes the following steps until it hits the domain border:
Definition at line 4904 of file dgcartesiansolver.cpp.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
|
overridevirtual |
Implements Solver.
Definition at line 1874 of file dgcartesiansolver.cpp.
|
private |
Definition at line 4464 of file dgcartesiansolver.cpp.
|
private |
Definition at line 7469 of file dgcartesiansolver.cpp.
|
inline |
Definition at line 102 of file dgcartesiansolver.h.
|
inlineprivate |
Definition at line 135 of file dgcartesiansolver.h.
|
inlineconstexpr |
Definition at line 129 of file dgcartesiansolver.h.
|
private |
[in] | elementId | Id of element for which to return boundary condition ids. |
Definition at line 3395 of file dgcartesiansolver.cpp.
|
inlineoverride |
Definition at line 435 of file dgcartesiansolver.h.
|
inlineoverride |
Definition at line 431 of file dgcartesiansolver.h.
void DgCartesianSolver< nDim, SysEqn >::getCellDataDlb_ | ( | const MInt | dataId, |
const MInt | oldNoCells, | ||
const MInt *const | bufferIdToCellId, | ||
dataType *const | data | ||
) |
void DgCartesianSolver< nDim, SysEqn >::getCellDataDlb_ | ( | const MInt | dataId, |
const MInt | oldNoCells, | ||
const MInt *const | bufferIdToCellId, | ||
DataType *const | data | ||
) |
This method returns the requested data for all elements, e.g. the polynomial degree or the variables of all elements.
[in] | dataId | Requested data id. |
[in] | oldNoCells | Current (old) number of cells before load balancing. |
[in] | bufferIdToCellId | Mapping from buffer location to corresponding cell id. |
[out] | data | Pointer to storage for requested data. |
Definition at line 1050 of file dgcartesiansolver.h.
|
inline |
|
override |
[in] | cellId | Requested grid cell id. |
[in] | weights | Computational weights for different simulation components. |
Definition at line 9431 of file dgcartesiansolver.cpp.
|
inlineoverridevirtual |
void DgCartesianSolver< nDim, SysEqn >::getDefaultWeights | ( | MFloat * | weights, |
std::vector< MString > & | names | ||
) | const |
Definition at line 9368 of file dgcartesiansolver.cpp.
|
override |
Definition at line 9884 of file dgcartesiansolver.cpp.
|
private |
[in] | point | Evaluation point. |
[in] | globalUnique | Specify if a point should be globally unique (i.e. only appears once). |
[out] | returns | elementId. |
If the parameter "globalUnique" is set to true it is assured that every point is globally associated to only one element. This allows to avoid problems for points located on a domain boundary that should only appear on a single domain, e.g. when writing point data. By default globalUnique is set to false.
Definition at line 8061 of file dgcartesiansolver.cpp.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 9789 of file dgcartesiansolver.cpp.
|
inline |
Definition at line 124 of file dgcartesiansolver.h.
|
private |
[in] | elementId | Element id to check. |
Definition at line 9298 of file dgcartesiansolver.cpp.
|
inline |
Definition at line 315 of file dgcartesiansolver.h.
|
private |
Get h-refinement (cell) level of element.
[in] | elementId | Id of the element for which level is requested. |
Definition at line 9159 of file dgcartesiansolver.cpp.
|
private |
Get h-refinement (cell) level of neighbor element.
[in] | elementId | Element for which neighbor level is requested. |
[in] | dir | Direction of neighbor element (-x,+x,-y,... = 0,1,2,...). |
[in] | cellId | for which neighbor level is requested. |
[in] | dir | Direction of neighbor cell (-x,+x,-y,... = 0,1,2,...). |
This method is smart and does not just return -1 if there is no same-level neighbor, but also checks if there are refined (smaller) or coarsened (larger) neighbor element(s).
Definition at line 9205 of file dgcartesiansolver.cpp.
|
override |
[out] | loadQuantities | Storage for load quantities. |
Definition at line 9390 of file dgcartesiansolver.cpp.
|
private |
[in] | timeStep | Time step to calculate the name for. |
[in] | useNonSpecifiedRestartFile | If true, return restart file name without time step code. |
Definition at line 6610 of file dgcartesiansolver.cpp.
|
inline |
Definition at line 120 of file dgcartesiansolver.h.
|
inline |
Definition at line 117 of file dgcartesiansolver.h.
|
override |
Definition at line 9909 of file dgcartesiansolver.cpp.
|
override |
Definition at line 9819 of file dgcartesiansolver.cpp.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 9519 of file dgcartesiansolver.cpp.
|
private |
Definition at line 9235 of file dgcartesiansolver.cpp.
|
private |
Definition at line 3972 of file dgcartesiansolver.cpp.
|
private |
Check if an element has a neighbor cell in the given direction.
[in] | elementId | Element for which neighbor level is requested. |
[in] | dir | Direction of neighbor element (-x,+x,-y,... = 0,1,2,...). |
This method is smart and does not just return false if there is no same-level neighbor, but also checks if there are refined (smaller) or coarsened (larger) neighbor element(s).
Definition at line 9136 of file dgcartesiansolver.cpp.
|
private |
Definition at line 9245 of file dgcartesiansolver.cpp.
|
inlineoverridevirtual |
|
private |
[in] | elementId | Id of element to check. |
[in] | dir | Direction element-> surface (0..5 -> -x,+x,-y,+y,-z,+z) |
Definition at line 3236 of file dgcartesiansolver.cpp.
|
private |
[in] | elementId | Id of element to check. |
[in] | dir | Direction element->surface (0..5 -> -x,+x,-y,+y,-z,+z) |
Definition at line 3251 of file dgcartesiansolver.cpp.
|
private |
Definition at line 1255 of file dgcartesiansolver.cpp.
|
private |
Definition at line 200 of file dgcartesiansolver.cpp.
|
private |
Definition at line 2298 of file dgcartesiansolver.cpp.
|
private |
Definition at line 1977 of file dgcartesiansolver.cpp.
|
private |
Definition at line 2317 of file dgcartesiansolver.cpp.
|
privatevirtual |
Definition at line 4512 of file dgcartesiansolver.cpp.
|
private |
[in] | elementId | Id of element to check. |
[in] | dir | Direction element->surface (0..5 -> -x,+x,-y,+y,-z,+z) |
If the neighboring cell/element is h-refined with respect to the current (coarse) cell/element, no surfaces are created. Surfaces are always created from the refined to the coarses elements, and there is one surface per refined element (i.e. in 2D there will be at most 2 surfaces for each fine-coarse interface, and in 3D there will be at most 5 surfaces). This is different form initMpiSurface, where surfaces are created from the point of view of the coarse element as well.
Definition at line 3279 of file dgcartesiansolver.cpp.
|
private |
Definition at line 2649 of file dgcartesiansolver.cpp.
|
inlinevirtual |
Definition at line 328 of file dgcartesiansolver.h.
|
private |
The Jacobian describes the mapping of the arbitarily-sized (but squared or cubic) elements to the reference element [-1,1] x [-1,1] x [-1,1]. For regular elements it is always (element length)/2. However, since we only ever need the inverse Jacobian, the inverse is saved, i.e. 2/(element length), to make the code more efficient.
Definition at line 2845 of file dgcartesiansolver.cpp.
|
private |
Definition at line 1307 of file dgcartesiansolver.cpp.
|
private |
Note: If the way how memory is allocated for the matrices is changed here, there is a good chance that they have to be changed in mortarH() and/or mortarP() as well. Note: Projections have been taken from: Kopriva, D. A.; Woodruff, S. L. & Hussaini, M.: Computation of electromagnetic scattering with a non-conforming discontinuous spectral element method, Int. Journal for Numerical Methods in Engineering, 2002, 53, 105-222. Note: Further information can be found in: Sven Berger: Implementation and validation of an adaptive hp-refinement method for the discontinuous Galerkin spectral element method. Master thesis, RWTH Aachen University, 2014.
Definition at line 8332 of file dgcartesiansolver.cpp.
|
private |
Definition at line 3996 of file dgcartesiansolver.cpp.
|
private |
[in] | elementId | Id of element to check. |
[in] | dir | Direction element->surface (0..5 -> -x,+x,-y,+y,-z,+z) |
If the corresponding halo cell is refined in comparison to the current cell, two surfaces are created. This is different to initInnterSurface, where surfaces are always created from the fine elements, never from the coarse element.
Definition at line 3338 of file dgcartesiansolver.cpp.
|
private |
Definition at line 2775 of file dgcartesiansolver.cpp.
|
private |
Definition at line 2549 of file dgcartesiansolver.cpp.
|
private |
Definition at line 2585 of file dgcartesiansolver.cpp.
|
private |
Definition at line 4215 of file dgcartesiansolver.cpp.
|
overridevirtual |
Implements Solver.
Definition at line 1845 of file dgcartesiansolver.cpp.
|
private |
Definition at line 1895 of file dgcartesiansolver.cpp.
|
inlinevirtual |
|
private |
Definition at line 2893 of file dgcartesiansolver.cpp.
|
private |
Definition at line 113 of file dgcartesiansolver.cpp.
|
private |
[in] | elementId | ElementId of the element to be interpolated to a new polynomial degree. |
[in] | adaptedPolyDeg | New polynomial degree of the element. |
Definition at line 9075 of file dgcartesiansolver.cpp.
|
private |
[in] | timeStep | Time step to check if it is an adaptation time step. |
Definition at line 9259 of file dgcartesiansolver.cpp.
|
inlineprivate |
Definition at line 7366 of file dgcartesiansolver.cpp.
|
private |
[in] | id | Surface id to check. |
Definition at line 9276 of file dgcartesiansolver.cpp.
|
private |
[in] | gridMapFileName | File name of grid map. |
Definition at line 2064 of file dgcartesiansolver.cpp.
|
private |
This is mainly used to restart from a previously stored file if the node variables are constant in time.
Definition at line 6532 of file dgcartesiansolver.cpp.
|
overrideprivatevirtual |
Reimplemented from Solver.
Definition at line 6173 of file dgcartesiansolver.cpp.
|
inline |
Definition at line 114 of file dgcartesiansolver.h.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 9497 of file dgcartesiansolver.cpp.
|
private |
Definition at line 6628 of file dgcartesiansolver.cpp.
|
private |
Returns the forward/reverse projection matrix for h-refinement.
forward | True returns the forward, false the reverse projection matrix. |
[in] | polyDeg | Polynomial degree of projection. |
[in] | position | Relative position of smaller element (0 means lower element, 1 means upper element; for more info see comment on calcMortarProjectionMatrix...H{A,B}) |
Definition at line 8749 of file dgcartesiansolver.cpp.
|
private |
Returns the forward/reverse projection matrix for p-refinement.
forward | True returns the forward, false the reverse projection matrix. |
[in] | sourcePolyDeg | Polynomial degree of projection source. |
[in] | targetPolyDeg | Polynomial degree of projection target. |
Note: the source polynomial degree must always be lower than the target polynomial degree.
Definition at line 8720 of file dgcartesiansolver.cpp.
|
private |
[in] | cellId | Id of cell that should be checked. |
Definition at line 2342 of file dgcartesiansolver.cpp.
|
private |
[in] | cellId | Id of cell that should be checked. |
Definition at line 2367 of file dgcartesiansolver.cpp.
|
inlineprivate |
Definition at line 468 of file dgcartesiansolver.h.
|
inlineoverridevirtual |
Reimplemented from Solver.
Definition at line 419 of file dgcartesiansolver.h.
|
inlineprivate |
Definition at line 467 of file dgcartesiansolver.h.
|
inlineoverridevirtual |
|
overridevirtual |
Reimplemented from Solver.
Definition at line 9349 of file dgcartesiansolver.cpp.
|
inlineoverride |
Definition at line 449 of file dgcartesiansolver.h.
|
inlineoverridevirtual |
Reimplemented from Solver.
Definition at line 112 of file dgcartesiansolver.h.
|
private |
Definition at line 5460 of file dgcartesiansolver.cpp.
|
private |
[in] | coordinates | The coordinates of the point to check. |
FIXME labels:DG This has been shamelessly copied from GridgenPar. This should be implemented in the grid or geometry classes and used from there. However, currently CartesianGrid has a mess of pointIsInside methods and it is not clear which one to use.
Definition at line 2460 of file dgcartesiansolver.cpp.
|
inlineoverridevirtual |
|
virtual |
Implements Solver.
Definition at line 1679 of file dgcartesiansolver.cpp.
|
inlineoverridevirtual |
|
overridevirtual |
Reimplemented from Solver.
Definition at line 1730 of file dgcartesiansolver.cpp.
|
overridevirtual |
Implements Solver.
Definition at line 1608 of file dgcartesiansolver.cpp.
|
private |
Definition at line 6714 of file dgcartesiansolver.cpp.
|
private |
[in] | begin | Index of the first element to consider. |
[in] | end | Index+1 of the last element to consider. |
Definition at line 6733 of file dgcartesiansolver.cpp.
|
inlinevirtual |
|
private |
[in] | totalSize | Total data size. |
[in] | buffer | Pointer to data buffer to be reset. |
Definition at line 8033 of file dgcartesiansolver.cpp.
|
private |
Definition at line 8013 of file dgcartesiansolver.cpp.
|
privatevirtual |
Definition at line 8002 of file dgcartesiansolver.cpp.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 9319 of file dgcartesiansolver.cpp.
|
inlinevirtual |
Reimplemented from Solver.
Definition at line 286 of file dgcartesiansolver.h.
void DgCartesianSolver< nDim, SysEqn >::run |
After creation of a solver instance, this should be the only method that needs to be called from outside.
In the future, when we have "true" multi solver support, this needs to be rewritten properly, but for now this is where the magic takes place.
Definition at line 1220 of file dgcartesiansolver.cpp.
|
private |
[in] | fileNameBase | Base name of file (i.e., without directory or file extension) to write noda data to. |
[in] | noVars | Number of variables to save to file. |
[in] | varNames | List of variable names. |
[in] | data | Nodal data to save. |
This function allows to save nodal data to a file. The data needs to be stored with a data solver size per element of the (maximum number of nodes) x (number of variables), i.e, it has to have the same structure as the m_variables field in m_elements. If noVars > 1, it is expected that the variables are stored in an array-of-structs layout, i.e., var0 var1 var2 var0 var1 var2 var0 ...
Definition at line 6361 of file dgcartesiansolver.cpp.
|
private |
This is mainly used as a restart file if the node variables are constant in time.
Definition at line 6501 of file dgcartesiansolver.cpp.
|
private |
|
privatevirtual |
Definition at line 5893 of file dgcartesiansolver.cpp.
|
private |
Calls saveSolutionFile(const MString& suffix) with the current m_timeStep as the suffix.
Definition at line 5649 of file dgcartesiansolver.cpp.
|
private |
[in] | suffix | The suffix that should be appended to the generic output name (e.g. the current time step). |
Definition at line 5668 of file dgcartesiansolver.cpp.
|
override |
Definition at line 1814 of file dgcartesiansolver.cpp.
|
inlineoverride |
Definition at line 442 of file dgcartesiansolver.h.
|
inlineoverride |
Definition at line 441 of file dgcartesiansolver.h.
void DgCartesianSolver< nDim, SysEqn >::setCellDataDlb_ | ( | const MInt | dataId, |
const dataType *const | data | ||
) |
void DgCartesianSolver< nDim, SysEqn >::setCellDataDlb_ | ( | const MInt | dataId, |
const DataType *const | data | ||
) |
This method sets the given data for all elements, e.g. the polynomial degree or the variables of all elements.
[in] | dataId | Requested data id. |
[in] | data | Pointer to storage of data. |
Definition at line 1137 of file dgcartesiansolver.h.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 9474 of file dgcartesiansolver.cpp.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 9804 of file dgcartesiansolver.cpp.
|
private |
Reads properties associated with input/output.
Definition at line 246 of file dgcartesiansolver.cpp.
|
private |
Definition at line 529 of file dgcartesiansolver.cpp.
|
inlineoverride |
Definition at line 293 of file dgcartesiansolver.h.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 1662 of file dgcartesiansolver.cpp.
|
inlinevirtual |
|
inlineprivate |
Definition at line 360 of file dgcartesiansolver.h.
|
private |
Definition at line 7379 of file dgcartesiansolver.cpp.
MBool DgCartesianSolver< nDim, SysEqn >::step | ( | const MFloat | externalDt = -std::numeric_limits<MFloat>::infinity() , |
const MBool | substep = false |
||
) |
[in] | externalDt | External time step size to use for current time step. |
[in] | substep | Indicator if only a single Runge-Kutta substep/stage should be performed. |
NOTE: can be removed once the transition to the unified run loop is finished
Definition at line 1416 of file dgcartesiansolver.cpp.
|
private |
[in] | dt | Current time step size. |
[in] | stage | Runge-Kutta stage to perform. |
[in] | totalSize | Total data length. |
[in] | rhs | Pointer to right hand side, i.e. time derivative. |
[in] | variables | Pointer to variables. |
[in] | timeIntStorage | Pointer to time integration storage. |
Definition at line 7733 of file dgcartesiansolver.cpp.
|
inlinevirtual |
Reimplemented from Solver.
Definition at line 290 of file dgcartesiansolver.h.
|
inlineoverridevirtual |
|
private |
[in] | t | Current physical time (needed for boundary conditions etc.). |
[in] | dt | Current time step size. |
[in] | substep | Perform only the specified Runge-Kutta substep/stage. |
The 'substep' option allows to perform only a single Runge-Kutta substep, which is necessary for interleaving the Runge-Kutta stages in a coupled simulation to avoid idle time. By default the complete timestep is performed.
Definition at line 7675 of file dgcartesiansolver.cpp.
|
private |
This method executes the following three steps:
This method only needs to be called once after a change to the node variables.
Definition at line 4565 of file dgcartesiansolver.cpp.
|
private |
This method sets the nodeVars of an element to values on the surface opposite to extendDir. It then updates the nodeVars on the surface in extendDir of the element, and notes the surfaces buffer size if it is on a domain boundary. If the element is h-refined, it also calls itself for the child elements.
Definition at line 5186 of file dgcartesiansolver.cpp.
|
private |
|
inlineprivate |
Definition at line 361 of file dgcartesiansolver.h.
|
private |
Definition at line 1194 of file dgcartesiansolver.cpp.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 1745 of file dgcartesiansolver.cpp.
|
friend |
Definition at line 47 of file dgcartesiansolver.h.
|
friend |
Definition at line 47 of file dgcartesiansolver.h.
|
friend |
Definition at line 1137 of file dgcartesiansolver.h.
|
friend |
Definition at line 47 of file dgcartesiansolver.h.
Definition at line 47 of file dgcartesiansolver.h.
|
friend |
Definition at line 47 of file dgcartesiansolver.h.
|
friend |
Definition at line 53 of file dgcartesiansolver.h.
|
private |
Definition at line 664 of file dgcartesiansolver.h.
|
private |
Definition at line 660 of file dgcartesiansolver.h.
|
private |
Definition at line 662 of file dgcartesiansolver.h.
|
private |
Definition at line 611 of file dgcartesiansolver.h.
|
private |
Definition at line 609 of file dgcartesiansolver.h.
|
private |
Definition at line 566 of file dgcartesiansolver.h.
|
private |
Definition at line 838 of file dgcartesiansolver.h.
|
private |
Definition at line 686 of file dgcartesiansolver.h.
|
private |
Definition at line 688 of file dgcartesiansolver.h.
|
private |
Definition at line 562 of file dgcartesiansolver.h.
|
private |
Definition at line 507 of file dgcartesiansolver.h.
|
private |
Definition at line 552 of file dgcartesiansolver.h.
|
private |
Definition at line 692 of file dgcartesiansolver.h.
|
private |
Definition at line 540 of file dgcartesiansolver.h.
|
private |
Definition at line 544 of file dgcartesiansolver.h.
|
private |
Definition at line 542 of file dgcartesiansolver.h.
|
private |
Definition at line 733 of file dgcartesiansolver.h.
|
private |
Definition at line 711 of file dgcartesiansolver.h.
|
private |
Definition at line 621 of file dgcartesiansolver.h.
|
private |
Definition at line 840 of file dgcartesiansolver.h.
|
private |
Definition at line 841 of file dgcartesiansolver.h.
|
private |
Definition at line 585 of file dgcartesiansolver.h.
|
private |
Definition at line 735 of file dgcartesiansolver.h.
|
private |
Definition at line 548 of file dgcartesiansolver.h.
|
private |
Definition at line 550 of file dgcartesiansolver.h.
|
private |
Definition at line 505 of file dgcartesiansolver.h.
|
private |
Definition at line 132 of file dgcartesiansolver.h.
|
private |
Definition at line 680 of file dgcartesiansolver.h.
|
private |
Definition at line 558 of file dgcartesiansolver.h.
|
private |
Definition at line 648 of file dgcartesiansolver.h.
|
private |
Definition at line 671 of file dgcartesiansolver.h.
|
private |
Definition at line 534 of file dgcartesiansolver.h.
|
private |
Definition at line 528 of file dgcartesiansolver.h.
|
private |
Definition at line 725 of file dgcartesiansolver.h.
|
private |
Definition at line 705 of file dgcartesiansolver.h.
|
private |
Definition at line 574 of file dgcartesiansolver.h.
|
private |
Definition at line 556 of file dgcartesiansolver.h.
|
private |
Definition at line 832 of file dgcartesiansolver.h.
|
private |
Definition at line 833 of file dgcartesiansolver.h.
|
private |
Definition at line 834 of file dgcartesiansolver.h.
|
private |
Definition at line 831 of file dgcartesiansolver.h.
|
private |
Definition at line 830 of file dgcartesiansolver.h.
|
private |
Definition at line 477 of file dgcartesiansolver.h.
|
private |
Definition at line 560 of file dgcartesiansolver.h.
|
private |
Definition at line 839 of file dgcartesiansolver.h.
|
private |
Definition at line 650 of file dgcartesiansolver.h.
|
private |
Definition at line 538 of file dgcartesiansolver.h.
|
private |
Definition at line 703 of file dgcartesiansolver.h.
|
private |
Definition at line 532 of file dgcartesiansolver.h.
|
private |
Definition at line 536 of file dgcartesiansolver.h.
|
private |
Definition at line 530 of file dgcartesiansolver.h.
|
private |
Definition at line 519 of file dgcartesiansolver.h.
|
private |
Definition at line 590 of file dgcartesiansolver.h.
|
private |
Definition at line 520 of file dgcartesiansolver.h.
|
private |
Definition at line 587 of file dgcartesiansolver.h.
|
private |
Definition at line 727 of file dgcartesiansolver.h.
|
private |
Definition at line 568 of file dgcartesiansolver.h.
|
private |
Definition at line 837 of file dgcartesiansolver.h.
|
private |
Definition at line 717 of file dgcartesiansolver.h.
|
private |
Definition at line 694 of file dgcartesiansolver.h.
|
private |
Definition at line 572 of file dgcartesiansolver.h.
|
private |
Definition at line 583 of file dgcartesiansolver.h.
|
private |
Definition at line 719 of file dgcartesiansolver.h.
|
private |
Definition at line 619 of file dgcartesiansolver.h.
|
private |
Definition at line 721 of file dgcartesiansolver.h.
|
private |
Definition at line 511 of file dgcartesiansolver.h.
|
private |
Definition at line 707 of file dgcartesiansolver.h.
|
private |
Definition at line 842 of file dgcartesiansolver.h.
|
private |
Definition at line 638 of file dgcartesiansolver.h.
|
private |
Definition at line 570 of file dgcartesiansolver.h.
|
private |
Definition at line 658 of file dgcartesiansolver.h.
|
private |
Definition at line 674 of file dgcartesiansolver.h.
|
private |
Definition at line 677 of file dgcartesiansolver.h.
|
private |
Definition at line 676 of file dgcartesiansolver.h.
|
private |
Definition at line 675 of file dgcartesiansolver.h.
|
private |
Definition at line 667 of file dgcartesiansolver.h.
|
private |
Definition at line 669 of file dgcartesiansolver.h.
|
private |
Definition at line 666 of file dgcartesiansolver.h.
|
private |
Definition at line 668 of file dgcartesiansolver.h.
|
private |
Definition at line 595 of file dgcartesiansolver.h.
|
private |
Definition at line 606 of file dgcartesiansolver.h.
|
private |
Definition at line 601 of file dgcartesiansolver.h.
|
private |
Definition at line 631 of file dgcartesiansolver.h.
|
private |
Definition at line 509 of file dgcartesiansolver.h.
|
private |
Definition at line 613 of file dgcartesiansolver.h.
|
private |
Definition at line 524 of file dgcartesiansolver.h.
|
private |
Definition at line 526 of file dgcartesiansolver.h.
|
private |
Definition at line 593 of file dgcartesiansolver.h.
|
private |
Definition at line 604 of file dgcartesiansolver.h.
|
private |
Definition at line 599 of file dgcartesiansolver.h.
|
private |
Definition at line 644 of file dgcartesiansolver.h.
|
private |
Definition at line 699 of file dgcartesiansolver.h.
|
private |
Definition at line 653 of file dgcartesiansolver.h.
|
private |
Definition at line 546 of file dgcartesiansolver.h.
|
private |
Definition at line 787 of file dgcartesiansolver.h.
|
private |
Definition at line 795 of file dgcartesiansolver.h.
|
private |
Definition at line 807 of file dgcartesiansolver.h.
|
private |
Definition at line 783 of file dgcartesiansolver.h.
|
private |
Definition at line 785 of file dgcartesiansolver.h.
|
private |
Definition at line 781 of file dgcartesiansolver.h.
|
private |
Definition at line 809 of file dgcartesiansolver.h.
|
private |
Definition at line 811 of file dgcartesiansolver.h.
|
private |
Definition at line 801 of file dgcartesiansolver.h.
|
private |
Definition at line 789 of file dgcartesiansolver.h.
|
private |
Definition at line 821 of file dgcartesiansolver.h.
|
private |
Definition at line 797 of file dgcartesiansolver.h.
|
private |
Definition at line 793 of file dgcartesiansolver.h.
|
private |
Definition at line 819 of file dgcartesiansolver.h.
|
private |
Definition at line 815 of file dgcartesiansolver.h.
|
private |
Definition at line 803 of file dgcartesiansolver.h.
|
private |
Definition at line 791 of file dgcartesiansolver.h.
|
private |
Definition at line 805 of file dgcartesiansolver.h.
|
private |
Definition at line 817 of file dgcartesiansolver.h.
|
private |
Definition at line 799 of file dgcartesiansolver.h.
|
private |
Definition at line 813 of file dgcartesiansolver.h.
|
private |
Definition at line 745 of file dgcartesiansolver.h.
|
private |
Definition at line 753 of file dgcartesiansolver.h.
|
private |
Definition at line 767 of file dgcartesiansolver.h.
|
private |
Definition at line 741 of file dgcartesiansolver.h.
|
private |
Definition at line 743 of file dgcartesiansolver.h.
|
private |
Definition at line 739 of file dgcartesiansolver.h.
|
private |
Definition at line 769 of file dgcartesiansolver.h.
|
private |
Definition at line 771 of file dgcartesiansolver.h.
|
private |
Definition at line 773 of file dgcartesiansolver.h.
|
private |
Definition at line 761 of file dgcartesiansolver.h.
|
private |
Definition at line 747 of file dgcartesiansolver.h.
|
private |
Definition at line 755 of file dgcartesiansolver.h.
|
private |
Definition at line 751 of file dgcartesiansolver.h.
|
private |
Definition at line 757 of file dgcartesiansolver.h.
|
private |
Definition at line 777 of file dgcartesiansolver.h.
|
private |
Definition at line 763 of file dgcartesiansolver.h.
|
private |
Definition at line 749 of file dgcartesiansolver.h.
|
private |
Definition at line 765 of file dgcartesiansolver.h.
|
private |
Definition at line 779 of file dgcartesiansolver.h.
|
private |
Definition at line 759 of file dgcartesiansolver.h.
|
private |
Definition at line 775 of file dgcartesiansolver.h.
|
private |
Definition at line 640 of file dgcartesiansolver.h.
|
private |
Definition at line 715 of file dgcartesiansolver.h.
|
private |
Definition at line 684 of file dgcartesiansolver.h.
|
private |
Definition at line 731 of file dgcartesiansolver.h.
|
private |
Definition at line 513 of file dgcartesiansolver.h.
|
private |
Definition at line 515 of file dgcartesiansolver.h.
|
private |
Definition at line 517 of file dgcartesiansolver.h.
|
private |
Definition at line 825 of file dgcartesiansolver.h.
|
private |
Definition at line 827 of file dgcartesiansolver.h.
|
private |
Definition at line 501 of file dgcartesiansolver.h.
|
private |
Definition at line 503 of file dgcartesiansolver.h.
|
private |
Definition at line 623 of file dgcartesiansolver.h.
|
private |
Definition at line 690 of file dgcartesiansolver.h.
|
private |
Definition at line 697 of file dgcartesiansolver.h.
|
private |
Definition at line 654 of file dgcartesiansolver.h.
|
private |
Definition at line 579 of file dgcartesiansolver.h.
|
private |
Definition at line 642 of file dgcartesiansolver.h.
|
private |
Definition at line 465 of file dgcartesiansolver.h.
|
private |
Definition at line 629 of file dgcartesiansolver.h.
|
private |
Definition at line 627 of file dgcartesiansolver.h.
|
private |
Definition at line 625 of file dgcartesiansolver.h.
|
private |
Definition at line 633 of file dgcartesiansolver.h.
|
private |
Definition at line 635 of file dgcartesiansolver.h.
|
private |
Definition at line 617 of file dgcartesiansolver.h.
|
private |
Definition at line 615 of file dgcartesiansolver.h.
|
private |
Definition at line 576 of file dgcartesiansolver.h.
|
staticprivate |
Definition at line 481 of file dgcartesiansolver.h.