MAIA bb96820c
Multiphysics at AIA
Loading...
Searching...
No Matches
LsLb< nDim_, nDist, SysEqn > Class Template Reference

#include <lslb.h>

Inheritance diagram for LsLb< nDim_, nDist, SysEqn >:
[legend]
Collaboration diagram for LsLb< nDim_, nDist, SysEqn >:
[legend]

Public Types

using LsSolver = LsCartesianSolver< nDim >
 
using LbSolver = LbSolverDxQy< nDim, nDist, SysEqn >
 
- Public Types inherited from CouplingLS< nDim_ >
using solverType = LsCartesianSolver< nDim >
 
- Public Types inherited from CouplingLB< nDim_, nDist, SysEqn >
using solverType = LbSolverDxQy< nDim, nDist, SysEqn >
 
using LbBndCnd = LbBndCndDxQy< nDim, nDist, SysEqn >
 
using MbCellCollector = maia::lb::collector::LbMbCellCollector< nDim >
 

Public Member Functions

 LsLb (MInt couplingId, LsSolver *ls, LbSolver *lb)
 
void init () override
 
void preCouple (MInt step) override
 
void postCouple (MInt step) override
 
void finalizeCouplerInit () override
 
void finalizeSubCoupleInit (MInt couplingStep) override
 
void subCouple (MInt, MInt, std::vector< MBool > &) override
 
void cleanUp () override
 
void postAdaptation () override
 finalizeAdaptation More...
 
void finalizeAdaptation (const MInt solverId) override
 
MInt ls2lbId (const MInt lsId)
 
MInt ls2lbIdParent (const MInt lsId)
 
MInt lb2lsId (const MInt lbId)
 
MInt lb2lsIdParent (const MInt lbId)
 
void testCoupling ()
 transfers the LevelSetValues from the levelset to the moving boundary Part More...
 
void updateBoundaryCellsFromGField ()
 
void createBodyTree ()
 transfers the LevelSetValues from the levelset to the moving boundary Part More...
 
void updateLevelSetFlowSolver ()
 Updates the fv-mb-solver flow solver (after a completed levelSet TimeStep and finalizeLevelSet() ) More...
 
void updateFlowSolverLevelSet ()
 
void transferLevelSetFieldValues (MBool)
 transfers the LevelSetValues for all cells from the levelset to the moving boundary Part More...
 
void buildCollectedLevelSet (const MInt cellId)
 build the combined levelSet for the given cellId More...
 
MFloat interpolateLevelSet (MInt *interpolationCells, MFloat *point, const MInt set)
 
void interpolateLsLb (const MInt from, const MInt to)
 interpolate levelset values on the lb-grid More...
 
MInt noLevelSetFieldData ()
 
void initializeSolidDomain ()
 
void constructGField ()
 
template<MInt bodyType>
void constructGField_ ()
 
template<MInt bodyType>
void descendLevelSetValue (const MInt cellId, const MInt *bodyId, const MInt bodyCnt)
 
- Public Member Functions inherited from CouplingLS< nDim_ >
 CouplingLS (const MInt couplingId, solverType *b)
 
solverTypelsSolver () const
 
MInt a_noLsCells () const
 
MFloat a_outsideGValue () const
 
MInt a_noG0Cells (MInt set) const
 
MInt a_noBandCells (MInt set) const
 
MInt a_maxGCellLevel (const MInt setId) const
 
MFloata_levelSetFunctionG (const MInt cellId, const MInt setId)
 
MInt a_bodyIdG (const MInt cellId, const MInt set) const
 
MInta_bodyIdG (const MInt cellId, const MInt set)
 
MFloat a_coordinateG (const MInt gCellId, const MInt dim) const
 
MInt a_G0CellId (const MInt id, const MInt set) const
 
MFloat a_normalVectorG (const MInt gCellId, const MInt dim, const MInt set) const
 
MFloat a_curvatureG (const MInt gCellId, const MInt set) const
 
MBool a_inBandG (MInt gcellId, MInt set) const
 
MInt a_potentialGapCellClose (MInt gcellId) const
 
MBool a_nearGapG (const MInt gcellId) const
 
MInt a_bodyToSet (const MInt bodyId) const
 
MInt a_noEmbeddedBodies () const
 
MInt a_noSets () const
 
MInt a_maxnoSets () const
 
MInt a_startSet () const
 
MFloata_extensionVelocityG (const MInt cellId, const MInt dim, const MInt setId)
 
- Public Member Functions inherited from Coupling
 Coupling (const MInt couplingId)
 
virtual ~Coupling ()=default
 
 Coupling (const Coupling &)=delete
 
Couplingoperator= (const Coupling &)=delete
 
MInt couplerId () const
 
virtual void init ()=0
 
virtual void finalizeSubCoupleInit (MInt solverId)=0
 
virtual void finalizeCouplerInit ()=0
 
virtual void preCouple (MInt recipeStep)=0
 
virtual void subCouple (MInt recipeStep, MInt solverId, std::vector< MBool > &solverCompleted)=0
 
virtual void postCouple (MInt recipeStep)=0
 
virtual void cleanUp ()=0
 
virtual void balancePre ()
 Load balancing. More...
 
virtual void balancePost ()
 
virtual void reinitAfterBalance ()
 
virtual void prepareAdaptation ()
 
virtual void postAdaptation ()
 
virtual void finalizeAdaptation (const MInt)
 
virtual void writeRestartFile (const MInt)
 
virtual MInt noCellDataDlb () const
 Methods to inquire coupler data during balancing. 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 finalizeBalance (const MInt)
 
virtual MInt noCouplingTimers (const MBool NotUsed(allTimings)) const
 Number of coupling timers. More...
 
virtual void getCouplingTimings (std::vector< std::pair< MString, MFloat > > &NotUsed(timings), const MBool NotUsed(allTimings))
 Return coupling timings. More...
 
virtual void getDomainDecompositionInformation (std::vector< std::pair< MString, MInt > > &NotUsed(domainInfo))
 Return information on current domain decomposition (e.g. number of coupled cells/elements/...) More...
 
void setDlbTimer (const MInt timerId)
 
void startLoadTimer (const MString &name) const
 Start the load timer of the coupler. More...
 
void stopLoadTimer (const MString &name) const
 Stop the load timer of the coupler. More...
 
- Public Member Functions inherited from CouplingLB< nDim_, nDist, SysEqn >
 CouplingLB (const MInt couplingId, Solver *solvers, const MInt noSolvers=1)
 
 CouplingLB (const MInt couplingId, std::vector< solverType * > solvers)
 
MFloat a_physicalTime () const
 
MFloat lsTimeStep () const
 
