11#include <unordered_map>
49 template <MInt nDim_, MInt nDist_,
class SysEqn_>
73 template <
typename K,
typename V>
74 V
GetWithDef(
const std::map<K, V>& m,
const K& key,
const V& defval) {
75 typename std::map<K, V>::const_iterator it = m.find(key);
238 const MBool writeData) = 0;
GridCell
Grid cell Property Labels.
MInt m_totalNoDomainsReCut
virtual void bc20051(MInt)
virtual void initializeBndMovingBoundaries()
This function initializes the LbBndCnd for coupled simulations.
void calculateBndNormals()
virtual void updateVariables()
Dereferences bndCndHandlerVariables.
virtual void setBCWallNeighborCommunicator()
Sets up a neighbor-communicator for certain BCs.
virtual void calculateForces(MInt)
MBool calculateNormalFromTriangle(GeometryElement< nDim > ge, MFloat *normal)
Calculate the normal based on a triangle.
MInt m_noReactivatedCells
virtual void bc30042(MInt)
virtual void bc20227(MInt)
virtual void createMBComm()
This function creates the communicator for calculating the wall forces of the level-set boundaries.
MInt * m_inOutSegmentsIds
std::vector< MInt > m_localReCutCells
virtual void bc10041(MInt)
MString m_bndNormalMethod
MInt m_noPeriodicSegments
virtual void bc10002(MInt)
virtual MInt checkForCommBC()
Checks if a BC exists that requires communication.
virtual void bc40043(MInt)
MInt * m_allDomainsCalcForceMB
std::unordered_map< MInt, maia::lb::CalcWallForceContainer > m_mapWallForceContainer
virtual void bc30013(MInt)
MPrimitiveVariables< nDim > * PV
virtual void bc10010(MInt)
virtual void bc66668(MInt)
virtual void bcIBBNeumannInit(MInt)
std::vector< MInt > m_BCWallMBNeighbors
std::vector< LbGridBoundaryCell< nDim > > m_bndCells
virtual void prepareBC2000()
Prepares the BC 4072.
virtual void bc40073(MInt)
MBool(LbBndCnd::* retrieveNormal)(GeometryElement< nDim > ge, MFloat *normal)
MInt * m_mapBndCndIdSegId
virtual void addWallDistanceFieldToOutputFile(ParallelIo ¶llelio, const MBool writeHeader, const MBool writeData)=0
MString * m_BCOutputFileName
virtual void normalParallelGeomNormals3D(std::vector< std::pair< MInt, MInt > > own_segments)
std::vector< MInt > m_bndCndIds
MFloat * receiveBuffersMB
std::vector< BndCndHandler > bndCndHandlerVariables
virtual void prepareBC4073(MInt BCCounter, MInt segId)
virtual void bc30023(MInt)
virtual void bc40046(MInt)
virtual void bc20228(MInt)
MInt m_localReCutInterval
virtual void calculateWallDistances()
virtual void bc30012(MInt)
virtual void bc10022(MInt)
virtual void bc30024(MInt)
virtual void bc20002(MInt)
MFloat * m_lbWallVelocity
virtual ~LbBndCnd()
The destructor.
virtual void bc40072_40082_init(MInt)
virtual void bc20005(MInt)
MFloat ** m_initialVelocityVecs
virtual void bc10040(MInt)
std::vector< std::vector< MInt > > m_BCneighbors
virtual void bc20022(MInt)
virtual void bc20001(MInt)
MFloat * m_localReCutPoint
virtual void bc20006(MInt)
virtual void setBCNeighborCommunicator()
Sets up a neighbor-communicator for certain BCs.
virtual void bc40040(MInt)
std::vector< MInt > m_mapIndex2BndCndSegId
virtual void bc40042(MInt)
virtual void bc30014(MInt)
virtual void bc20226(MInt)
MPI_Request * mpi_request
virtual void calculateAveragedNormalAndCenter(MInt segmentId, MFloat *const normal, MFloat *const center)
MInt m_fastParallelGeomNormals
virtual void bc20501_init(MInt)
virtual void calculateVectors()
virtual void createChannelBoundaries()
virtual void bc10000(MInt)
virtual void processAngles()
virtual void bc30030(MInt)
virtual void setBndCndHandler()
Sets the BndCndHandler objects at solver setup.
std::vector< MInt > m_bndCndSegIds
virtual void checkBndNormalDirection()
virtual void bc10044(MInt)
virtual void bc30022(MInt)
MInt m_maxNoDistributionsInDim
virtual void bc20010(MInt)
virtual void bc66666(MInt)
virtual void bc30043(MInt)
MInt * m_segIdHeatedWalls
MbCellCollector m_boundaryCellsMb
MInt a_boundaryCellMb(const MInt cellId)
virtual void bc20220(MInt)
virtual void bc30000(MInt)
virtual void bc20000(MInt)
void bcDataReadRestartData(ParallelIo ¶llelIo)
Read bndCndData data in given ParallelIo file.
void(LbBndCnd::* BndCndHandler)(MInt set)
virtual void updateRHS()
Dereferences bndCndHandlerRHS.
virtual void bc30040(MInt)
MString m_multiBCTreatment
virtual void bc10111(MInt)
MFloat m_localReCutDiameter
MInt m_calcWallForcesInterval
virtual void bc40071(MInt)
virtual void bc10090(MInt)
MBool m_outputWallDistanceField
virtual void createBoundaryCells()
Creates boundary cells according to the geometry information.
virtual void bc10060(MInt)
virtual void bc40072(MInt)
virtual void bc40030(MInt)
MFloat m_omega
physical non-dimensional reference length
void bcDataAllocate(MInt index, MInt noVars)
Allocate data for given boundary index.
virtual void bc20024(MInt)
std::vector< BndCndHandler > bndCndInitiator
virtual void prepareBC(MInt index, MInt BCCounter, MInt segId)
Prepares the BC 4070, 4071, 4072, 4080, 4081, and 4082.
std::vector< MInt > m_mapSegIdsInOutCnd
virtual void bc40120(MInt)
virtual void bc40110(MInt)
std::vector< MInt > m_mapBndCndSegId2Index
MInt m_densityFluctuations
virtual void bc40070(MInt)
virtual void bc10004(MInt)
virtual MBool checkForCommForce()
Checks if a BC exists that requires communication.
virtual void bc40080(MInt)
virtual void bc20050(MInt)
virtual void bc40081(MInt)
MFloat m_localReCutAdpPerc
void initializeBcData()
Initialize BC data variables.
virtual void printBndVelInfo()
This function prints the gathered information on the boundary vectors and the initial velocity vector...
void applyDirectionChangeInflow(MInt index)
This function checks if for an inflow boundary the normal points into the according direction and cha...
virtual void bc10001(MInt)
MInt * m_segIdMovingWalls
void sortBoundaryCells()
This function sorts the boundary cells according to the BC id.
virtual void bc30034(MInt)
std::unordered_map< MInt, LbBndCndData > m_bndCndData
Stores BC specific data mapped by boundary index.
virtual void fastParallelGeomNormals3D(std::vector< std::pair< MInt, MInt > > own_segments)
virtual void bc30041(MInt)
virtual void bc20023(MInt)
std::ofstream * m_BCResidualStream
virtual void bc30050(MInt)
MFloat * m_localReCutNormal
std::vector< MInt > m_noBndCellsPerSegment
virtual void bc40020(MInt)
virtual void bc20025(MInt)
virtual void bc40044(MInt)
virtual void bc30031(MInt)
virtual void bc20055(MInt)
virtual void bc40010(MInt)
virtual void initMembers()
virtual void updateBndNormals(MInt segId, MBool inside, MFloat *avg_normal)
Updates the normals of an inlet/outlet based on inside / outside detection.
virtual void bc30010(MInt)
virtual void bc20052(MInt)
std::vector< MInt > m_bndCndOffsets
virtual void bc30015(MInt)
virtual void bc30033(MInt)
LbSolver< nDim > * m_solver
pointer to a member function data type
virtual void bc20501(MInt)
MInt m_solverId
index of the array where the boundary conditions are stored in
virtual void bc40041(MInt)
MFloat m_localReCutDistance
virtual void bc20053(MInt)
virtual void bc40060(MInt)
MBool getNormalFromSTL(GeometryElement< nDim > ge, MFloat *normal)
Get the normal from the STL.
std::vector< BndCndHandler_Mb > bndCndHandlerRHS_MB
MInt ** m_allDomainsHaveBC
virtual void bc30025(MInt)
virtual void bc10020(MInt)
virtual void bc10050(MInt)
MFloat m_pulsatileFrequency
void bcDataWriteRestartHeader(ParallelIo ¶llelio)
Write bndCndData info in given ParallelIo file's header.
void applyDirectionChangeOutflow(MInt index)
This function checks if for an outflow boundary the normal points into the according direction and ch...
LbBndCnd(LbSolver< nDim > *solver)
MString m_initVelocityMethod
virtual void bc30044(MInt)
virtual void bc40100(MInt)
virtual void bc30035(MInt)
virtual void bc10043(MInt)
std::vector< BndCndHandler > bndCndHandlerRHS
MFloat * m_lbWallTemperature
virtual void bc30011(MInt)
virtual void bc40000(MInt)
virtual void bc20027(MInt)
virtual void bc10061(MInt)
virtual void bc20030(MInt)
virtual void bc30045(MInt)
virtual void bc40001(MInt)
virtual void bc20026(MInt)
virtual MInt findBndCnd(MInt index)
This function returns the index in the array of the boundary conditions that are inflow/outflow condi...
virtual void bc10042(MInt)
virtual void postCouple()
This function does the sub coupling step called from the coupling class.
virtual void bc66667(MInt)
MInt * m_periodicSegmentsIds
virtual void bc10045(MInt)
virtual void bc20003(MInt)
void(LbBndCnd::* BndCndHandler_Mb)(MInt set)
void bcDataWriteRestartData(ParallelIo ¶llelIo)
Write bndCndData data in given ParallelIo file.
MInt m_noBCWallMBNeighbors
virtual void bc10046(MInt)
virtual void bc40082(MInt)
virtual void bc40130(MInt)
virtual void bc20054(MInt)
virtual void solveBlasiusZ(MInt index)
Solves the Blasius equation for f,f',f".
virtual void bc30032(MInt)
virtual void bc10070(MInt)
virtual void bc30021(MInt)
std::map< MInt, MInt > m_boundaryCellMappingMb
virtual void bc30020(MInt)
MString m_interpolationDistMethod
MInt m_localReCutReportInterval
virtual void bc20020(MInt)
std::vector< BndCndHandler > bndCndHandlerVariables_MB
V GetWithDef(const std::map< K, V > &m, const K &key, const V &defval)
MInt * m_bndNormalDirection
virtual void bc20230(MInt)
virtual void bc10080(MInt)
std::vector< MInt > m_segIdUseBcData
hold number of domains using BC data for this segment
virtual void bc20004(MInt)
virtual void bc40045(MInt)
Storage of the Position of the Primitive Variables (u, v, w, T, p) in the value vectors of the solver...
Class that represents LB cell collector.
std::basic_string< char > MString
PARALLELIO_DEFAULT_BACKEND ParallelIo
MInt noBndCellsWithHalos
number of boundary cells represented in data
MInt noVars
number of variables that are stored for BC
MInt noBndCells
this is number of non-halo (!) boundary cells -> stored for restart
ParallelIo::size_type globalOffset
global offset for writing restart file
MFloat * data
pointer the relevant data