|
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.