MInt a_RKStep () const
 
MInt a_noLbCells (const MInt id=0) const
 
MInt a_noLevelSetsMb (const MInt id=0) const
 
MFloat a_Ma (const MInt id=0) const
 
MFloat a_Re (const MInt id=0) const
 
MInt a_pvu (const MInt id=0) const
 
MInt a_pvv (const MInt id=0) const
 
MInt a_pvw (const MInt id=0) const
 
MInt a_pvrho (const MInt id=0) const
 
MInt a_pvt (const MInt id=0) const
 
MInt a_isThermal (const MInt id=0) const
 
MInt a_noDistributions (const MInt id=0) const
 
MFloat a_initTemperatureKelvin (const MInt id=0) const
 
MFloat a_time () const
 
MbCellCollectora_mbCell (const MInt id=0)
 
MInt a_boundaryCellMb (const MInt cellId, const MInt id=0)
 
MFloata_levelSetFunctionMb (const MInt cellId, const MInt set, const MInt id=0)
 
MFloat a_levelSetFunctionMb (const MInt cellId, const MInt set, const MInt id=0) const
 
MInta_associatedBodyIdsMb (const MInt cellId, const MInt set, const MInt id=0)
 
MInt a_associatedBodyIdsMb (const MInt cellId, const MInt set, const MInt id=0) const
 
MInt a_parentId (const MInt cellId, const MInt id=0)
 
MInt a_childId (const MInt cellId, const MInt child, const MInt id=0)
 
MInt minCell (const MInt index, const MInt id=0) const
 
MInt noMinCells (const MInt id=0) const
 
MInt a_noCells (const MInt id=0) const
 
MFloat a_cellLengthAtLevel (MInt level, const MInt id=0)
 
MInt a_noEmbeddedBodiesLB (const MInt id=0) const
 
MBool a_isActive (const MInt cellId, const MInt id=0) const
 
MBool a_wasActive (const MInt cellId, const MInt id=0) const
 
MInt a_noVariables (const MInt id=0) const
 
MFloata_variable (const MInt cellId, const MInt varId, const MInt id=0)
 
MFloata_oldVariable (const MInt cellId, const MInt varId, const MInt id=0)
 
MInt a_bndCellId (const MInt bndCell, const MInt id=0)
 
MInt a_noBndCells (const MInt id=0)
 

Public Attributes

MFloatm_transferBoundingBox {}
 

Static Public Attributes

static constexpr MInt nDim = nDim_
 
static constexpr const MBool m_constructGField = false
 

Private Member Functions

void initData ()
 
void checkProperties ()
 Checks property-data which is read in by both ls-and Lb-Solver. More...
 
void readProperties ()
 
void updateGeometry ()
 Updates the member-variables in the geometry-intersection class. More...
 

Private Attributes

MInt m_lbSolverId {}
 
MInt m_lsSolverId {}
 
MBool m_outsideDefault {}
 
maia::coupling::Mapping bndryToBodyMapping
 
maia::coupling::Mapping bodyToBndryMapping
 
MBool m_static_computeBodyProperties_first = true
 
std::array< MFloat, m_maxNoEmbeddedBodiesm_static_computeBodyProperties_amplitude {}
 
std::array< MFloat, m_maxNoEmbeddedBodiesm_static_computeBodyProperties_freqFactor {}
 
std::array< MFloat, m_maxNoEmbeddedBodies *3 > m_static_computeBodyProperties_initialBodyCenter {}
 
MFloat m_static_computeBodyProperties_Strouhal {}
 
std::array< MFloat, m_maxNoEmbeddedBodiesm_static_computeBodyProperties_mu {}
 
std::array< MFloat, m_maxNoEmbeddedBodiesm_static_computeBodyProperties_mu2 {}
 
std::array< MFloat, m_maxNoEmbeddedBodiesm_static_computeBodyProperties_liftStartAngle1 {}
 
std::array< MFloat, m_maxNoEmbeddedBodiesm_static_computeBodyProperties_liftEndAngle1 {}
 
std::array< MFloat, m_maxNoEmbeddedBodiesm_static_computeBodyProperties_liftStartAngle2 {}
 
std::array< MFloat, m_maxNoEmbeddedBodiesm_static_computeBodyProperties_liftEndAngle2 {}
 
std::array< MFloat, m_maxNoEmbeddedBodiesm_static_computeBodyProperties_circleStartAngle {}
 
std::array< MFloat, m_maxNoEmbeddedBodies *3 > m_static_computeBodyProperties_normal {}
 
std::array< MInt, m_maxNoEmbeddedBodiesm_static_computeBodyProperties_bodyToFunction {}
 
MFloat m_static_computeBodyProperties_omega {}
 
MFloat m_static_computeBodyProperties_rotAngle {}
 
MBool m_static_updateLevelSetFlowSolver_firstRun = true
 

Static Private Attributes

static constexpr const MInt m_maxNoEmbeddedBodies = 1
 
static constexpr const MInt m_noCorners = (nDim == 2) ? 4 : 8
 

Additional Inherited Members

- Protected Member Functions inherited from Coupling
MFloat returnLoadRecord () const
 
MFloat returnIdleRecord () const
 
- Protected Member Functions inherited from CouplingLB< nDim_, nDist, SysEqn >
MInt noSolvers () const
 
solverTypelbSolver (const MInt solverId=0) const
 
LbBndCndlbBndCnd (const MInt id=0)
 

Detailed Description

template<MInt nDim_, MInt nDist, class SysEqn>
class LsLb< nDim_, nDist, SysEqn >

Definition at line 25 of file lslb.h.

Member Typedef Documentation

◆ LbSolver

template<MInt nDim_, MInt nDist, class SysEqn >
using LsLb< nDim_, nDist, SysEqn >::LbSolver = LbSolverDxQy<nDim, nDist, SysEqn>

Definition at line 32 of file lslb.h.

◆ LsSolver

template<MInt nDim_, MInt nDist, class SysEqn >
using LsLb< nDim_, nDist, SysEqn >::LsSolver = LsCartesianSolver<nDim>

Definition at line 31 of file lslb.h.

Constructor & Destructor Documentation

◆ LsLb()

template<MInt nDim, MInt nDist, class SysEqn >
LsLb< nDim, nDist, SysEqn >::LsLb ( MInt  couplingId,
LsSolver ls,
LbSolver lb 
)

Definition at line 23 of file lslb.cpp.

