MAIA bb96820c
Multiphysics at AIA
|
#include <rigidbodies.h>
Classes | |
struct | Shapes |
struct | Timers |
Public Types | |
using | CartesianSolver = typename maia::CartesianSolver< nDim, RigidBodies > |
using | Cell = typename maia::grid::tree::Tree< nDim >::Cell |
using | Geom = Geometry< nDim > |
using | Grid = typename CartesianSolver::Grid |
using | GridProxy = typename CartesianSolver::GridProxy |
using | Status = maia::rb::collector::Status |
Public Types inherited from maia::CartesianSolver< nDim, RigidBodies< nDim > > | |
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 | |
Geom & | geometry () const |
Access the solver's geometry. More... | |
void | preTimeStep () override |
Resetting the 2-Step predictor-corrector cycle. More... | |
MBool | solutionStep () override |
void | postTimeStep () |
void | initSolver () override |
void | finalizeInitSolver () override |
void | saveSolverSolution (const MBool, const MBool) |
void | cleanUp () |
MFloat | time () const override |
Return the time. More... | |
MInt | noInternalCells () const override |
Return the number of internal cells within this solver. More... | |
MBool | prepareRestart (MBool writeRestart, MBool &) override |
Prepare the solvers for a grid-restart. More... | |
void | reIntAfterRestart (MBool) override |
void | writeRestartFile (const MBool writeRestart, const MBool writeBackup, const MString, MInt *) override |
Write restart file for the RigidBody solver. More... | |
MInt | a_hasNeighbor (const MInt, const MInt) const |
MPI_Comm | mpiComm () const |
void | prepareAdaptation (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 | prepareAdaptation () override |
prepare adaptation for split adaptation before the adaptation loop More... | |
void | setSensors (std::vector< std::vector< MFloat > > &, std::vector< MFloat > &, std::vector< std::bitset< 64 > > &, std::vector< MInt > &) override |
set solver sensors for split adaptation within the adaptation loop More... | |
void | resizeGridMap () |
Swap the given cells. More... | |
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... | |
void | removeChilds (const MInt) override |
Coarsen the given cell. More... | |
void | reinitAfterAdaptation () override |
void | refineCell (const MInt) override |
Refine the given cell. More... | |
void | swapCells (const MInt, const MInt) override |
Swap the given cells. More... | |
void | swapProxy (const MInt cellId0, const MInt cellId1) |
Swap the given cells. More... | |
void | setCellWeights (MFloat *) override |
Set cell weights. More... | |
RigidBodies (const MInt solverId, GridProxy &gridProxy, Geom &geometry, MPI_Comm comm) | |
C'tor for the RigidBodies solver. More... | |
~RigidBodies () | |
D'tor for the RigidBodies solver. More... | |
void | initBodyLog () |
Initalize log-file. More... | |
void | logBodyData () |
Writing a simple log file containing the current state for all bodies. More... | |
void | printScalingVariables () |
void | totalKineticEnergy () |
void | computeBodies () |
Calculates the new state for all bodies. More... | |
void | correctBodies () |
Correcting the state of all bodies using all available external forces/fluxes. More... | |
void | checkDummyBodiesForSwap () |
void | updateConnections () |
void | exchangeKinematicData () |
exchange of predictor & corrector step output More... | |
void | exchangeFsiData () |
exchange of summed forces and torques More... | |
void | boxSeedInitialize () |
void | linSpace (MFloat start, MFloat end, MInt num, std::vector< MFloat > &linspaced) |
void | computeBodyPropertiesForced (MInt returnMode, MFloat *bodyData, MInt bodyId, MFloat time) |
void | initGridProperties () |
void | updateInfoDiameter (const MBool initCall=false) |
void | updateMaxLevel (MInt newMaxLevel) |
void | findLocalBodies () |
searches in all initial Bodies for local bodies More... | |
void | findTransferBodies () |
creates list with all edge bodies that are no longer contained within local domain More... | |
void | updateBodyDomainConnections (MBool initCall) |
updates local/ edge body domain connections More... | |
void | createDummyBody (MInt bodyId) |
appends new DummyBody to collector More... | |
void | exchangeEdgeBodyData () |
exchanges relevant body connections with new neighbor domains More... | |
void | initRemoteDummyBodyData (const MInt bodyId) |
initalize kinematic data of dummyBody that is associated with a remoteBody More... | |
void | exchangeNeighborConnectionInfo () |
void | exchangeTransferBodies () |
exchanges transfer bodies More... | |
void | exchangeNeighborNeighborRemote (std::vector< std::vector< MInt > > &bodyIdsForRemoteDomain, std::vector< std::vector< MInt > > &homeDomainIdsForRemoteDomain, std::map< MInt, std::vector< MInt > > &tmpRemoteMap) |
void | exchangeNeighborNeighborHome (std::vector< std::vector< MInt > > &bodyIdsForHomeDomain, std::vector< std::vector< MInt > > &remoteDomainIdsForHomeDomain, std::vector< std::vector< std::array< MFloat, nDim > > > &shiftForHomeDomain) |
MFloat | calculatePeriodicShift (MInt intersectingCellId, MInt direction) |
periodic shift for position for further data exchange More... | |
void | exchangeBufferLengthsNeighbor (std::vector< MInt > &noToRecv, std::vector< std::vector< MInt > > &bodyList) |
exchange of Buffer legnths for further exchanges More... | |
void | exchangeBufferLengthsNeighbor (std::vector< MInt > &noToRecv, std::map< MInt, std::vector< MInt > > &bodyList) |
exchange of Buffer legnths for further exchanges More... | |
void | exchangeBufferLengthsAllToRoot (std::vector< MInt > &noToRecv, const MInt noToSend) |
exchange of Buffer lengths all to root More... | |
void | exchangeBufferLengthsAllToAll (std::vector< MInt > &noToRecv, const MInt noToSend) |
exchange of Buffer lengths all to all More... | |
void | exchangeBufferLengthsNeighbors (std::vector< MInt > &noToRecv, const MInt noToSend) |
exchange of Buffer lengths all to all in direct neighborhood More... | |
void | exchangeBufferLengthsRemoteToHome (std::vector< MInt > &noToRecv, std::vector< MInt > &noToSend) |
void | exchangeBodyVariablesAllToAll () |
exchange of Body Variables all to all More... | |
MLong | getDomainOffset () |
for new restartFile format More... | |
void | printBodyDomainConnections () |
debugging: print all necessary mappings for each partition in specific file More... | |
template<MInt bodyType> | |
MFloat | getDistance (const MFloat *const coordinates, const MInt bodyId) |
Calculates the closest distance between a given point and body. More... | |
MFloat | getDistanceSphere (const MFloat *coordinates, const MInt bodyId) |
Calculates the closest distance between a given point and a sphere. More... | |
MFloat | getDistancePiston (const MFloat *coordinates, const MInt bodyId) |
Calculates the closest distance between a given point and a piston. More... | |
MFloat | getDistanceCube (const MFloat *coordinates, const MInt bodyId) |
Calculates the closest distance between a given point and a cube. More... | |
MFloat | getDistanceEllipsoid (const MFloat *coordinates, const MInt bodyId) |
Calculates the closest distance between a given point and a ellipsoid. More... | |
MInt | size () const |
MInt | getLocalBodyId (MInt globalBodyId) |
MInt | getGlobalBodyId (MInt localBodyId) |
MBool | isLocalBody (MInt bodyId) |
MBool | isRemoteBody (MInt bodyId) |
MInt | noEmbeddedBodies () const |
MInt | noConnectingBodies () const |
MInt | noCollectorBodies () const |
MInt | noHomeDomains () const |
MInt | noRemoteDomains () const |
MBool | hasAssociatedDummyBody (const MInt bodyId) const |
void | addForce (const MInt bodyId, const std::array< MFloat, nDim > &force) |
void | addTorque (const MInt bodyId, const std::array< MFloat, nRot > &torque) |
void | resetForce () |
void | resetTorque () |
MFloat | a_bodyMass (const MInt bodyId) |
MFloat | a_volume (const MInt bodyId) |
MFloat & | a_bodyRadii (const MInt bodyId, const MInt n) |
MFloat & | a_bodyRadius (const MInt bodyId) |
void | getVelocity (const MInt bodyId, std::array< MFloat, nDim > &velocity) |
void | incrementHeatFlux (const MInt bodyId, MFloat heatflux) |
MFloat | getHeatFlux (const MInt bodyId) |
MFloat * | a_bodyForce (const MInt bodyId) |
MFloat & | a_bodyForce (const MInt bodyId, const MInt dim) |
MFloat | a_bodyForce (const MInt bodyId, const MInt dim) const |
MFloat & | a_bodyCenter (const MInt bodyId, const MInt dim) |
MFloat | a_bodyCenter (const MInt bodyId, const MInt dim) const |
MFloat & | a_bodyCenterOld (const MInt bodyId, const MInt dim) |
MFloat | a_bodyCenterOld (const MInt bodyId, const MInt dim) const |
MFloat & | a_bodyVelocity (const MInt bodyId, const MInt dim) |
MFloat | a_bodyVelocity (const MInt bodyId, const MInt dim) const |
MFloat & | a_bodyVelocityOld (const MInt bodyId, const MInt dim) |
MFloat | a_bodyVelocityOld (const MInt bodyId, const MInt dim) const |
MFloat & | a_bodyAcceleration (const MInt bodyId, const MInt dim) |
MFloat | a_bodyAcceleration (const MInt bodyId, const MInt dim) const |
MFloat & | a_bodyAccelerationOld (const MInt bodyId, const MInt dim) |
MFloat | a_bodyAccelerationOld (const MInt bodyId, const MInt dim) const |
MFloat & | a_bodyTemperature (const MInt bodyId) |
MFloat | a_bodyTemperature (const MInt bodyId) const |
MFloat & | a_bodyTemperatureOld (const MInt bodyId) |
MFloat | a_bodyTemperatureOld (const MInt bodyId) const |
MFloat & | a_bodyHeatFlux (const MInt bodyId) |
MFloat | a_bodyHeatFlux (const MInt bodyId) const |
MFloat & | a_bodyDensityRatio (const MInt bodyId) |
MFloat | a_bodyDensityRatio (const MInt bodyId) const |
MFloat & | a_bodyInertia (const MInt bodyId, const MInt dim) |
MFloat | a_bodyInertia (const MInt bodyId, const MInt dim) const |
MFloat & | a_bodyQuaternionT1 (const MInt bodyId, const MInt dim) |
MFloat | a_bodyQuaternionT1 (const MInt bodyId, const MInt dim) const |
MFloat & | a_bodyQuaternionT1B2 (const MInt bodyId, const MInt dim) |
MFloat | a_bodyQuaternionT1B2 (const MInt bodyId, const MInt dim) const |
MFloat & | a_angularVelocityT1 (const MInt bodyId, const MInt dim) |
MFloat | a_angularVelocityT1 (const MInt bodyId, const MInt dim) const |
MFloat & | a_angularVelocityT1B2 (const MInt bodyId, const MInt dim) |
MFloat | a_angularVelocityT1B2 (const MInt bodyId, const MInt dim) const |
MFloat & | a_angularVelocityBodyT1 (const MInt bodyId, const MInt dim) |
MFloat | a_angularVelocityBodyT1 (const MInt bodyId, const MInt dim) const |
MFloat & | a_angularVelocityBodyT1B2 (const MInt bodyId, const MInt dim) |
MFloat | a_angularVelocityBodyT1B2 (const MInt bodyId, const MInt dim) const |
MFloat & | a_angularAccelerationT1 (const MInt bodyId, const MInt dim) |
MFloat | a_angularAccelerationT1 (const MInt bodyId, const MInt dim) const |
MFloat & | a_angularAccelerationBody (const MInt bodyId, const MInt dim) |
MFloat | a_angularAccelerationBody (const MInt bodyId, const MInt dim) const |
MFloat & | a_torqueT1 (const MInt bodyId, const MInt dim) |
MFloat | a_torqueT1 (const MInt bodyId, const MInt dim) const |
Status & | a_status (const MInt bodyId) |
Status | a_status (const MInt bodyId) const |
MFloat * | a_bodyTorque (const MInt bodyId) |
MFloat & | a_bodyTorque (const MInt bodyId, const MInt dim) |
MFloat | a_bodyTorque (const MInt bodyId, const MInt dim) const |
MFloat & | a_angularVelocity (const MInt bodyId, const MInt dim) |
MFloat | a_angularVelocity (const MInt bodyId, const MInt dim) const |
MFloat & | a_angularVelocityBody (const MInt bodyId, const MInt dim) |
MFloat | a_angularVelocityBody (const MInt bodyId, const MInt dim) const |
void | getAngularVelocity (const MInt bodyId, std::array< MFloat, nRot > &angularVelocity) |
MFloat | a_bodyVelocityMag (const MInt bodyId) |
MFloat * | getBodyProperties (MInt returnMode, MInt bodyId) |
MInt | a_bodyType () const |
void | setTimestep (const MFloat timestep) |
void | saveBodyRestartFile (const MBool backup) |
Write restart file for the RigidBody solver. More... | |
void | loadBodyRestartFile () |
Loads restart file for the RigidBodies solver. More... | |
void | loadBodiesSizeAndPosition () |
loadind no of embedded bodies and it's position from restart file More... | |
MInt | a_noCells () const |
Public Member Functions inherited from maia::CartesianSolver< nDim, RigidBodies< nDim > > | |
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 () |
Public Attributes | |
Geom * | m_geometry |
std::array< MFloat, 2 > | m_distFac {} |
MFloat | m_infoDiameter {} |
MInt | m_maxSensorLevel {} |
MInt | m_currMaxLevel {} |
MBool | m_printKineticEnergy = false |
MBool | m_logBodyData = false |
MBool | m_bodyWasDeleted = false |
MInt | m_intervalBodyLog = 1 |
std::ofstream | m_log |
std::ofstream | m_anglog |
std::ofstream | m_debugFileStream |
Public Attributes inherited from Solver | |
std::set< MInt > | m_freeIndices |
MBool | m_singleAdaptation = false |
MBool | m_splitAdaptation = true |
MBool | m_saveSensorData = false |
Private Member Functions | |
void | predictorStep () |
Peform a prediction for all bodies. More... | |
void | correctorStep () |
Correct the state of all bodies using external forces/fluxes/torques. More... | |
void | advanceBodies () |
Copy the body data for time t to t-1 to prepare the next timestep. More... | |
void | predictRotation (const MInt bodyId) |
void | correctRotation (const MInt bodyId) |
void | transformToWorldFrame (const MFloat *const quaternion, const MFloat *const vectorBody, MFloat *const vectorWorld) |
Transform a vector form the body frame to the world frame. More... | |
void | transformToBodyFrame (const MFloat *const quaternion, const MFloat *const vectorWorld, MFloat *const vectorBody) |
Transform a vector form the world frame to the body frame. More... | |
void | transformToBodyFrame (const MFloat *const quaternion, MFloat *const vecInOut) |
Transform a vector form the world frame to the body frame. More... | |
void | advanceQuaternion (const MFloat *const angularVelocity, const MFloat dt, const MFloat *const qIn, MFloat *const qOut) |
Advance the rotational state by one timestep for a given angular velocity. More... | |
void | quaternionToEuler (const MFloat *const quaternion, MFloat *const angles) |
Transform the quaternion to Euler angles. More... | |
void | initTimers () |
void | averageTimer () |
void | readProperties () |
Reading all necessary properties for the RigidBodies solver. More... | |
void | initBodyData () |
Allocating and initializing body data necessary for the solver run. More... | |
MFloat | findClosestPointEllipsoid (const MFloat *const relPos, const MInt bodyId) |
MFloat | distancePointEllipsoid (const std::array< MFloat, 3 > e, const std::array< MFloat, 3 > y, std::array< MFloat, 3 > x) |
Calculates the closest distance between a given point and a ellipsoid in 3D. More... | |
void | collideBodies () |
Calculate collisions forces for all bodies. More... | |
void | collideSpheres (const MInt bodyA, const MInt bodyB) |
Calculate collision force between two spheres. More... | |
MString | outputDir () const |
MFloat | c_cellLengthAtMaxLevel () const |
MFloat | currMaxLevel () const |
MFloat | globBBox (MInt n) |
MInt | localToRemoteBody (const MInt collectorId, const MInt oldBodyId, const MInt domain) |
this function transforms a localBody to a remoteBody on the current domain, necessary if a body crosses a partition boundary to another partition More... | |
void | deleteIrrelevantBodies (std::list< std::pair< MInt, MInt > > &removeList) |
Delete remote bodies from collector that are not relevant anymore. More... | |
void | deleteDummyBody (const MInt bodyId, const MInt collectorShift=0) |
Delete dummy bodies from collector that are not relevant anymore. More... | |
void | predictRotation (const MInt bodyId) |
Perform the prediction for the rotational state of a single body in 3D. More... | |
void | predictRotation (const MInt) |
Empty function for the 2D rotation prediction. More... | |
void | correctRotation (const MInt bodyId) |
Perform the correction for the rotational state for a single body in 3D. More... | |
void | correctRotation (const MInt) |
Empty function for the 2D rotation correction. More... | |
MFloat | findClosestPointEllipsoid (const MFloat *const, const MInt) |
Calculates the closest distance between a given point and a ellipsoid 2D. More... | |
MFloat | findClosestPointEllipsoid (const MFloat *const relPos, const MInt bodyId) |
Calculates the closest distance between a given point and a ellipsoid in 3D. More... | |
Static Private Attributes | |
static constexpr MInt | nRot = (nDim == 3) ? 3 : 1 |
static constexpr MInt | nQuat = (nDim == 3) ? 4 : 0 |
Additional Inherited Members | |
Protected Types inherited from maia::CartesianSolver< nDim, RigidBodies< nDim > > | |
using | fun = void(CartesianSolver< nDim, RigidBodies< nDim > >::*)(std::vector< std::vector< MFloat > > &, std::vector< std::bitset< 64 > > &, std::vector< MFloat > &, MInt, MInt) |
Protected Member Functions inherited from maia::CartesianSolver< nDim, RigidBodies< nDim > > | |
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, RigidBodies< nDim > > | |
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 29 of file rigidbodies.h.
using RigidBodies< nDim >::CartesianSolver = typename maia::CartesianSolver<nDim, RigidBodies> |
Definition at line 32 of file rigidbodies.h.
using RigidBodies< nDim >::Cell = typename maia::grid::tree::Tree<nDim>::Cell |
Definition at line 33 of file rigidbodies.h.
using RigidBodies< nDim >::Geom = Geometry<nDim> |
Definition at line 35 of file rigidbodies.h.
using RigidBodies< nDim >::Grid = typename CartesianSolver::Grid |
Definition at line 36 of file rigidbodies.h.
using RigidBodies< nDim >::GridProxy = typename CartesianSolver::GridProxy |
Definition at line 37 of file rigidbodies.h.
using RigidBodies< nDim >::Status = maia::rb::collector::Status |
Definition at line 39 of file rigidbodies.h.
RigidBodies< nDim >::RigidBodies | ( | const MInt | solverId_, |
GridProxy & | gridProxy_, | ||
Geom & | geometry_, | ||
MPI_Comm | comm_ | ||
) |
solverId_ | Unique solver id |
gridProxy_ | Grid proxy representing the solvers grid information |
geometry_ | Holding all relevant geometry information for this solver |
comm_ | MPI communicator between all ranks responsible for this solver |
Definition at line 32 of file rigidbodies.cpp.
RigidBodies< nDim >::~RigidBodies |
Definition at line 68 of file rigidbodies.cpp.
|
inline |
Definition at line 571 of file rigidbodies.h.
|
inline |
Definition at line 574 of file rigidbodies.h.
|
inline |
Definition at line 564 of file rigidbodies.h.
|
inline |
Definition at line 567 of file rigidbodies.h.
|
inline |
Definition at line 588 of file rigidbodies.h.
|
inline |
Definition at line 589 of file rigidbodies.h.
|
inline |
Definition at line 591 of file rigidbodies.h.
|
inline |
Definition at line 592 of file rigidbodies.h.
|
inline |
Definition at line 550 of file rigidbodies.h.
|
inline |
Definition at line 553 of file rigidbodies.h.
|
inline |
Definition at line 557 of file rigidbodies.h.
|
inline |
Definition at line 560 of file rigidbodies.h.
|
inline |
Definition at line 540 of file rigidbodies.h.
|
inline |
Definition at line 541 of file rigidbodies.h.
|
inline |
Definition at line 545 of file rigidbodies.h.
|
inline |
Definition at line 546 of file rigidbodies.h.
|
inline |
Definition at line 509 of file rigidbodies.h.
|
inline |
Definition at line 510 of file rigidbodies.h.
|
inline |
Definition at line 512 of file rigidbodies.h.
|
inline |
Definition at line 513 of file rigidbodies.h.
|
inline |
Definition at line 497 of file rigidbodies.h.
|
inline |
Definition at line 498 of file rigidbodies.h.
|
inline |
Definition at line 500 of file rigidbodies.h.
|
inline |
Definition at line 501 of file rigidbodies.h.
|
inline |
Definition at line 526 of file rigidbodies.h.
|
inline |
Definition at line 527 of file rigidbodies.h.
|
inline |
Definition at line 493 of file rigidbodies.h.
|
inline |
Definition at line 494 of file rigidbodies.h.
|
inline |
Definition at line 495 of file rigidbodies.h.
|
inline |
Definition at line 523 of file rigidbodies.h.
|
inline |
Definition at line 524 of file rigidbodies.h.
|
inline |
Definition at line 529 of file rigidbodies.h.
|
inline |
Definition at line 530 of file rigidbodies.h.
|
inline |
Definition at line 466 of file rigidbodies.h.
|
inline |
Definition at line 532 of file rigidbodies.h.
|
inline |
Definition at line 533 of file rigidbodies.h.
|
inline |
Definition at line 535 of file rigidbodies.h.
|
inline |
Definition at line 536 of file rigidbodies.h.
|
inline |
Definition at line 480 of file rigidbodies.h.
|
inline |
Definition at line 481 of file rigidbodies.h.
|
inline |
Definition at line 517 of file rigidbodies.h.
|
inline |
Definition at line 518 of file rigidbodies.h.
|
inline |
Definition at line 520 of file rigidbodies.h.
|
inline |
Definition at line 521 of file rigidbodies.h.
|
inline |
Definition at line 584 of file rigidbodies.h.
|
inline |
Definition at line 585 of file rigidbodies.h.
|
inline |
Definition at line 586 of file rigidbodies.h.
|
inline |
Definition at line 610 of file rigidbodies.h.
|
inline |
Definition at line 503 of file rigidbodies.h.
|
inline |
Definition at line 504 of file rigidbodies.h.
|
inline |
Definition at line 600 of file rigidbodies.h.
|
inline |
Definition at line 506 of file rigidbodies.h.
|
inline |
Definition at line 507 of file rigidbodies.h.
|
inline |
Definition at line 101 of file rigidbodies.h.
|
inline |
Definition at line 620 of file rigidbodies.h.
|
inline |
Definition at line 581 of file rigidbodies.h.
|
inline |
Definition at line 582 of file rigidbodies.h.
|
inline |
Definition at line 578 of file rigidbodies.h.
|
inline |
Definition at line 579 of file rigidbodies.h.
|
inline |
Definition at line 468 of file rigidbodies.h.
|
inline |
Definition at line 438 of file rigidbodies.h.
|
inline |
Definition at line 444 of file rigidbodies.h.
|
private |
Definition at line 1054 of file rigidbodies.cpp.
|
inlineprivate |
[in] | angularVelocity | Angular velocity |
[in] | dt | Time step |
[in] | qIn | bodyQuaternion before the rotation |
[out] | qOut | bodyQuaternion after the rotation |
Definition at line 3170 of file rigidbodies.cpp.
|
private |
Definition at line 110 of file rigidbodies.cpp.
void RigidBodies< nDim >::boxSeedInitialize |
Definition at line 547 of file rigidbodies.cpp.
|
inlineprivate |
Definition at line 268 of file rigidbodies.h.
MFloat RigidBodies< nDim >::calculatePeriodicShift | ( | MInt | intersectingCellId, |
MInt | direction | ||
) |
shift will always point inwards
direction[in][3] | |
intersectingCellId[in] |
Definition at line 2043 of file rigidbodies.cpp.
void RigidBodies< nDim >::checkDummyBodiesForSwap |
Definition at line 1827 of file rigidbodies.cpp.
|
inlinevirtual |
|
private |
Definition at line 4177 of file rigidbodies.cpp.
|
private |
bodyA[in] | Id of the first body |
bodyB[in] | Id of the second body |
Definition at line 4199 of file rigidbodies.cpp.
void RigidBodies< nDim >::computeBodies |
This is done via prediction or by using an analytic motion equation (forcedMotion)
Definition at line 657 of file rigidbodies.cpp.
void RigidBodies< nDim >::computeBodyPropertiesForced | ( | MInt | returnMode, |
MFloat * | bodyData, | ||
MInt | bodyId, | ||
MFloat | time | ||
) |
void RigidBodies< nDim >::correctBodies |
Definition at line 930 of file rigidbodies.cpp.
|
private |
Definition at line 2968 of file rigidbodies.cpp.
|
inlineprivate |
For reference, see L.J.H. Seelen et al., Improved bodyQuaternion-based integration scheme for rigid body motion
bodyId | Body id for which the correction is performed |
Definition at line 3022 of file rigidbodies.cpp.
|
inlineprivate |
|
inlineprivate |
MInt | Body id for wich the correction is performed |
Definition at line 3078 of file rigidbodies.cpp.
void RigidBodies< nDim >::createDummyBody | ( | MInt | bodyId | ) |
Definition at line 2007 of file rigidbodies.cpp.
|
inlineprivate |
Definition at line 270 of file rigidbodies.h.
|
private |
[in] | bodyId | corresponds to the localId of the body of which the associated dummy body has to be deleted |
[in] | collectorShift | default=0, if this function is called mutiple times to delete multiple bodies we generate a certain Shift inside the collector |
Definition at line 2537 of file rigidbodies.cpp.
|
private |
[in] | removeList | list containing pair of homeDomain and localId of remoteBody |
Definition at line 2455 of file rigidbodies.cpp.
|
inlineprivate |
Here, the point is given in the body frame of reference and the axis have been sorted by decreasing extension
e[3][in] | Extension of the ellipsoid in each direction |
y[3][in] | Point from which the distance is calculated |
x[3][out] | Closest point on the ellipsoids surface |
Definition at line 3851 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeBodyVariablesAllToAll |
every domain has every current data for every body relevant to perform a solution step
Definition at line 1334 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeBufferLengthsAllToAll | ( | std::vector< MInt > & | noToRecv, |
const MInt | noToSend | ||
) |
serves as an mpi probe function
Definition at line 1259 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeBufferLengthsAllToRoot | ( | std::vector< MInt > & | noToRecv, |
const MInt | noToSend | ||
) |
serves as an mpi probe function
Definition at line 1228 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeBufferLengthsNeighbor | ( | std::vector< MInt > & | noToRecv, |
std::map< MInt, std::vector< MInt > > & | bodyList | ||
) |
serves as an mpi probe function
[in] | noToRecv | count of bodies to receive for a neighbor domain |
[in] | bodyList | map like remoteDomainLocalBodies |
Definition at line 1188 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeBufferLengthsNeighbor | ( | std::vector< MInt > & | noToRecv, |
std::vector< std::vector< MInt > > & | bodyList | ||
) |
serves as an mpi probe function
Definition at line 1145 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeBufferLengthsNeighbors | ( | std::vector< MInt > & | noToRecv, |
const MInt | noToSend | ||
) |
Definition at line 1283 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeBufferLengthsRemoteToHome | ( | std::vector< MInt > & | noToRecv, |
std::vector< MInt > & | noToSend | ||
) |
Definition at line 1107 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeEdgeBodyData |
and updates remaining (remote) body lists & mappings
Definition at line 2075 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeFsiData |
local(edge) bodies' parts of body forces are received from remote domains + remote bodies' parts of body forces is send to their home domains
Definition at line 821 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeKinematicData |
local(edge) bodies' kinematic data is send to remote domains + remote bodies' kinematic data is received from home domains
Definition at line 684 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeNeighborConnectionInfo |
Definition at line 2562 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeNeighborNeighborHome | ( | std::vector< std::vector< MInt > > & | bodyIdsForHomeDomain, |
std::vector< std::vector< MInt > > & | remoteDomainIdsForHomeDomain, | ||
std::vector< std::vector< std::array< MFloat, nDim > > > & | shiftForHomeDomain | ||
) |
Definition at line 2717 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeNeighborNeighborRemote | ( | std::vector< std::vector< MInt > > & | bodyIdsForRemoteDomain, |
std::vector< std::vector< MInt > > & | homeDomainIdsForRemoteDomain, | ||
std::map< MInt, std::vector< MInt > > & | tmpRemoteMap | ||
) |
Definition at line 2652 of file rigidbodies.cpp.
void RigidBodies< nDim >::exchangeTransferBodies |
sends them to new home domain + receives them from old home domain
puts them into local bodies list (comperable state as in find local bodies)
Definition at line 1598 of file rigidbodies.cpp.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
|
private |
Here, the point is given in the body frame of reference
coordinates[in] | Point from which the distance is calculated |
bodyId[in] | Body id to which the distance is calculated |
Definition at line 3749 of file rigidbodies.cpp.
|
private |
|
private |
Here, the point is given in the body frame of reference
coordinates[in] | Point from which the distance is calculated |
bodyId[in] | Body id to which the distance is calculated |
Definition at line 3731 of file rigidbodies.cpp.
void RigidBodies< nDim >::findLocalBodies |
Definition at line 1469 of file rigidbodies.cpp.
void RigidBodies< nDim >::findTransferBodies |
Definition at line 1562 of file rigidbodies.cpp.
|
inline |
Definition at line 82 of file rigidbodies.h.
|
inline |
Definition at line 594 of file rigidbodies.h.
MFloat * RigidBodies< nDim >::getBodyProperties | ( | MInt | returnMode, |
MInt | bodyId | ||
) |
|
inline |
coordinates[in] | Point from which the distance is calculated |
bodyId[in] | Body id to which the distance is calculated |
Definition at line 384 of file rigidbodies.h.
MFloat RigidBodies< nDim >::getDistanceCube | ( | const MFloat * | coordinates, |
const MInt | bodyId | ||
) |
coordinates[in] | Point from which the distance is calculated |
bodyId[in] | Body id to which the distance is calculated |
Definition at line 3673 of file rigidbodies.cpp.
MFloat RigidBodies< nDim >::getDistanceEllipsoid | ( | const MFloat * | coordinates, |
const MInt | bodyId | ||
) |
coordinates[in] | Point from which the distance is calculated |
bodyId[in] | Body id to which the distance is calculated |
Definition at line 3703 of file rigidbodies.cpp.
MFloat RigidBodies< nDim >::getDistancePiston | ( | const MFloat * | coordinates, |
const MInt | bodyId | ||
) |
coordinates[in] | Point from which the distance is calculated |
bodyId[in] | Body id to which the distance is calculated |
Definition at line 3650 of file rigidbodies.cpp.
MFloat RigidBodies< nDim >::getDistanceSphere | ( | const MFloat * | coordinates, |
const MInt | bodyId | ||
) |
coordinates[in] | Point from which the distance is calculated |
bodyId[in] | Body id to which the distance is calculated |
Definition at line 3627 of file rigidbodies.cpp.
MLong RigidBodies< nDim >::getDomainOffset |
Definition at line 1311 of file rigidbodies.cpp.
|
inline |
Definition at line 415 of file rigidbodies.h.
|
inline |
Definition at line 491 of file rigidbodies.h.
|
inline |
Definition at line 408 of file rigidbodies.h.
|
inline |
Definition at line 483 of file rigidbodies.h.
|
inlineprivate |
Definition at line 272 of file rigidbodies.h.
|
inline |
Definition at line 431 of file rigidbodies.h.
|
inline |
Definition at line 489 of file rigidbodies.h.
|
private |
Definition at line 261 of file rigidbodies.cpp.
void RigidBodies< nDim >::initBodyLog |
Definition at line 416 of file rigidbodies.cpp.
void RigidBodies< nDim >::initGridProperties |
Definition at line 1494 of file rigidbodies.cpp.
void RigidBodies< nDim >::initRemoteDummyBodyData | ( | const MInt | bodyId | ) |
[in] | bodyId,localBodyId | of the remoteBody |
Definition at line 2357 of file rigidbodies.cpp.
|
inlineoverridevirtual |
|
private |
Definition at line 88 of file rigidbodies.cpp.
|
inline |
Definition at line 417 of file rigidbodies.h.
|
inline |
Definition at line 419 of file rigidbodies.h.
void RigidBodies< nDim >::linSpace | ( | MFloat | start, |
MFloat | end, | ||
MInt | num, | ||
std::vector< MFloat > & | linspaced | ||
) |
void RigidBodies< nDim >::loadBodiesSizeAndPosition |
Definition at line 4088 of file rigidbodies.cpp.
void RigidBodies< nDim >::loadBodyRestartFile |
Definition at line 4127 of file rigidbodies.cpp.
|
private |
[in] | oldBodyId | is the Id the body had when it was a localBody |
[in] | domain | the new homeDomain of the body |
Definition at line 2395 of file rigidbodies.cpp.
void RigidBodies< nDim >::logBodyData |
Definition at line 947 of file rigidbodies.cpp.
|
inline |
Definition at line 103 of file rigidbodies.h.
|
inline |
Definition at line 425 of file rigidbodies.h.
|
inline |
Definition at line 423 of file rigidbodies.h.
|
inline |
Definition at line 421 of file rigidbodies.h.
|
inline |
Definition at line 427 of file rigidbodies.h.
|
inlineoverridevirtual |
|
inline |
Definition at line 429 of file rigidbodies.h.
|
inlineprivate |
Definition at line 266 of file rigidbodies.h.
|
inlineoverridevirtual |
|
inlinevirtual |
|
private |
Definition at line 1066 of file rigidbodies.cpp.
|
inlineprivate |
For reference, see L.J.H. Seelen et al., Improved bodyQuaternion-based integration scheme for rigid body motion
bodyId | Body id for which the prediction is performed |
Definition at line 2925 of file rigidbodies.cpp.
|
inlineprivate |
|
inlineprivate |
MInt | Body id for wich the prediction is performed |
Definition at line 2958 of file rigidbodies.cpp.
|
inlineoverridevirtual |
|
inlineoverride |
Definition at line 107 of file rigidbodies.h.
|
inlineoverridevirtual |
|
overridevirtual |
void RigidBodies< nDim >::printBodyDomainConnections |
Definition at line 2820 of file rigidbodies.cpp.
void RigidBodies< nDim >::printScalingVariables |
Definition at line 489 of file rigidbodies.cpp.
|
inlineprivate |
[in] | quaternion | quaternion describing the rotational state |
[out] | angles | Euler angles describing the rotational state |
Definition at line 3199 of file rigidbodies.cpp.
|
private |
Definition at line 158 of file rigidbodies.cpp.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Reinit the solver/solver after adaptation TODO labels:toremove remove once all solvers use the split adaptation
Reimplemented from Solver.
Definition at line 124 of file rigidbodies.h.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
|
inline |
Definition at line 456 of file rigidbodies.h.
|
inline |
Definition at line 461 of file rigidbodies.h.
|
inlinevirtual |
void RigidBodies< nDim >::saveBodyRestartFile | ( | const MBool | backup | ) |
MBool | backup True if backup restart file should be written (e.g. for the initial conditions) |
Definition at line 3930 of file rigidbodies.cpp.
|
inline |
Definition at line 90 of file rigidbodies.h.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
|
inline |
Definition at line 612 of file rigidbodies.h.
|
inline |
Definition at line 407 of file rigidbodies.h.
|
overridevirtual |
Reimplemented from Solver.
Definition at line 599 of file rigidbodies.cpp.
|
inlineoverridevirtual |
|
inlinevirtual |
Reimplemented from Solver.
Definition at line 127 of file rigidbodies.h.
|
inlineoverridevirtual |
void RigidBodies< nDim >::totalKineticEnergy |
Definition at line 523 of file rigidbodies.cpp.
|
inlineprivate |
For reference, see L.J.H. Seelen et al., Improved bodyQuaternion-based integration scheme for rigid body motion
bodyQuaternion[in] | bodyQuaternion describing the rotational state of the body frame |
vectorWorld[in] | Vector defined in the world frame |
vectorBody[out] | Vector defined in the body frame |
Definition at line 3124 of file rigidbodies.cpp.
|
inlineprivate |
This version modifies the vector in place.
For reference, see L.J.H. Seelen et al., Improved bodyQuaternion-based integration scheme for rigid body motion
bodyQuaternion[in] | bodyQuaternion describing the rotational state of the body frame |
vectorBody[in,out] | Vector to be transformed from the world to body frame |
Definition at line 3154 of file rigidbodies.cpp.
|
inlineprivate |
For reference, see L.J.H. Seelen et al., Improved bodyQuaternion-based integration scheme for rigid body motion
bodyQuaternion[in] | bodyQuaternion describing the rotational state of the body frame |
vectorBody[in] | Vector defined in the body frame |
vectorWorld[out] | Vector defined in the world frame |
Definition at line 3095 of file rigidbodies.cpp.
void RigidBodies< nDim >::updateBodyDomainConnections | ( | MBool | initCall | ) |
updates all local lists + mappings
Definition at line 1856 of file rigidbodies.cpp.
void RigidBodies< nDim >::updateConnections |
Definition at line 909 of file rigidbodies.cpp.
void RigidBodies< nDim >::updateInfoDiameter | ( | const MBool | initCall = false | ) |
Definition at line 1522 of file rigidbodies.cpp.
|
inline |
Definition at line 341 of file rigidbodies.h.
|
overridevirtual |
Checks if the restart file should be saved in the current time step
[in] | writeRestart | True if a restart file should be written |
[in] | writeBackup | True if a backup restart file should be written (e.g. for the initial conditions) |
[in] | gridFileName | Name of the corresponding grid file name |
[in] | recalcIds | Use id ordering give in grid file |
Reimplemented from Solver.
Definition at line 3914 of file rigidbodies.cpp.
|
private |
Definition at line 177 of file rigidbodies.h.
std::ofstream RigidBodies< nDim >::m_anglog |
Definition at line 321 of file rigidbodies.h.
|
private |
Definition at line 290 of file rigidbodies.h.
|
private |
Definition at line 152 of file rigidbodies.h.
|
private |
Definition at line 169 of file rigidbodies.h.
|
private |
Definition at line 160 of file rigidbodies.h.
|
private |
Definition at line 157 of file rigidbodies.h.
|
private |
Definition at line 170 of file rigidbodies.h.
MBool RigidBodies< nDim >::m_bodyWasDeleted = false |
Definition at line 318 of file rigidbodies.h.
|
private |
Definition at line 155 of file rigidbodies.h.
MInt RigidBodies< nDim >::m_currMaxLevel {} |
Definition at line 315 of file rigidbodies.h.
std::ofstream RigidBodies< nDim >::m_debugFileStream |
Definition at line 322 of file rigidbodies.h.
std::array<MFloat, 2> RigidBodies< nDim >::m_distFac {} |
Definition at line 312 of file rigidbodies.h.
|
private |
Definition at line 172 of file rigidbodies.h.
Geom* RigidBodies< nDim >::m_geometry |
Definition at line 79 of file rigidbodies.h.
|
private |
Definition at line 298 of file rigidbodies.h.
|
private |
Definition at line 301 of file rigidbodies.h.
|
private |
Definition at line 294 of file rigidbodies.h.
|
private |
Definition at line 286 of file rigidbodies.h.
MFloat RigidBodies< nDim >::m_infoDiameter {} |
Definition at line 313 of file rigidbodies.h.
|
private |
Definition at line 190 of file rigidbodies.h.
|
private |
Definition at line 194 of file rigidbodies.h.
|
private |
Definition at line 192 of file rigidbodies.h.
|
private |
Definition at line 189 of file rigidbodies.h.
MInt RigidBodies< nDim >::m_intervalBodyLog = 1 |
Definition at line 319 of file rigidbodies.h.
std::ofstream RigidBodies< nDim >::m_log |
Definition at line 320 of file rigidbodies.h.
|
private |
Definition at line 180 of file rigidbodies.h.
MBool RigidBodies< nDim >::m_logBodyData = false |
Definition at line 317 of file rigidbodies.h.
|
private |
Definition at line 179 of file rigidbodies.h.
|
private |
Definition at line 167 of file rigidbodies.h.
MInt RigidBodies< nDim >::m_maxSensorLevel {} |
Definition at line 314 of file rigidbodies.h.
|
private |
Definition at line 148 of file rigidbodies.h.
|
private |
Definition at line 283 of file rigidbodies.h.
|
private |
Definition at line 168 of file rigidbodies.h.
|
private |
Definition at line 277 of file rigidbodies.h.
|
private |
Definition at line 280 of file rigidbodies.h.
|
private |
Definition at line 164 of file rigidbodies.h.
|
private |
Definition at line 300 of file rigidbodies.h.
|
private |
Definition at line 296 of file rigidbodies.h.
MBool RigidBodies< nDim >::m_printKineticEnergy = false |
Definition at line 316 of file rigidbodies.h.
|
private |
Definition at line 292 of file rigidbodies.h.
|
private |
Definition at line 176 of file rigidbodies.h.
|
private |
Definition at line 178 of file rigidbodies.h.
|
private |
Definition at line 171 of file rigidbodies.h.
|
private |
Definition at line 174 of file rigidbodies.h.
|
private |
Definition at line 175 of file rigidbodies.h.
|
private |
Definition at line 198 of file rigidbodies.h.
|
private |
Definition at line 210 of file rigidbodies.h.
|
private |
Definition at line 208 of file rigidbodies.h.
|
private |
Definition at line 197 of file rigidbodies.h.
|
private |
Definition at line 199 of file rigidbodies.h.
|
private |
Definition at line 200 of file rigidbodies.h.
|
private |
Definition at line 205 of file rigidbodies.h.
|
private |
Definition at line 207 of file rigidbodies.h.
|
private |
Definition at line 204 of file rigidbodies.h.
|
private |
Definition at line 206 of file rigidbodies.h.
|
private |
Definition at line 202 of file rigidbodies.h.
|
private |
Definition at line 203 of file rigidbodies.h.
|
private |
Definition at line 209 of file rigidbodies.h.
|
private |
Definition at line 211 of file rigidbodies.h.
|
private |
Definition at line 212 of file rigidbodies.h.
|
private |
Definition at line 201 of file rigidbodies.h.
|
private |
Definition at line 256 of file rigidbodies.h.
|
private |
Definition at line 257 of file rigidbodies.h.
|
private |
Definition at line 186 of file rigidbodies.h.
|
private |
Definition at line 187 of file rigidbodies.h.
|
private |
Definition at line 288 of file rigidbodies.h.
|
private |
Definition at line 173 of file rigidbodies.h.
|
private |
Definition at line 161 of file rigidbodies.h.
|
private |
Definition at line 183 of file rigidbodies.h.
|
staticconstexprprivate |
Definition at line 132 of file rigidbodies.h.
|
staticconstexprprivate |
Definition at line 131 of file rigidbodies.h.