24 : Coupling(couplingId), CouplingLS<nDim>(couplingId, ls), CouplingLB<nDim, nDist, SysEqn>(couplingId, lb) {
25 TRACE();
26
27 initData();
31}
void updateGeometry()
Updates the member-variables in the geometry-intersection class.
Definition: lslb.cpp:374
void checkProperties()
Checks property-data which is read in by both ls-and Lb-Solver.
Definition: lslb.cpp:70
void readProperties()
void initData()

Member Function Documentation

◆ buildCollectedLevelSet()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::buildCollectedLevelSet ( const MInt  cellId)
Author
Tim Wegmann

Definition at line 598 of file lslb.cpp.

598 {
599 TRACE();
600
601 lbSolver().a_levelSetFunctionMB(cellId, 0) = lbSolver().a_levelSetFunctionMB(cellId, 1);
602 lbSolver().a_associatedBodyIds(cellId, 0) = lbSolver().a_associatedBodyIds(cellId, 1);
603 for(MInt set = 2; set < a_noLevelSetsMb(); set++) {
604 MFloat phi0 = lbSolver().a_levelSetFunctionMB(cellId, 0);
605 MFloat phi1 = lbSolver().a_levelSetFunctionMB(cellId, set);
606 MInt body0 = lbSolver().a_associatedBodyIds(cellId, 0);
607 MInt body1 = lbSolver().a_associatedBodyIds(cellId, set);
608
609 //
610 if(phi0 >= F0 && phi1 >= F0) {
611 if(phi1 < phi0) {
612 body0 = body1;
613 }
614 phi0 = mMin(phi0, phi1);
615 } else if(phi0 <= F0 && phi1 <= F0) {
616 if(abs(phi1) > abs(phi0)) {
617 body0 = body1;
618 }
619 phi0 = -sqrt(phi0 * phi0 + phi1 * phi1);
620 } else if(phi0 * phi1 <= F0) {
621 if(phi0 < F0) {
622 // phi0 = phi0;
623 } else {
624 phi0 = phi1;
625 body0 = body1;
626 }
627 }
628
629 lbSolver().a_levelSetFunctionMB(cellId, 0) = phi0;
630 lbSolver().a_associatedBodyIds(cellId, 0) = body0;
631 }
632}
solverType & lbSolver(const MInt solverId=0) const
Definition: coupling.h:454
MInt a_noLevelSetsMb(const MInt id=0) const
Definition: coupling.h:471
constexpr T mMin(const T &x, const T &y)
Definition: functions.h:90
int32_t MInt
Definition: maiatypes.h:62
double MFloat
Definition: maiatypes.h:52

◆ checkProperties()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::checkProperties
privatevirtual

Implements Coupling.

Definition at line 70 of file lslb.cpp.

70 {
71 TRACE();
72
73 lbSolver().m_noEmbeddedBodies = lsSolver().m_noEmbeddedBodies;
74
75 if(lsSolver().m_maxNoSets > 0) lbSolver().m_noLevelSetsUsedForMb = lsSolver().m_maxNoSets;
76 if(lbSolver().m_useOnlyCollectedLS) lbSolver().m_noLevelSetsUsedForMb = 1;
77
78 lbSolver().m_maxNoSets = lbSolver().m_noLevelSetsUsedForMb;
79
80 lbSolver().m_constructGField = lsSolver().m_constructGField;
81}
solverType & lsSolver() const
Definition: coupling.h:188

◆ cleanUp()

template<MInt nDim_, MInt nDist, class SysEqn >
void LsLb< nDim_, nDist, SysEqn >::cleanUp ( )
inlineoverridevirtual

Implements Coupling.

Definition at line 128 of file lslb.h.

128{};

◆ constructGField()

template<MInt nDim_, MInt nDist, class SysEqn >
void LsLb< nDim_, nDist, SysEqn >::constructGField ( )

◆ constructGField_()

template<MInt nDim_, MInt nDist, class SysEqn >
template<MInt bodyType>
void LsLb< nDim_, nDist, SysEqn >::constructGField_ ( )

◆ createBodyTree()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::createBodyTree

Definition at line 344 of file lslb.cpp.

344 {
345 TRACE();
346 IF_CONSTEXPR(nDim == 3) { updateGeometry(); }
347}
static constexpr MInt nDim
Definition: lslb.h:27

◆ descendLevelSetValue()

template<MInt nDim_, MInt nDist, class SysEqn >
template<MInt bodyType>
void LsLb< nDim_, nDist, SysEqn >::descendLevelSetValue ( const MInt  cellId,
const MInt bodyId,
const MInt  bodyCnt 
)

◆ finalizeAdaptation()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::finalizeAdaptation ( const MInt  solverId)
overridevirtual

Reimplemented from Coupling.

Definition at line 505 of file lslb.cpp.

505 {
506 TRACE();
507
508 if(solverId == 1) {
509 if(lbSolver().isActive()) {
510 lbSolver().initializeMovingBoundaries();
512 }
514 }
515}
LbBndCnd & lbBndCnd(const MInt id=0)
Definition: coupling.h:461
virtual void initializeBndMovingBoundaries()
This function initializes the LbBndCnd for coupled simulations.
Definition: lbbndcnd.cpp:3498
void updateLevelSetFlowSolver()
Updates the fv-mb-solver flow solver (after a completed levelSet TimeStep and finalizeLevelSet() )
Definition: lslb.cpp:389

◆ finalizeCouplerInit()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::finalizeCouplerInit
overridevirtual

Implements Coupling.

Definition at line 422 of file lslb.cpp.

422 {
423 TRACE();
424 lsSolver().m_timeStep = F1;
425}

◆ finalizeSubCoupleInit()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::finalizeSubCoupleInit ( MInt  couplingStep)
overridevirtual

Implements Coupling.

Definition at line 428 of file lslb.cpp.

428 {
429 TRACE();
430 std::ignore = couplingStep;
431}

◆ init()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::init
overridevirtual

Implements Coupling.

Definition at line 411 of file lslb.cpp.

411 {
412 TRACE();
413
414 if(lbSolver().isActive()) {
415 lbSolver().initializeMovingBoundaries();
417 }
419}

◆ initData()

template<MInt nDim_, MInt nDist, class SysEqn >
void LsLb< nDim_, nDist, SysEqn >::initData ( )
private

◆ initializeSolidDomain()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::initializeSolidDomain

Definition at line 519 of file lslb.cpp.

519 {
520 TRACE();
521
522 if(!lbSolver().isActive()) {
523 return;
524 }
525
526 MFloatScratchSpace bodyVelocities(a_noEmbeddedBodies(), nDim, AT_, "bodyVelocities");
527
528 // Get the body Velocity for each embedded body
529 for(MInt body = 0; body < a_noEmbeddedBodies(); body++) {
530 lsSolver().computeBodyPropertiesForced(2, &bodyVelocities(body, 0), body, globalTimeStep);
531 }
532
533 for(MInt i = 0; i < lbSolver().a_noCells(); i++) {
534 // Regular fluid cell
535 if(a_isActive(i) && a_wasActive(i)) {
536 continue;
537 }
538
539 // Regular Solid cell
540 if(!a_isActive(i)) {
541 // TODO labels:COUPLER,toremove Skip non-leaf cells ...
542 /*if(!lbSolver().c_isLeafCell(i)){
543 continue;
544 }*/
545
546 // determine the LS-Body to which the cell belongs, to set the right body velocity
547 MInt bodyId = -1;
548 MInt setOfBody = 0;
549 for(MInt set = lbSolver().m_levelSetId; set < lbSolver().m_maxNoSets; set++) {
550 if(a_associatedBodyIdsMb(i, set) >= 0) {
551 bodyId = a_associatedBodyIdsMb(i, set);
552 setOfBody = set;
553 break;
554 }
555 }
556
557 // the Velocity of the deactivated cell is set to the body velocity
558 // the Density is set to 1.0
559 if((bodyId >= 0) && (bodyId < a_noEmbeddedBodies()) && (a_levelSetFunctionMb(i, setOfBody) < 0)) {
560 for(MInt j = 0; j < nDim; j++) {
561 a_variable(i, j) = bodyVelocities(bodyId, j);
562 a_oldVariable(i, j) = bodyVelocities(bodyId, j);
563 }
564 MFloat squaredVelocity = 0.0;
565 for(MInt n = 0; n < nDim; n++) {
566 squaredVelocity += bodyVelocities(bodyId, n) * bodyVelocities(bodyId, n);
567 }
568 lbSolver().setEqDists(i, 1.0, &bodyVelocities(bodyId, 0));
569 if(a_isThermal()) {
571 lbSolver().setEqDistsThermal(i, a_initTemperatureKelvin(), F1, squaredVelocity, &bodyVelocities(bodyId, 0));
572 }
573 } else {
574 for(MInt j = 0; j < a_noVariables(); j++) {
575 a_variable(i, j) = F0;
576 a_oldVariable(i, j) = F0;
577 }
578 MFloat squaredVelocity = 0.0;
579 MFloat bodyVelocitiesOutsideLs[nDim] = {F0};
580 lbSolver().setEqDists(i, 1.0, bodyVelocitiesOutsideLs);
581 if(a_isThermal()) {
583 lbSolver().setEqDistsThermal(i, a_initTemperatureKelvin(), F1, squaredVelocity, bodyVelocitiesOutsideLs);
584 }
585 }
586 a_variable(i, a_pvrho()) = 1.0;
587 a_oldVariable(i, a_pvrho()) = 1.0;
588 } else {
590 }
591 }
592}
MInt a_isThermal(const MInt id=0) const
Definition: coupling.h:479
MBool a_isActive(const MInt cellId, const MInt id=0) const
Definition: coupling.h:522
MFloat & a_oldVariable(const MInt cellId, const MInt varId, const MInt id=0)
Definition: coupling.h:533
MInt a_pvt(const MInt id=0) const
Definition: coupling.h:478
MInt a_pvrho(const MInt id=0) const
Definition: coupling.h:477
MInt & a_associatedBodyIdsMb(const MInt cellId, const MInt set, const MInt id=0)
Definition: coupling.h:498
MBool a_wasActive(const MInt cellId, const MInt id=0) const
Definition: coupling.h:524
MFloat a_initTemperatureKelvin(const MInt id=0) const
Definition: coupling.h:482
MFloat & a_variable(const MInt cellId, const MInt varId, const MInt id=0)
Definition: coupling.h:528
MInt a_noVariables(const MInt id=0) const
Definition: coupling.h:526
MFloat & a_levelSetFunctionMb(const MInt cellId, const MInt set, const MInt id=0)
Definition: coupling.h:490
MInt a_noEmbeddedBodies() const
Definition: coupling.h:221
void refillEmergedCell(const MInt)
void setEqDists(const MInt cellId, const MFloat rho, const MFloat *const velocity)
Set BOTH distributions to equilibrium.
Definition: lbsolverdxqy.h:401
void setEqDistsThermal(const MInt cellId, const MFloat T, const MFloat rho, const MFloat *const velocity)
Calls function for setting thermal distributions to equilibrium.
Definition: lbsolverdxqy.h:462
This class is a ScratchSpace.
Definition: scratch.h:758
MInt globalTimeStep

◆ interpolateLevelSet()

template<MInt nDim, MInt nDist, class SysEqn >
MFloat LsLb< nDim, nDist, SysEqn >::interpolateLevelSet ( MInt interpolationCells,
MFloat point,
const MInt  set 
)

interpolates the levelSet value further on fv-cells

Author
Tim Wegmann
Date
2020-04-01

Definition at line 663 of file lslb.cpp.

663 {
664 TRACE();
665
666 std::function<MFloat(const MInt, const MInt)> scalarField = [&](const MInt cellId, const MInt refSet) {
667 return static_cast<MFloat>(lbSolver().a_levelSetFunctionMB(cellId, refSet));
668 };
669
670 std::function<MFloat(const MInt, const MInt)> coordinate = [&](const MInt cellId, const MInt id) {
671 return static_cast<MFloat>(lbSolver().a_coordinate(cellId, id));
672 };
673
674 return lbSolver().interpolateFieldDataLb(&interpolationCells[0], &point[0], set, scalarField, coordinate);
675}
MInt id
Definition: maiatypes.h:71
void const MInt cellId
Definition: collector.h:239

◆ interpolateLsLb()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::interpolateLsLb ( const MInt  from,
const MInt  to 
)
Author
Tim Wegmann
Date
March 2020

Definition at line 640 of file lslb.cpp.

640 {
641 TRACE();
642
643 MInt interpolationCells[8] = {0, 0, 0, 0, 0, 0, 0, 0};
644 MFloat point[3] = {lbSolver().a_coordinate(to, 0), lbSolver().a_coordinate(to, 1), lbSolver().a_coordinate(to, 2)};
645
646 const MInt position = lbSolver().setUpLbInterpolationStencil(from, interpolationCells, point);
647
648 for(MInt set = 0; set < a_noLevelSetsMb(); set++) {
649 if(position < 0) {
650 lbSolver().a_levelSetFunctionMB(to, set) = lbSolver().a_levelSetFunctionMB(from, set);
651 } else {
652 MFloat phi = interpolateLevelSet(interpolationCells, point, set);
653 lbSolver().a_levelSetFunctionMB(to, set) = phi;
654 }
655 }
657}
void buildCollectedLevelSet(const MInt cellId)
build the combined levelSet for the given cellId
Definition: lslb.cpp:598
MFloat interpolateLevelSet(MInt *interpolationCells, MFloat *point, const MInt set)
Definition: lslb.cpp:663

◆ lb2lsId()

template<MInt nDim_, MInt nDist, class SysEqn >
MInt LsLb< nDim_, nDist, SysEqn >::lb2lsId ( const MInt  lbId)
inline

Definition at line 137 of file lslb.h.

137{ return convertId(lbSolver(), lsSolver(), lbId); };
MInt convertId(SolverA &solverA, SolverB &solverB, const MInt solverAId)
Conversion from solverA id to the solverB id on the same-level only!
Definition: couplingutils.h:21

◆ lb2lsIdParent()

template<MInt nDim_, MInt nDist, class SysEqn >
MInt LsLb< nDim_, nDist, SysEqn >::lb2lsIdParent ( const MInt  lbId)
inline

Definition at line 138 of file lslb.h.

138{ return convertIdParent(lbSolver(), lsSolver(), lbId); };
MInt convertIdParent(SolverA &solverA, SolverB &solverB, const MInt solverAId)
Conversion from solverA id to the solverB id If no cell on the same level is found,...
Definition: couplingutils.h:46

◆ ls2lbId()

template<MInt nDim_, MInt nDist, class SysEqn >
MInt LsLb< nDim_, nDist, SysEqn >::ls2lbId ( const MInt  lsId)
inline

Definition at line 135 of file lslb.h.

135{ return convertId(lsSolver(), lbSolver(), lsId); };

◆ ls2lbIdParent()

template<MInt nDim_, MInt nDist, class SysEqn >
MInt LsLb< nDim_, nDist, SysEqn >::ls2lbIdParent ( const MInt  lsId)
inline

Definition at line 136 of file lslb.h.

136{ return convertIdParent(lsSolver(), lbSolver(), lsId); };

◆ noLevelSetFieldData()

template<MInt nDim, MInt nDist, class SysEqn >
MInt LsLb< nDim, nDist, SysEqn >::noLevelSetFieldData

Definition at line 352 of file lslb.cpp.

352 {
354
355 if(lsSolver().m_writeOutAllLevelSetFunctions) {
357 } else {
359 }
360 if(lsSolver().m_writeOutAllCurvatures) {
362 } else {
364 }
365
366 return noLevelSetFieldData;
367}
MInt a_noSets() const
Definition: coupling.h:222
MInt noLevelSetFieldData()
Definition: lslb.cpp:352

◆ postAdaptation()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::postAdaptation
overridevirtual
Author
Moritz Waldmann

Reimplemented from Coupling.

Definition at line 500 of file lslb.cpp.

500 {
501 TRACE();
502}

◆ postCouple()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::postCouple ( MInt  step)
overridevirtual

Implements Coupling.

Definition at line 478 of file lslb.cpp.

478 {
479 TRACE();
480
481 switch(step) {
482 case 0: {
483 break;
484 }
485 case 1: {
487 lsSolver().m_timeStep = F1;
488 break;
489 }
490 default: {
491 break;
492 }
493 }
494}
virtual void postCouple()
This function does the sub coupling step called from the coupling class.
Definition: lbbndcnd.cpp:3538

◆ preCouple()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::preCouple ( MInt  step)
overridevirtual

Implements Coupling.

Definition at line 434 of file lslb.cpp.

434 {
435 TRACE();
436
437 switch(step) {
438 case 0: {
439 break;
440 }
441 case 1: {
443 std::vector<MInt> maxGCellLevels(lsSolver().m_maxNoSets);
444 for(MInt set = 0; set < lsSolver().m_maxNoSets; set++) {
445 maxGCellLevels[set] = lsSolver().a_maxGCellLevel(set);
446 }
447
448 lbSolver().preCoupleLs(maxGCellLevels);
449
450 lbSolver().createBndryToBodyMapping(bndryToBodyMapping, bodyToBndryMapping);
451
453
455
456 MFloatScratchSpace bodyVelocities(m_maxNoEmbeddedBodies, nDim, AT_, "bodyVelocities");
457 for(MInt body = 0; body < m_maxNoEmbeddedBodies; body++) {
458 lsSolver().computeBodyPropertiesForced(2, &bodyVelocities(body, 0), body, globalTimeStep);
459 }
460
461 for(MInt mbCell = 0; mbCell < a_mbCell().size(); mbCell++) {
462 for(auto body : bndryToBodyMapping[mbCell]) {
463 for(MInt n = 0; n < nDim; n++) {
464 a_mbCell().velocity(mbCell, n) = bodyVelocities(body, n);
465 }
466 }
467 }
468
469 break;
470 }
471 default: {
472 break;
473 }
474 }
475}
MbCellCollector & a_mbCell(const MInt id=0)
Definition: coupling.h:486
virtual void createMBComm()
This function creates the communicator for calculating the wall forces of the level-set boundaries.
Definition: lbbndcnd.cpp:3416
void initializeSolidDomain()
Definition: lslb.cpp:519
maia::coupling::Mapping bodyToBndryMapping
Definition: lslb.h:44
static constexpr const MInt m_maxNoEmbeddedBodies
Definition: lslb.h:46
maia::coupling::Mapping bndryToBodyMapping
Definition: lslb.h:43
constexpr MInt size() const
Return size (i.e., currently used number of nodes)
Definition: container.h:89
MFloat & velocity(const MInt id, const MInt dim)
Accessor for velocities.

◆ readProperties()

template<MInt nDim_, MInt nDist, class SysEqn >
void LsLb< nDim_, nDist, SysEqn >::readProperties ( )
privatevirtual

Implements Coupling.

◆ subCouple()

template<MInt nDim_, MInt nDist, class SysEqn >
void LsLb< nDim_, nDist, SysEqn >::subCouple ( MInt  ,
MInt  ,
std::vector< MBool > &   
)
inlineoverridevirtual

Implements Coupling.

Definition at line 127 of file lslb.h.

127{};

◆ testCoupling()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::testCoupling

Definition at line 114 of file lslb.cpp.

114 {
115 TRACE();
116
117 if(lsSolver().m_constructGField) return;
118
119 for(MInt lbCellId = 0; lbCellId < a_noLbCells(); lbCellId++) {
120 ASSERT(lbSolver().grid().tree().solver2grid(lbCellId) >= 0, "");
121 ASSERT(lbSolver().grid().solverFlag(lbSolver().grid().tree().solver2grid(lbCellId), m_lbSolverId), "");
122#ifdef COUPLING_DEBUG_
123 if(lsSolver().grid().solverFlag(lbSolver().grid().tree().solver2grid(lbCellId), m_lsSolverId)) {
124 ASSERT(ls2lbId(lb2lsId(lbCellId)) == lbCellId,
125 to_string(lbCellId) + " " + to_string(lb2lsId(lbCellId)) + " " + to_string(ls2lbId(lb2lsId(lbCellId))));
126 }
127#endif
128 }
129
130 for(MInt cellId = 0; cellId < a_noLsCells(); cellId++) {
131 ASSERT(lsSolver().grid().tree().solver2grid(cellId) >= 0, "");
132 ASSERT(lsSolver().grid().solverFlag(lsSolver().grid().tree().solver2grid(cellId), m_lsSolverId), "");
133#ifdef COUPLING_DEBUG_
134 if(lbSolver().grid().solverFlag(lsSolver().grid().tree().solver2grid(cellId), m_lbSolverId)) {
135 ASSERT(lb2lsId(ls2lbId(cellId)) == cellId,
136 to_string(cellId) + " " + to_string(ls2lbId(cellId)) + " " + to_string(lb2lsId(ls2lbId(cellId))));
137 }
138#endif
139 }
140
141 if(!lsSolver().m_levelSetLb) return;
142
143#ifdef COUPLING_DEBUG_
144 for(MInt lbCellId = 0; lbCellId < a_noLbCells(); lbCellId++) {
145 for(MInt dir = 0; dir < nDim; dir++) {
146 if(lsSolver().grid().solverFlag(lbSolver().grid().tree().solver2grid(lbCellId), m_lsSolverId)) {
147 ASSERT(abs(lbSolver().c_coordinate(lbCellId, dir) - a_coordinateG(lb2lsId(lbCellId), dir)) < 0.00000001, "");
148 }
149 }
150 }
151#endif
152}
MInt a_noLbCells(const MInt id=0) const
Definition: coupling.h:470
MInt a_noLsCells() const
Definition: coupling.h:191
MFloat a_coordinateG(const MInt gCellId, const MInt dim) const
Definition: coupling.h:207
MInt ls2lbId(const MInt lsId)
Definition: lslb.h:135
MInt m_lbSolverId
Definition: lslb.h:38
static constexpr const MBool m_constructGField
Definition: lslb.h:110
MInt m_lsSolverId
Definition: lslb.h:39
MInt lb2lsId(const MInt lbId)
Definition: lslb.h:137

◆ transferLevelSetFieldValues()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::transferLevelSetFieldValues ( MBool  exchangeLVS)
Author
Christoph Siewert, Tim Wegmann

Definition at line 159 of file lslb.cpp.

159 {
160 TRACE();
161
162 const MInt noRfJumps = mMax(0, lbSolver().maxLevel() - lsSolver().maxRefinementLevel());
163
164 // Nothing to transfer if lbSolver is inactive!
165 if(!lbSolver().isActive()) return;
166
167 if(exchangeLVS) {
168 if(lsSolver().isActive()) {
169 lsSolver().exchangeAllLevelSetData();
170 lsSolver().checkHaloCells();
171 }
172 }
173
174 if(lsSolver().isActive()) {
175 std::list<MInt> interpolationParents;
176 interpolationParents.clear();
177
178 for(MInt cellId = 0; cellId < a_noLbCells(); cellId++) {
179 // reset values with invalid/defaults
180 for(MInt set = 0; set < a_noLevelSetsMb(); set++) {
181 if(m_outsideDefault) {
182 lbSolver().a_levelSetFunctionMB(cellId, set) = a_outsideGValue();
183 } else {
184 lbSolver().a_levelSetFunctionMB(cellId, set) = -a_outsideGValue();
185 }
186 lbSolver().a_associatedBodyIds(cellId, set) = -2;
187 }
188 if(m_transferBoundingBox != nullptr) {
189 if(m_transferBoundingBox[0] > lbSolver().c_coordinate(cellId, 0)
190 || m_transferBoundingBox[0 + nDim] < lbSolver().c_coordinate(cellId, 0)) {
191 continue;
192 }
193 if(m_transferBoundingBox[1] > lbSolver().c_coordinate(cellId, 1)
194 || m_transferBoundingBox[1 + nDim] < lbSolver().c_coordinate(cellId, 1)) {
195 continue;
196 }
197 IF_CONSTEXPR(nDim == 3) {
198 if(m_transferBoundingBox[2] > lbSolver().c_coordinate(cellId, 2)
199 || m_transferBoundingBox[2 + nDim] < lbSolver().c_coordinate(cellId, 2)) {
200 continue;
201 }
202 }
203 }
204 const MInt gCellId = lb2lsId(cellId);
205 // direct transfer of matching cells
206 if(gCellId > -1) {
207 for(MInt set = 0; set < a_noLevelSetsMb(); set++) {
208 lbSolver().a_levelSetFunctionMB(cellId, set) = a_levelSetFunctionG(gCellId, set);
209 lbSolver().a_associatedBodyIds(cellId, set) = a_bodyIdG(gCellId, set);
210 }
211 } else {
212 if(!g_multiSolverGrid) {
213 ASSERT(cellId >= a_noLbCells(), "");
214 } else {
215 // multiSolverGrid, where the level and the grid-extension might differ!
216 if(cellId <= a_noLbCells()) { // grid-cell!
217 const MInt gCellParent = lb2lsIdParent(cellId);
218
219 if(gCellParent > -1) { // just a different level
220
221 if(noRfJumps == 0) {
222 // same maxRefinementLevel, meaning just a difference due to different refinement-widths
223 for(MInt set = 0; set < a_noLevelSetsMb(); set++) {
224 lbSolver().a_associatedBodyIds(cellId, set) = a_bodyIdG(gCellParent, set);
225 // ASSERT(!lsSolver().a_inBandG( gCellParent , set ), "");
226 lbSolver().a_levelSetFunctionMB(cellId, set) = a_levelSetFunctionG(gCellParent, set);
227 }
228 } else {
229 // ls-interpolation towards higher lb-level
230 if(lbSolver().a_isHalo(cellId) || lsSolver().a_isHalo(gCellParent)) continue;
231 // simple transfer if not a band-cell
232 if(lsSolver().m_buildCollectedLevelSetFunction && !lsSolver().a_inBandG(gCellParent, 0)) {
233 for(MInt set = 0; set < a_noLevelSetsMb(); set++) {
234 lbSolver().a_levelSetFunctionMB(cellId, set) = a_levelSetFunctionG(gCellParent, set);
235 lbSolver().a_associatedBodyIds(cellId, set) = a_bodyIdG(gCellParent, set);
236 }
237 continue;
238 }
239 const MInt levelDifference = lbSolver().c_level(cellId) - lsSolver().a_level(gCellParent);
240 if(levelDifference == 1) {
241 // direct interpolation from ls to fv for only 1 level difference
242 MFloat point[3] = {lbSolver().a_coordinate(cellId, 0), lbSolver().a_coordinate(cellId, 1),
243 lbSolver().a_coordinate(cellId, 2)};
244 MInt interpolationCells[8] = {0, 0, 0, 0, 0, 0, 0, 0};
245 MInt position = lsSolver().setUpLevelSetInterpolationStencil(gCellParent, interpolationCells, point);
246
247 for(MInt set = 0; set < a_noLevelSetsMb(); set++) {
248 lbSolver().a_associatedBodyIds(cellId, set) = a_bodyIdG(gCellParent, set);
249 if(position < 0) {
250 // no valid interpolation stencil found
251 lbSolver().a_levelSetFunctionMB(cellId, set) = a_levelSetFunctionG(gCellParent, set);
252 } else { // interpolation for all sets
253 const MFloat phi = lsSolver().interpolateLevelSet(interpolationCells, point, set);
254
255 lbSolver().a_levelSetFunctionMB(cellId, set) = phi;
256 }
257 }
258 // build collected levelset data
260
261 } else {
262 // add cells based on which the fv-interpolation needs to start
263 // that is cells for which the level difference is above 1
264 for(MInt set = 0; set < a_noLevelSetsMb(); set++) {
265 lbSolver().a_associatedBodyIds(cellId, set) = a_bodyIdG(gCellParent, set);
266 }
267 MInt parent = cellId;
268 for(MInt i = 0; i < levelDifference - 1; i++) {
269 parent = lbSolver().c_parentId(parent);
270 }
271 ASSERT(parent > -1, "");
272 // parent of this parent has a direct link, meaning that the values for the parent
273 // are set above!
274 ASSERT(lb2lsId(lbSolver().c_parentId(parent)) == gCellParent, "");
275 interpolationParents.push_back(parent);
276 }
277 }
278 }
279 }
280 }
281 }
282 }
283
284 // now interpolate through all childs
285 // iterate downwards level by level and exchange values in between!
286 if(!interpolationParents.empty()) {
287 cerr << "This part is not tested yet!!!" << endl;
288 std::list<MInt> newInterpolationParents;
289
290 for(MInt lvl = lsSolver().maxUniformRefinementLevel(); lvl < lbSolver().maxRefinementLevel(); lvl++) {
291 lbSolver().exchangeData(&(lbSolver().a_levelSetFunctionMB(0, 0)), lbSolver().m_maxNoSets);
292 lbSolver().exchangeData(&(lbSolver().a_associatedBodyIds(0, 0)), lbSolver().m_maxNoSets);
293
294 MInt noInterpolationCells = (MInt)interpolationParents.size();
295 MPI_Allreduce(MPI_IN_PLACE, &noInterpolationCells, 1, MPI_INT, MPI_MAX, lbSolver().mpiComm(), AT_, "INPLACE",
296 "noInterpolationCells");
297 if(noInterpolationCells == 0) break;
298
299 if(interpolationParents.empty()) continue;
300
301 ASSERT(noRfJumps > 1, "");
302
303 interpolationParents.sort();
304 interpolationParents.unique();
305 newInterpolationParents.clear();
306
307 for(auto it = interpolationParents.begin(); it != interpolationParents.end(); it++) {
308 const MInt parent = (*it);
309 for(MInt c = 0; c < lbSolver().grid().m_maxNoChilds; c++) {
310 const MInt childId = lbSolver().c_childId(parent, c);
311 if(childId < 0) continue;
312 // interpolateLsLb(parent, childId);
313 if(!lbSolver().c_isLeafCell(childId)) {
314 newInterpolationParents.push_back(childId);
315 }
316 }
317 }
318 interpolationParents.clear();
319 for(auto it = newInterpolationParents.begin(); it != newInterpolationParents.end(); it++) {
320 const MInt cellId = (*it);
321 interpolationParents.push_back(cellId);
322 }
323 }
324 }
325 } else {
326 for(MInt cellId = 0; cellId < a_noLbCells(); cellId++) {
327 for(MInt set = 0; set < a_noLevelSetsMb(); set++) {
328 if(m_outsideDefault) {
329 lbSolver().a_levelSetFunctionMB(cellId, set) = a_outsideGValue();
330 } else {
331 lbSolver().a_levelSetFunctionMB(cellId, set) = -a_outsideGValue();
332 }
333 lbSolver().a_associatedBodyIds(cellId, set) = -2;
334 }
335 }
336 }
337}
MInt a_bodyIdG(const MInt cellId, const MInt set) const
Definition: coupling.h:203
MBool a_inBandG(MInt gcellId, MInt set) const
Definition: coupling.h:217
MFloat a_outsideGValue() const
Definition: coupling.h:192
MFloat & a_levelSetFunctionG(const MInt cellId, const MInt setId)
Definition: coupling.h:199
MInt lb2lsIdParent(const MInt lbId)
Definition: lslb.h:138
MBool m_outsideDefault
Definition: lslb.h:41
MFloat * m_transferBoundingBox
Definition: lslb.h:111
constexpr T mMax(const T &x, const T &y)
Definition: functions.h:94
MBool g_multiSolverGrid
int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Allreduce

◆ updateBoundaryCellsFromGField()

template<MInt nDim_, MInt nDist, class SysEqn >
void LsLb< nDim_, nDist, SysEqn >::updateBoundaryCellsFromGField ( )

◆ updateFlowSolverLevelSet()

template<MInt nDim_, MInt nDist, class SysEqn >
void LsLb< nDim_, nDist, SysEqn >::updateFlowSolverLevelSet ( )

◆ updateGeometry()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::updateGeometry
private
Author
Tim Wegmann

Definition at line 374 of file lslb.cpp.

374 {
375 TRACE();
376
377 lbSolver().m_geometryIntersection->m_noEmbeddedBodies = lbSolver().m_noEmbeddedBodies;
378 lbSolver().m_geometryIntersection->m_noLevelSetsUsedForMb = lbSolver().m_noLevelSetsUsedForMb;
379 lbSolver().m_geometryIntersection->m_bodyToSetTable = lsSolver().m_bodyToSetTable;
380 lbSolver().m_geometryIntersection->m_setToBodiesTable = lsSolver().m_setToBodiesTable;
381 lbSolver().m_geometryIntersection->m_noBodiesInSet = lsSolver().m_noBodiesInSet;
382}

◆ updateLevelSetFlowSolver()

template<MInt nDim, MInt nDist, class SysEqn >
void LsLb< nDim, nDist, SysEqn >::updateLevelSetFlowSolver
Author
Tim Wegmann

Definition at line 389 of file lslb.cpp.

389 {
390 TRACE();
391
392 if(lbSolver().m_constructGField) return;
393
395
396 if(firstRun
397 || (lbSolver().m_trackMovingBndry && globalTimeStep >= lbSolver().m_trackMbStart
398 && globalTimeStep < lbSolver().m_trackMbEnd)) {
399 testCoupling();
400
401 // 1) transfer the levelSet Data to the flow solver
403 }
404
405 firstRun = false;
406}
void transferLevelSetFieldValues(MBool)
transfers the LevelSetValues for all cells from the levelset to the moving boundary Part
Definition: lslb.cpp:159
void testCoupling()
transfers the LevelSetValues from the levelset to the moving boundary Part
Definition: lslb.cpp:114
MBool m_static_updateLevelSetFlowSolver_firstRun
Definition: lslb.h:68
bool MBool
Definition: maiatypes.h:58

Member Data Documentation

◆ bndryToBodyMapping

template<MInt nDim_, MInt nDist, class SysEqn >
maia::coupling::Mapping LsLb< nDim_, nDist, SysEqn >::bndryToBodyMapping
private

Definition at line 43 of file lslb.h.

◆ bodyToBndryMapping

template<MInt nDim_, MInt nDist, class SysEqn >
maia::coupling::Mapping LsLb< nDim_, nDist, SysEqn >::bodyToBndryMapping
private

Definition at line 44 of file lslb.h.

◆ m_constructGField

template<MInt nDim_, MInt nDist, class SysEqn >
constexpr const MBool LsLb< nDim_, nDist, SysEqn >::m_constructGField = false
staticconstexpr

Definition at line 110 of file lslb.h.

◆ m_lbSolverId

template<MInt nDim_, MInt nDist, class SysEqn >
MInt LsLb< nDim_, nDist, SysEqn >::m_lbSolverId {}
private

Definition at line 38 of file lslb.h.

◆ m_lsSolverId

template<MInt nDim_, MInt nDist, class SysEqn >
MInt LsLb< nDim_, nDist, SysEqn >::m_lsSolverId {}
private

Definition at line 39 of file lslb.h.

◆ m_maxNoEmbeddedBodies

template<MInt nDim_, MInt nDist, class SysEqn >
constexpr const MInt LsLb< nDim_, nDist, SysEqn >::m_maxNoEmbeddedBodies = 1
staticconstexprprivate

Definition at line 46 of file lslb.h.

◆ m_noCorners

template<MInt nDim_, MInt nDist, class SysEqn >
constexpr const MInt LsLb< nDim_, nDist, SysEqn >::m_noCorners = (nDim == 2) ? 4 : 8
staticconstexprprivate

Definition at line 47 of file lslb.h.

◆ m_outsideDefault

template<MInt nDim_, MInt nDist, class SysEqn >
MBool LsLb< nDim_, nDist, SysEqn >::m_outsideDefault {}
private

Definition at line 41 of file lslb.h.

◆ m_static_computeBodyProperties_amplitude

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_amplitude {}
private

Definition at line 51 of file lslb.h.

◆ m_static_computeBodyProperties_bodyToFunction

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MInt, m_maxNoEmbeddedBodies> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_bodyToFunction {}
private

Definition at line 63 of file lslb.h.

◆ m_static_computeBodyProperties_circleStartAngle

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_circleStartAngle {}
private

Definition at line 61 of file lslb.h.

◆ m_static_computeBodyProperties_first

template<MInt nDim_, MInt nDist, class SysEqn >
MBool LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_first = true
private

Definition at line 50 of file lslb.h.

◆ m_static_computeBodyProperties_freqFactor

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_freqFactor {}
private

Definition at line 52 of file lslb.h.

◆ m_static_computeBodyProperties_initialBodyCenter

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies * 3> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_initialBodyCenter {}
private

Definition at line 53 of file lslb.h.

◆ m_static_computeBodyProperties_liftEndAngle1

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_liftEndAngle1 {}
private

Definition at line 58 of file lslb.h.

◆ m_static_computeBodyProperties_liftEndAngle2

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_liftEndAngle2 {}
private

Definition at line 60 of file lslb.h.

◆ m_static_computeBodyProperties_liftStartAngle1

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_liftStartAngle1 {}
private

Definition at line 57 of file lslb.h.

◆ m_static_computeBodyProperties_liftStartAngle2

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_liftStartAngle2 {}
private

Definition at line 59 of file lslb.h.

◆ m_static_computeBodyProperties_mu

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_mu {}
private

Definition at line 55 of file lslb.h.

◆ m_static_computeBodyProperties_mu2

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_mu2 {}
private

Definition at line 56 of file lslb.h.

◆ m_static_computeBodyProperties_normal

template<MInt nDim_, MInt nDist, class SysEqn >
std::array<MFloat, m_maxNoEmbeddedBodies * 3> LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_normal {}
private

Definition at line 62 of file lslb.h.

◆ m_static_computeBodyProperties_omega

template<MInt nDim_, MInt nDist, class SysEqn >
MFloat LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_omega {}
private

Definition at line 64 of file lslb.h.

◆ m_static_computeBodyProperties_rotAngle

template<MInt nDim_, MInt nDist, class SysEqn >
MFloat LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_rotAngle {}
private

Definition at line 65 of file lslb.h.

◆ m_static_computeBodyProperties_Strouhal

template<MInt nDim_, MInt nDist, class SysEqn >
MFloat LsLb< nDim_, nDist, SysEqn >::m_static_computeBodyProperties_Strouhal {}
private

Definition at line 54 of file lslb.h.

◆ m_static_updateLevelSetFlowSolver_firstRun

template<MInt nDim_, MInt nDist, class SysEqn >
MBool LsLb< nDim_, nDist, SysEqn >::m_static_updateLevelSetFlowSolver_firstRun = true
private

Definition at line 68 of file lslb.h.

◆ m_transferBoundingBox

template<MInt nDim_, MInt nDist, class SysEqn >
MFloat* LsLb< nDim_, nDist, SysEqn >::m_transferBoundingBox {}

Definition at line 111 of file lslb.h.

◆ nDim

template<MInt nDim_, MInt nDist, class SysEqn >
constexpr MInt LsLb< nDim_, nDist, SysEqn >::nDim = nDim_
staticconstexpr

Definition at line 27 of file lslb.h.


The documentation for this class was generated from the following files: