MAIA bb96820c
Multiphysics at AIA
Loading...
Searching...
No Matches
fvcartesianbndrycndxd.h
Go to the documentation of this file.
1// Copyright (C) 2024 The m-AIA AUTHORS
2//
3// This file is part of m-AIA (https://git.rwth-aachen.de/aia/m-AIA/m-AIA)
4//
5// SPDX-License-Identifier: LGPL-3.0-only
6
7#ifndef FVBNDRYCNDXD_H
8#define FVBNDRYCNDXD_H
9
10#include <map>
11#include <random>
12#include <set>
13#include <sys/stat.h>
14#include <type_traits>
15#include <vector>
16#include "COMM/mpioverride.h"
19#include "MEMORY/scratch.h"
20#include "UTIL/maiamath.h"
24
25template <MInt nDim, class SysEqn>
27template <class T>
28class Collector;
29template <class T>
30class List;
31template <MInt nDim>
33template <MInt nDim>
35template <MInt nDim, class SysEqn>
36class FvBndryCell;
37template <MInt nDim>
38class CartesianGrid;
39template <MInt nDim, SolverType SolverTypeR, SolverType SolverTypeL>
40class MSTG;
41template <MInt nDim, class SysEqn>
42class FvZonalSTG;
43template <MInt nDim>
44class FvSysEqnNS;
45template <MInt nDim, class RANSModel>
46class FvSysEqnRANS;
47
48template <MInt nDim>
50 // members used by turbulent inflow boundary condition 1601
58 std::mt19937 randNumGen;
59 // mpi communicator
60 MPI_Comm m_comm_bc1601;
62 // Domain id of solver
64 // to store random numbers
65 MFloat* m_omega = nullptr;
66 MFloat* m_p1 = nullptr;
67 MFloat* m_p2 = nullptr;
68 MFloat* m_p3 = nullptr;
69 MFloat* m_q1 = nullptr;
70 MFloat* m_q2 = nullptr;
71 MFloat* m_q3 = nullptr;
72 MFloat* m_dhat1 = nullptr;
73 MFloat* m_dhat2 = nullptr;
74 MFloat* m_dhat3 = nullptr;
75 // to store Reynolds stress tensor:
82 // to store cholesky decomposed Reynolds stress tensor:
83 MFloat* aa = nullptr;
84
85 // Shin's addition
87 MFloat eigvec[3][3]{};
89
90 // end members used by bc1601
91
92 // functions
95
96 public:
97 // precalculated values
102
103 // functions
104 Bc1601Class(MPI_Comm& communicator, const MInt m_solverId, const MInt domainId, MFloat& u_total,
105 MFloat& invSigmaSponge);
106 ~Bc1601Class();
107 void calculateFlucts(const MFloat that, const MFloat xhat, const MFloat yhat, const MFloat zhat, MFloat* fluctChol);
108 void checkRegeneration(const MFloat time);
109};
110
111
112template <MInt nDim, class SysEqn>
114 public:
115 // Type for cell properties
116 using Cell = GridCell;
118
119 MInt m_noDirs = 2 * nDim;
120 MInt m_noEdges = nDim == 2 ? 4 : 12;
121 MInt m_noCorners = nDim == 2 ? 4 : 8;
122
123 friend class FvCartesianSolverXD<nDim, SysEqn>;
124 friend class FvZonalSTG<nDim, SysEqn>;
125
126 private:
127 SysEqn* m_sysEqn;
128
129 public:
130 // collectors...
136 std::vector<List<MInt>*> m_sortedCutOffCells{};
137 // pointers
141 MInt* m_bndryNghbrs = nullptr;
146
147 // claudia addition -> not nice, but necessary:
151
152 typename SysEqn::ConservativeVariables* CV{};
153 typename SysEqn::FluxVariables* FV{};
154 typename SysEqn::PrimitiveVariables* PV{};
155 typename SysEqn::AdditionalVariables* AV{};
156
159
161
162 virtual ~FvBndryCndXD();
163
165
166 SysEqn sysEqn() const { return *m_sysEqn; };
167
168 virtual void writeStlFileOfCell(MInt, const MChar*){};
169 void addBoundarySurfaces();
171 // virtual void correctBoundarySurfaceVariables() = 0;
174 // void applyNonReflectingBC();
177 void computeGhostCells();
179 // void correctGhostCells();
182 void computeReverseMap();
183
184 // WMLES
186 void initWMSurfaces();
187 template <MBool MGC>
188 void bc3399(MInt);
189 std::list<std::pair<MInt, MInt>> m_wmSrfcToCellId;
190
191 // virtual void copySlopesToSmallCells() = 0;
203 void initCutOffBndryCnds();
211 void initBndryCnds();
212 void setBCTypes(MInt updateOnlyBndryCndId = -1);
213 virtual void cmptGhostCells(){};
214
215 void saveBc7901(){};
216
217 void bc0(MInt){/*do nothing*/};
218 void bc0Var(MInt){/*do nothing*/};
219
220 void bcInit0001(MInt);
221 template <MBool MGC>
222 void bcInit0002(MInt);
223 template <MBool MGC>
224 void bcInit4000(MInt);
225 void bcInit0004(MInt);
226 void bcNeumann(MInt);
227 void bcNeumannIso(MInt);
231 void markCutOff(MIntScratchSpace& cutOffCells);
232
233 template <MBool MGC>
234 void sbc2000(MInt);
235 template <MInt dir>
236 void sbc2001(MInt);
237 template <MInt dir>
238 void sbc2901(MInt);
239
240 void bc17110(MInt);
241 void bc17516(MInt);
242 void bc19516(MInt);
243 void bc1753(MInt);
244 void bc1755(MInt);
245
246 void bc1251(MInt);
247
248 virtual void bc2770(MInt){};
249 virtual void sbc2710co(MInt){};
250 virtual void bc1001coflowY(MInt){};
251 virtual void bc10910(MInt){};
252 virtual void bc10990(MInt){};
253 virtual void bc1901(MInt){};
254 virtual void bc1801(MInt){};
255 virtual void bc19520(MInt){};
256 virtual void bc1003(MInt){};
257 virtual void bc1004(MInt){};
258 virtual void bc1005(MInt){};
259 virtual void bc1401(MInt){};
260 virtual void bc1791(MInt){};
261 virtual void bc2001(MInt){};
262 virtual void bc2002(MInt){};
263 virtual void bc2003(MInt){};
264
265 void bc3002(MInt);
266 void bc30021(MInt);
267 template <MBool MGC>
268 void bc3003(MInt);
269 void bc3011(MInt);
270 void bc4000(MInt);
271 void bc4001(MInt);
272
273 // pointers to the boundary condition methods
279 // variables
283 // BndryCndHandler* nonReflectingBoundaryCondition = nullptr;
286 // gradient (inviscid flux)
289 // gradient (viscous flux)
292
293 // reconstruction
296 std::vector<MInt> m_smallCutCells;
297 std::vector<MInt>* m_nearBoundaryWindowCells = nullptr;
298 std::vector<MInt>* m_nearBoundaryHaloCells = nullptr;
299 // Azimuthal priodicity near boundary exchange
300 std::vector<std::vector<MInt>> m_azimuthalNearBoundaryWindowCells;
301 std::vector<std::vector<MInt>> m_azimuthalNearBoundaryWindowMap;
302 std::vector<std::vector<MInt>> m_azimuthalNearBoundaryHaloCells;
303
307
308 // properties
313
319 MInt* m_bndryCndIds = nullptr;
356 // ---
363 // ---
364 MFloat* m_modeOmega = nullptr;
365 MFloat* m_modeAmp = nullptr;
366 MInt* m_modeType = nullptr;
367 MFloat** m_modeK = nullptr;
369 MInt* m_nmbrOfModes = nullptr;
370 MFloat* m_modePhi = nullptr;
376
377 // members used by combustion boundary conditions
396
401
402 // BC1251
407
408 // BC7901
419 // std::vector<MInt> m_7901BcCells;
420 std::vector<MFloat>* m_7901periodicLocations = nullptr;
421 std::vector<MFloat> m_7901wallNormalLocations;
423 /* MInt m_7901StartTimeStep; */
424 /* std::vector<MFloat>* m_7901LESAverage = nullptr; */
425
426 // BC7902
438 // std::vector<MInt> m_7902BcCells;
439 std::vector<MFloat>* m_7902periodicLocations = nullptr;
440 std::vector<MFloat> m_7902wallNormalLocations;
442
443 // BC7903
444 // BC7904
445 // BC7909
446 std::map<MInt, MSTG<nDim, MAIA_FINITE_VOLUME, MAIA_FINITE_VOLUME>*> m_stgBC;
447 std::map<MInt, MSTG<nDim, MAIA_STRUCTURED, MAIA_FINITE_VOLUME>*> m_stgBCStrcd;
448 std::map<MInt, MBool> m_stgLocal;
449 std::vector<MInt> m_stgBcCells;
451 /* MBool m_cylinderTransformation = false; */
452 // std::vector<std::pair<MInt,MInt>> m_stgBcCellIds;
453 MPI_Comm m_commStg;
454
455 // cbc
456 std::vector<MFloat> m_cbcInflowArea;
457 std::vector<std::vector<MFloat>> m_cbcReferencePoint;
458 std::vector<MInt> m_cbcBndryCndIds;
459 std::vector<std::vector<MFloat>> m_cbcRelax;
460 std::vector<std::vector<MFloat>> m_dirTangent;
461 std::vector<std::vector<MFloat>> m_dirNormal;
462 std::vector<MFloat> m_cbcLref;
463 std::vector<std::vector<MInt>> m_cbcDir;
464 std::vector<MInt> m_cbcDomainMin;
469
470 protected:
471 // parallelization
473
474 MPI_Comm* m_comm_bc = nullptr;
477 MPI_Comm* m_comm_bcCo = nullptr;
480
481 std::vector<CutCandidate<nDim>> m_cutCandidates;
483
485 MPI_Comm mpiComm() const { return m_solver->mpiComm(); }
486
488 MInt domainId() const { return m_solver->domainId(); }
489
491 MInt noDomains() const { return m_solver->noDomains(); }
492
493 // Data members used to replace local static variables
494 private:
496 // Data members used to replace local static variables for fvbndrycndxd.h
497
498 protected:
499 // sbc1000co
503 // initSmallCellCorrection
505 // m_static_computeImagePointRecConst_firstRun
507
508 public:
509 // output routines to check the cut cell generation
510 void plotAllCutPoints();
512 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
513 void writeStlFileOfCell(MInt, const char*);
514 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
516 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
518 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
520 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
521 void writeStlOfNodes(MInt, MInt*&, const char*);
522 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
523 void plotTriangle(std::ofstream&, MFloat*, MFloat*, MFloat*, MFloat*);
524
525 // TODO labels:FV cleanup and replace with calls to maiamath.h
526 // geometric help routines
527 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
529 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
531 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
533 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
535 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
537 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
539 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
541 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
543 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
545 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
547 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
549 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
551 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
553 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
555
556 // other help routines for cut cell generation
557 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
559 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
561 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
562 void getSortedElements(const std::vector<MInt>&, MInt&, MInt*&, MInt&, MInt*&, MInt);
563 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
565 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
567 template <class X = void, std::enable_if_t<nDim == 2, X*> = nullptr>
569 template <class X = void, std::enable_if_t<nDim == 2, X*> = nullptr>
571 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
575 MBool checkOutside(const MFloat*, const MInt);
576
577 // cut cell generation main routines
578 virtual void generateBndryCells();
579 void createBndryCells();
584 template <class X = void, std::enable_if_t<nDim == 2, X*> = nullptr>
585 void createCutFace();
586 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
588 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
589 void createCutFaceMGC();
590 template <class X = void, std::enable_if_t<nDim == 2, X*> = nullptr>
592 TERMM(1, "MGC in 2D not implemented yet!");
593 }
594 void checkBoundaryCells();
595 void computePlaneVectors();
596 void deleteBndryCell(MInt);
597
598 // other boundary cell related routines
599 ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN) void copySlopesToSmallCells();
600 // ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_ALWAYS_INLINE) inline void copySlopesToSmallCells_(const MUint);
601 ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN) void copyVarsToSmallCells();
602 // ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_ALWAYS_INLINE) inline void copyVarsToSmallCells_(const MUint);
603 ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN) void correctBoundarySurfaceVariables();
604 // ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_ALWAYS_INLINE) inline void correctBoundarySurfaceVariables_(const MUint);
609 void setNearBoundaryRecNghbrs(MInt updateOnlyBndryCndId = -1);
610 void computeImagePointRecConst(MInt updateOnlyBndryCndId = -1);
611 void initSmallCellCorrection(MInt updateOnlyBndryCndId = -1);
612 void initSmallCellRHSCorrection(MInt updateOnlyBndryCndId = -1);
613 void mergeCells();
614 void mergeCellsMGC();
615 void updateRHSSmallCells();
616 void resetCutOff();
617 void resetCutOffFirst();
619 void cutOffBcMissingNeighbor(const MInt cellId, const MString bcName);
620
622
623 template <class X = void, std::enable_if_t<nDim == 2, X*> = nullptr>
624 void computePolygon(MFloat* x, const MInt N, MFloat* centroid, MFloat* area);
625 // boundary conditions
628 void bcNeumann3600(MInt);
635 void bcNeumannMb(MInt);
637
638 // slopes
639 ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN) void sbc1000(const MInt);
640 void sbc1000co(const MInt);
641 void sbc00co(const MInt);
642 // ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_ALWAYS_INLINE) inline void sbc1000_(const MInt, const MUint);
643 void sbc1002(MInt);
644 void sbc2801x(MInt);
645 void sbc2801y(MInt);
646
647 void bc1001(MInt);
648 void bc100100(MInt);
649 void bc1000(MInt);
650 void bc1009(MInt);
651 void bc01(MInt);
652 void bc1002(MInt);
653 void bc1091(MInt);
654 void bc1101(MInt);
655 void bc1102(MInt);
656 void bc1601(MInt);
657 void bc1602(MInt);
658 void bc1603(MInt);
659 void bc1604(MInt);
660 void bc1606(MInt);
662 void bc10970(MInt);
663 void bc10980(MInt);
665 void bc16010(MInt);
666 void bc16011(MInt);
667 void bc16012(MInt);
668 void bc16013(MInt);
669 void bc16014(MInt);
670 void bc16015(MInt);
671
672 // STG
673 // Only 3D TODO labels:FV template std::enable_if_t can be removed once FV/fvstg.h is trully generalized
674 // for the templated argument 'nDim'. Otherwise, leads to compilation errors.
675 // std::enable_if_t<nDim == (3) or (2)... is used here to avoid such errors.
676 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
677 std::enable_if_t<nDim == 3, _*> = nullptr>
678 void bcInit7901(MInt);
679 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
680 std::enable_if_t<nDim == 3, _*> = nullptr>
681 void bcInit7902(MInt);
682 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
683 std::enable_if_t<nDim == 3, _*> = nullptr>
684 void bcInit7905(MInt);
685 template <class _ = void, std::enable_if_t<!hasPV_N<SysEqn>::value, _*> = nullptr,
686 std::enable_if_t<nDim == 3, _*> = nullptr>
687 void bcInit7909(MInt);
688 template <class _ = void, std::enable_if_t<!hasPV_N<SysEqn>::value, _*> = nullptr,
689 std::enable_if_t<nDim == 3, _*> = nullptr>
690 void bcInit7809(MInt);
691
692 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
693 std::enable_if_t<nDim == 3, _*> = nullptr>
694 void bc7901(MInt);
695 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
696 std::enable_if_t<nDim == 3, _*> = nullptr>
697 void bc7902(MInt);
698 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
699 std::enable_if_t<nDim == 3, _*> = nullptr>
700 void bc7905(MInt);
701 template <class _ = void, std::enable_if_t<!hasPV_N<SysEqn>::value, _*> = nullptr,
702 std::enable_if_t<nDim == 3, _*> = nullptr>
703 void bc7903(MInt);
704
705 template <class _ = void, std::enable_if_t<!hasPV_N<SysEqn>::value, _*> = nullptr,
706 std::enable_if_t<nDim == 3, _*> = nullptr>
707 void bc7909(MInt);
708 template <class _ = void, std::enable_if_t<!hasPV_N<SysEqn>::value, _*> = nullptr,
709 std::enable_if_t<nDim == 3, _*> = nullptr>
710 void bc7809(MInt);
711
712
713 // Only 2D
714 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
715 std::enable_if_t<nDim == 2, _*> = nullptr>
717 TERMM(-1, "");
718 }
719 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
720 std::enable_if_t<nDim == 2, _*> = nullptr>
722 TERMM(-1, "");
723 }
724 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
725 std::enable_if_t<nDim == 2, _*> = nullptr>
727 TERMM(-1, "");
728 }
729 template <class _ = void, std::enable_if_t<!hasPV_N<SysEqn>::value, _*> = nullptr,
730 std::enable_if_t<nDim == 2, _*> = nullptr>
732 TERMM(-1, "");
733 }
734 template <class _ = void, std::enable_if_t<!hasPV_N<SysEqn>::value, _*> = nullptr,
735 std::enable_if_t<nDim == 2, _*> = nullptr>
737 TERMM(-1, "");
738 }
739
740 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
741 std::enable_if_t<nDim == 2, _*> = nullptr>
742 void bc7901(MInt) {
743 TERMM(-1, "");
744 }
745 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
746 std::enable_if_t<nDim == 2, _*> = nullptr>
747 void bc7902(MInt) {
748 TERMM(-1, "");
749 }
750 template <class _ = void, std::enable_if_t<hasPV_N<SysEqn>::value, _*> = nullptr,
751 std::enable_if_t<nDim == 2, _*> = nullptr>
752 void bc7905(MInt) {
753 TERMM(-1, "");
754 }
755 template <class _ = void, std::enable_if_t<!hasPV_N<SysEqn>::value, _*> = nullptr,
756 std::enable_if_t<nDim == 2, _*> = nullptr>
757 void bc7903(MInt) {
758 TERMM(-1, "");
759 }
760 template <class _ = void, std::enable_if_t<!hasPV_N<SysEqn>::value, _*> = nullptr,
761 std::enable_if_t<nDim == 2, _*> = nullptr>
762 void bc7909(MInt) {
763 TERMM(-1, "");
764 }
765 template <class _ = void, std::enable_if_t<!hasPV_N<SysEqn>::value, _*> = nullptr,
766 std::enable_if_t<nDim == 2, _*> = nullptr>
767 void bc7809(MInt) {
768 TERMM(-1, "");
769 }
770
772 void bc30022(MInt);
773
774 void bc1792(MInt);
775 void bc1156(MInt);
776 void bc1952(MInt);
777
778 void bcInit1050(MInt);
779
781 void addModes(MInt);
783 void addBesselModes(MInt);
784 void calcBesselFractions(const MFloat, const MFloat, const MFloat, MFloat&, MFloat&);
786 void bc2700(MInt);
790 void bc2710(MInt);
791 void bc2720(MInt);
792 void sbc2720co(MInt);
793 void bc3006(MInt);
794 void bc3007(MInt);
795 void bc2907(MInt);
796 void bc29050(MInt);
797 void bc3466(MInt);
798 void bc3600(MInt);
799
801
802 // cbc
804 void cbcRHS(MInt, MInt, MFloat*, MFloat*, MFloat*);
807 template <unsigned char vTerms>
809 template <unsigned char tTerms>
811 template <MInt side>
815 void cbcTauQ(MInt, MFloat*, MFloat*, MInt*);
816 void cbcMachCo(MInt, MFloat*);
819
820
821 void cbc1099(MInt);
822 void cbc109910(MInt);
823 void cbc109911(MInt);
824 void cbc109921(MInt);
825 void cbc1099a(MInt);
826 void cbc1099a_after(MInt);
827 void cbc1091(MInt);
828 void cbc1091a(MInt);
829 void cbc3091a(MInt);
830 void cbc1091b(MInt);
831 void cbc1091c(MInt);
832 void cbc1091d(MInt);
833 void cbc1091b_after(MInt);
834 void cbc1091c_after(MInt);
835 void cbc1091d_after(MInt);
836 void cbc1091e(MInt);
837 void cbc1091e_after(MInt);
850 void cbc2091a(MInt);
851 void cbc2091b(MInt);
852 void cbc2091b_after(MInt);
853 void cbc2091d(MInt);
854 void cbc2091d_after(MInt);
857
858 template <class X = void, std::enable_if_t<nDim == 3, X*> = nullptr>
860
861 virtual void bc3037MGC(MInt){};
862 void bc1091MGC(MInt);
863 void bc1099MGC(MInt);
864 void cbc1099_1091d(MInt);
866
867 // Data members used to replace local static variables
868 private:
870 // plotEdges
872 // plotIntersectionPoints
874 // writeStlOfNodes
876 // correctInflowBoundary
878 // bc1091MGC
884 // bc1099MGC
888 // bc10970
892 // bc10980
895 // bc11110
897 MInt* m_dirNBc11110 = nullptr;
899 // cbc1099
908 // cbc1099_1091_local
920 // cbc1099_1091_local_comb
928 // cbc1091
937 // cbc1091a
939 // cbc3091a
949 // cbc1091b
957 // cbc1091c
964 // cbc1091c_after
970 // cbc1091d
979 // cbc1091d_after
985 // cbc1091e
992 // cbc2091a
1001 // cbc2091b
1010 // cbc2091d
1019 // cbc2091d_after
1024 // cbc2099_1091_local_comb
1031 // cbc1099_1091d
1040 // cbc1099_1091d_after
1045 // cbc1099_1091_engine
1055
1056 // JANNIK: 109910, 109911
1057 std::pair<MFloat, MFloat>* m_unTargetData = nullptr;
1058 std::pair<MFloat, MFloat>* m_vnTargetData = nullptr;
1063};
1064
1065#endif
GridCell
Grid cell Property Labels.
std::mt19937 randNumGen
void checkRegeneration(const MFloat time)
Bc1601Class(MPI_Comm &communicator, const MInt m_solverId, const MInt domainId, MFloat &u_total, MFloat &invSigmaSponge)
const MInt m_domainId
void generateAndCommRandomNumbers()
Bc1601Class functions:
void calculateFlucts(const MFloat that, const MFloat xhat, const MFloat yhat, const MFloat zhat, MFloat *fluctChol)
MFloat eigvec[3][3]
MFloat ** m_7901LESAverageOld
MFloat m_static_cbc1091e_inflowArea
BndryCndHandler * bndryCndHandlerVariables
virtual void generateBndryCells()
generate finite-volume boundary cells
void cbc1291a(MInt)
MFloat * m_sigmaSpongeBndryId
void cbc1099_1091_local_comb(MInt)
std::vector< MInt > m_cbcBndryCndIds
void cbc1091b_after(MInt)
Subsonic fully reflecting characteristic inflow condition - cut off - sets T0,u,v to prescribed value...
MInt m_static_cbc1099_1091_local_comb_dimT2
MInt * m_spongeBndryCndIds
holds the sponge boundary IDs
void allocateCutOffMemory()
allocates the cut off list memory
void cbcRHS(MInt, MInt, MFloat *, MFloat *, MFloat *)
Calculates the right hand side.
BndryCndHandler * bndryCndHandlerSlopesInviscid
virtual void bc19520(MInt)
std::vector< std::vector< MFloat > > m_dirNormal
BndryCndHandler * bndryCndHandlerCutOffInit
MInt * m_7901globalNoPeriodicLocations
void sbc2801y(MInt)
Solid wall Navier-Stokes boundary condition Computes ghost cell slopes for the viscous flux computati...
List< MInt > * m_sortedBndryCells
void sbc1000co(const MInt)
Cut off condition for the slopes.
void sbc00co(const MInt)
Cut off condition for the slopes.
Collector< FvBndryCell< nDim, SysEqn > > * m_bndryCells
void computeTetra(MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
MInt m_static_cbc2099_1091_local_comb_dimT1
void(FvBndryCndXD::* BndryCndHandler)(MInt)
std::vector< MInt > m_cbcDomainMin
BndryCndHandlerVar * bndryCndHandlerNeumann
void cbc1299(MInt)
std::vector< std::vector< MFloat > > m_cbcReferencePoint
MBool m_static_cbc2091d_solverProfile
MInt noDomains() const
Return the total number of domains (total number of ranks in current MPI communicator)
MFloat * m_spongeEndIteration
MFloat m_static_cbc1099_1091_engine_tangent[3]
BndryCndHandler * nonReflectingCutOffBoundaryCondition
void cbc1091e_after(MInt)
Subsonic fully reflecting characteristic inflow condition - cut off - sets T0,u,v to prescribed value...
MInt m_noSpongeBndryCndIds
number of sponge boundary condition IDs
std::vector< std::vector< MInt > > m_azimuthalNearBoundaryWindowMap
MFloat m_static_cbc1099_outFlowArea
void cbc1099a_after(MInt)
Subsonic fully reflecting characteristic outflow condition - cut off - sets pstat to prescribed value...
std::pair< MFloat, MFloat > * m_unTargetData
MInt m_static_cbc1099_1091_local_dirN
MInt m_static_cbc1099_1091_local_comb_dimT1
MFloat ** m_targetValuesBC11110
void calcBesselFractions(const MFloat, const MFloat, const MFloat, MFloat &, MFloat &)
void plotAllCutPoints()
writes a .vtk file containing all cut points stored on the cut cells
MFloat m_static_cbc1099_1091_engine_inflowArea
void sbc2720co(MInt)
Cut off condition for the slopes copys the slopes, and sets pressure slope to sero NOTIMPLEMENTED ver...
void cbc1291tma(MInt)
void cbcDampingOutflow(MInt, MInt, MFloat, MFloat *)
Calculates the outflow damping terms.
void cbc1099_1091d_after(MInt)
MFloat m_static_cbc1099_1091_engine_normal[3]
MInt m_static_cbc1099_1091_engine_domainMin
MFloat m_static_cbc3091a_referencePoint[3]
MBool m_firstUseBc10970
Only 3D ends ///.
void bcNeumannMb(MInt)
Moving boundary Neumann condition.
MInt m_7902globalNoWallNormalLocations
void cbc109911(MInt)
Characteristic boundary condition. Outflow. Prescribed: p. Partially Refelecting.
MFloat m_static_cbc1091c_referencePoint[3]
SysEqn::PrimitiveVariables * PV
SysEqn::FluxVariables * FV
std::vector< MFloat > m_7902wallNormalLocations
virtual void bc2001(MInt)
void cbc1299tm(MInt)
MInt m_static_plotIntersectionPoints_iter
MInt m_static_cbc2099_1091_local_comb_dirN
void initBesselModes(MInt)
MFloat m_bc1251ForcingWavelength
void bcNeumannIsothermalUnburntProfileH(MInt)
Computes the p and rho slopes on boundary cells using the least-squares method and setting implicitel...
MInt m_static_correctInflowBoundary_iter
void initWMBndryCells()
MBool m_static_computeImagePointRecConst_firstRun
MFloat m_static_cbc1099_1091_local_inflowArea
virtual void bc1801(MInt)
FvCartesianSolverXD< nDim, SysEqn > * m_solver
MInt m_static_cbc1099_1091_engine_dimT2
void sbc2001(MInt)
Solid wall Navier-Stokes boundary condition Computes ghost cell slopes for the viscous flux computati...
MBool m_static_cbc1099_1091d_after_first
void bcInit2700(MInt)
init for the acoustic and entropy waves
MPI_Comm mpiComm() const
Return the MPI communicator used by the corresponding solver.
virtual void sbc2710co(MInt)
void initSmallCellCorrection(MInt updateOnlyBndryCndId=-1)
Initialize the small-cell correction for the flux-redistribution method The cell vars are computed us...
SysEqn sysEqn() const
FvBndryCell< nDim, SysEqn > * m_bndryCell
std::vector< MInt > m_stgBcCells
std::map< MInt, MSTG< nDim, MAIA_STRUCTURED, MAIA_FINITE_VOLUME > * > m_stgBCStrcd
MFloat m_static_cbc1099_1091d_after_interpolationFactor
virtual void bc1901(MInt)
void cbcViscousTerms(MInt, MInt, MFloat *, MFloat *, MFloat *, MFloat *, MInt *, MFloat *)
Calculates the outgoing viscous terms V.
MInt m_static_sbc1000co_directions[s_sbc1000co_fixedMaxNoBndryCndIds]
MFloat m_static_cbc2099_1091_local_comb_referencePoint[nDim]
MFloat m_static_cbc2091d_referencePoint[nDim]
MFloat m_static_cbc1099_1091_local_R
ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN) void sbc1000(const MInt)
void setGapGhostCellVariables(MInt bcId)
update ghostCell variables for gap-Cells
void bcInit0004(MInt)
Sets up the reconstruction stencil for boundary cells (quadratic least-squares reconstruction)
MInt m_static_cbc1099_1091_local_dimT2
void deleteBndryCell(MInt)
Deletes a boundary cell (without collector fragmentation)
void cbcGradients(MInt, MInt, MFloat *, MFloat *, MFloat *, MFloat *)
Calculates the gradients of the cbcCell.
void cbc2099_1091_local_comb(MInt)
MInt m_static_cbc1099_1091_local_domainMin
ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN) void correctBoundarySurfaceVariables()
void bcNeumannIsothermalUnburntProfile(MInt)
Computes the p and rho slopes on boundary cells using the least-squares method and setting implicitel...
void bcNeumannIsothermalBurntProfileH(MInt)
Computes the p and rho slopes on boundary cells using the least-squares method and setting implicitel...
MFloat * vecScalarMul(MFloat, MFloat *, MFloat *)
std::vector< std::vector< MInt > > m_azimuthalNearBoundaryHaloCells
virtual void bc2770(MInt)
std::vector< MFloat > * m_7901periodicLocations
virtual void bc1003(MInt)
MInt * m_7902globalNoPeriodicLocations
BndryCndHandler * bndryCndHandlerInit
std::vector< std::vector< MFloat > > m_dirTangent
void computeTri(MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
void cbcMeanPressureCo(MInt, MFloat *)
std::vector< CutCandidate< nDim > > m_cutCandidates
void detectSmallBndryCells()
Detects small cells and identifies a master cell Calls mergeCell to merge master and small cell.
void markCutOff(MIntScratchSpace &cutOffCells)
MBool m_static_cbc2099_1091_local_comb_first
void computePlaneVectors()
uses Gram-Schmidt to compute orthonormal vectors in the cut plane
MFloat m_static_cbc2091a_inflowArea
ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN) void copySlopesToSmallCells()
void createCutFace()
computes the geometry of each the cut cells (2D version) 2 cut points are assumed for each boundary c...
FvBndryCndXD(FvCartesianSolverXD< nDim, SysEqn > *solver)
MBool checkInside(MInt)
checks if all corners of a cell are located in the computational domain
MFloat m_static_cbc1099_1091_local_H
MBool m_static_cbc1091d_after_first
MInt m_static_cbc1099_1091_local_dimN
void bcInit0002(MInt)
Sets up the reconstruction stencil for boundary cells.
MFloat m_static_cbc1091b_referencePoint[3]
void cbcTurbulenceInjection(MInt, MFloat *, MInt)
Turbulence injection (identical to bc1601) adjusted for Taylor's Hypothesis for cbc.
void computeCutPoints()
computes the cut points where a boundary cell intersects with the geometry computes the following bou...
MBool m_static_cbc1099_1091_local_first
void computeReconstructionConstants_interpolation()
void cbc1291(MInt)
std::vector< List< MInt > * > m_sortedCutOffCells
void cbc1099_1091_engineOld(MInt)
MInt m_static_bc1091MGC_minTimeSteps
MFloat ** m_7901LESAverage
MFloat m_static_cbc2091a_referencePoint[nDim]
void exchangeCutOffBoundaryCells()
exchanges the cut off boundary cells and adds them to the accordings cut off boundary lists
void cbcGradientsViscous(MInt, MInt, MFloat *, MFloat *, MFloat *, MFloat *, MInt *)
Calculates the viscous gradients of the cbcCell.
void correctBoundarySurfaceVariablesMGC()
corrects the left and right variables values on the boundary surface
std::vector< std::vector< MInt > > m_azimuthalNearBoundaryWindowCells
MFloat computeCutoffBoundaryGeometry(const MInt, const MInt, MFloat *)
computes centroid and radius (return parameter) of a cut-off boundary surface assumes that the surfac...
void correctBoundarySurfaceVariablesMGCSurface()
corrects the left and right variables values on the boundary surface
std::vector< std::vector< MFloat > > m_cbcRelax
SysEqn::AdditionalVariables * AV
void computePoly5(MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
void correctMasterSlaveSurfaces()
Removes surfaces between master-slave pairs and reassigns slave cell surfaces.
GeometryIntersection< nDim > * m_geometryIntersection
virtual void bc3037MGC(MInt)
MFloat ** m_7902LESAverage
MInt m_static_cbc2099_1091_local_comb_dimN
void computeImagePointRecConst(MInt updateOnlyBndryCndId=-1)
virtual void bc2003(MInt)
MFloat m_static_cbc1099_referencePoint[3]
std::pair< MFloat, MFloat > * m_vnTargetData
BndryCndHandler * bndryCndHandlerCutOffVariables
virtual void bc10990(MInt)
BndryCndHandler * nonReflectingBoundaryConditionAfterTreatmentCutOff
void writeStlFileOfCell(MInt, const char *)
Only 3D ///.
MFloat * m_spongeStartIteration
List< MInt > * m_smallBndryCells
MFloat m_static_bc1099MGC_timeOfMaxPdiff
void correctNormal(MFloat *)
void writeStlOfNodes(MInt, MInt *&, const char *)
MFloat * m_sigmaEndSpongeBndryId
MBool m_static_initSmallCellCorrection_firstRun
ATTRIBUTES2(ATTRIBUTE_HOT, ATTRIBUTE_FLATTEN) void copyVarsToSmallCells()
void bc11110(MInt)
std::vector< MInt > * m_nearBoundaryHaloCells
void getFeatureEdges(MInt &, MFloat **&, MInt, MInt *&, MFloat *&, MFloat *&)
MFloat m_static_cbc1099_1091d_targetPressure
void correctCell(MFloat *, MFloat *, MFloat *, MFloat *)
BndryCndHandler * bndryViscousSlopes
void computeMirrorCoordinates(MInt, MFloat *, MInt)
void addBoundarySurfacesMGC()
adds a surface for the ghost-boundary cell intersections
void cbc109921(MInt)
Characteristic boundary condition. Outflow. Prescribed: p. Partially Refelecting.
MBool m_static_cbc2091a_solverProfile
MBool m_static_cbc1091b_solverProfile
MInt m_static_cbc1099_1091_engine_dimN
void getIntersectionPoints(MFloat **&, MFloat **&, MInt, MInt, MFloat **&, MInt &)
MFloat m_static_cbc3091a_inflowArea
MFloat m_static_cbc1091_referencePoint[3]
MFloat updateImagePointVariables(MInt)
Updates the image point variables used with multiple ghost cell formulation.
maia::fv::surface_collector::FvSurfaceCollector< nDim > & m_surfaces
MInt m_static_cbc1099_1091_local_comb_dirN
void bcNeumannIsothermal(MInt)
Computes the p and rho slopes on boundary cells using the least-squares method and setting implicitel...
void plotIntersectionPoints(MInt *, MFloat ***&)
MFloat m_static_cbc1099_1091_local_targetPressure
void createCutFaceMGC()
ONLY 3D VERSIONS.
void correctFace(MFloat *, MFloat *, MFloat *, MFloat *)
MInt m_static_cbc1099_1091d_after_dimN
void bcNeumannIsothermalBurntProfile(MInt)
Computes the p and rho slopes on boundary cells using the least-squares method and setting implicitel...
MInt m_static_cbc1099_1091_engine_dimT1
virtual void bc1401(MInt)
MFloat m_static_cbc2091b_inflowArea
List< MInt > * m_sortedSpongeBndryCells
void correctInflowBoundary(MInt)
MFloat * vecSub(MFloat *, MFloat *, MFloat *)
void(FvBndryCndXD::* BndryCndHandlerVar)(MInt)
void correctInflowBoundary(MInt, MBool=false)
void resetCutOffFirst()
reset first for cutOffBndryCnd, this is necessary after a balance!
MInt m_static_cbc1099_1091d_after_dirN
void plotTriangle(std::ofstream &, MFloat *, MFloat *, MFloat *, MFloat *)
void cbc1091c_after(MInt)
Subsonic fully reflecting characteristic inflow condition - cut off - sets T0,u,v to prescribed value...
void checkCutPointsValidity()
checks the validity of a boundary cell
void plotEdges(MInt &, MFloat **&)
void addModes(MInt)
supersonic inflow with imposed onlique shock wave version: cut-off boundary condition author: Thomas ...
void computeNeumannLSConstants(MInt)
Sets up the reconstruction stencil for boundary cells.
MBool m_static_cbc2091b_solverProfile
void cbcTransversalTerms(MInt, MInt, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
Calculates the transversal correction terms T.
std::vector< std::vector< MInt > > m_cbcDir
void computePoly4(MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
MFloat ** m_reconstructionConstants
MFloat m_static_cbc1091b_inflowArea
void plotSurface()
virtual void bc2002(MInt)
void computePoly6(MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
void detectSmallBndryCellsMGC()
Detects small cells and identifies a master cell Calls mergeCell to merge master and small cell.
void cbc1299a(MInt)
MInt createSplitCell_MGC(MInt, MInt)
produces an exact copy of a fvcell and the respective boundary cell
MBool m_static_cbc1099_1091_engine_first
void cbcOutgoingAmplitudeVariation(MInt, MInt, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
Calculates the outgoing terms wave amplitude variation L.
MBool m_static_cbc1091c_after_first
void setBCTypes(MInt updateOnlyBndryCndId=-1)
void cbcDampingInflow(MInt, MInt, MFloat, MFloat *, MString)
Calculates the inflow damping terms.
MBool m_static_cbc1091d_solverProfile
MInt m_static_bc1091MGC_edgeCellCounter
std::vector< MInt > m_smallCutCells
BndryCndHandler * bndryCndHandlerCutOffSlopesInviscid
void createBndryCndHandler()
creates pointers to the boundary conditions
MInt ** m_reconstructionNghbrs
void computeTri(MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
void checkCutPointsValidityParGeom()
checks the validity of a boundary cell using parallel geometry
void sbc2801x(MInt)
Solid wall Navier-Stokes boundary condition Computes ghost cell slopes for the viscous flux computati...
void cbc1091d_after(MInt)
Subsonic fully reflecting characteristic inflow condition - cut off - sets un to prescribed value aft...
void addBoundarySurfaces()
adds a surface for the ghost-boundary cell intersections
void correctInflowBoundary(MInt, MFloat *&, MFloat *&)
virtual void cmptGhostCells()
void cbcMachCo(MInt, MFloat *)
Returns the mean and maximum Mach number of the cut off cells.
std::map< MInt, MBool > m_stgLocal
void computePolygon(MFloat *x, const MInt N, MFloat *centroid, MFloat *area)
MFloat m_static_cbc2099_1091_local_comb_outFlowArea
MBool m_static_cbc1091e_solverProfile
std::vector< MFloat > m_7901globalWallNormalLocations
void setNearBoundaryRecNghbrs(MInt updateOnlyBndryCndId=-1)
virtual void bc1001coflowY(MInt)
MFloat m_static_cbc1099_1091_local_referencePoint[3]
MFloat m_static_cbc1099_1091d_inflowArea
std::vector< MFloat > * m_7902periodicLocations
void correctInflowBoundary(MInt, MFloat *&, MFloat *&, MBool=false)
maia::fv::collector::FvCellCollector< nDim > & m_cells
static constexpr MInt s_sbc1000co_fixedMaxNoBndryCndIds
void bcInit30022(MInt)
std::vector< MInt > * m_nearBoundaryWindowCells
MBool m_static_cbc1091a_solverProfile
void bcInit1601(MInt)
Initialize bc1601.
MFloat m_static_cbc1099_1091_local_comb_outFlowArea
MInt isCutOffInterface(MInt cellId)
void createBoundaryAtCutoff()
MInt m_7901globalNoWallNormalLocations
void applyNonReflectingBCAfterTreatmentCutOff()
void createSpongeAtSpongeBndryCnds()
creates Sponge Cells at spongeBndryCnds
void mergeCellsMGC()
merges master and small cells - for multiple ghost cells formulation
MFloat m_static_cbc1099_1091_local_comb_referencePoint[3]
BndryCndHandler * bndryCndHandlerSpongeVariables
void resetCutOff()
reset sorterdCutOff Cells and cutOff communicator before balancing and adaptation!
MFloat m_static_cbc2091d_inflowArea
void computeGhostCellsMGC()
Computes one ghost cell for each boundary surface.
void cbc1291b(MInt)
void precomputeBesselTrigonometry(MInt)
std::vector< MFloat > m_7902globalWallNormalLocations
void initModes(MInt)
void getSortedElements(const std::vector< MInt > &, MInt &, MInt *&, MInt &, MInt *&, MInt)
void sbc1002(MInt)
Symmetry boundary condition about x-axis (slopes)
void cbc1291tmb(MInt)
MFloat m_static_cbc1091d_inflowArea
void cbc2091b_after(MInt)
Subsonic fully reflecting characteristic inflow condition - cut off - sets T0,u,v to prescribed value...
MInt domainId() const
Return the domain id of this solver on the current MPI communicator.
MInt m_static_plotEdges_iter
Only 3D ///.
std::vector< MFloat > m_cbcLref
void cbc1291tmc(MInt)
virtual void bc1791(MInt)
std::vector< MFloat > m_7901wallNormalLocations
virtual void writeStlFileOfCell(MInt, const MChar *)
std::vector< MFloat > m_cbcInflowArea
MFloat m_static_cbc2091b_referencePoint[nDim]
void cbc1291tm(MInt)
void bcInit2770(MInt)
supersonic inflow with imposed onlique shock wave and linear waves version: cut-off boundary conditio...
MBool m_static_cbc1099_1091_local_comb_first
void cbc2091d_after(MInt)
Subsonic fully reflecting characteristic inflow condition - cut off - sets un to prescribed value aft...
void bcInitCbc(MInt)
virtual void bc10910(MInt)
void bcInit1251(MInt)
MInt m_static_cbc1099_1091_engine_dirN
MFloat m_static_cbc1091d_referencePoint[3]
MInt m_static_cbc1099_1091_local_comb_dimN
void cbc109910(MInt)
Characteristic boundary condition. Outflow. Prescribed: p. Partially Refelecting.
void cbcTauQ(MInt, MFloat *, MFloat *, MInt *)
Calculates the stress tensor tau and the heat flux q and the mean velocity on the construction stenci...
virtual void bc1005(MInt)
virtual void bc1004(MInt)
Bc1601Class< nDim > * m_bc1601
void bc1952(MInt)
Subsonic outflow boundary condition (applied directly to the (boundary) cell). Set of variables: Stan...
void initSmallCellRHSCorrection(MInt updateOnlyBndryCndId=-1)
void cutOffBcMissingNeighbor(const MInt cellId, const MString bcName)
void bcNeumannIsothermalUnburnt(MInt)
Computes the p and rho slopes on boundary cells using the least-squares method, and setting implicite...
MFloat m_static_cbc1091_inflowArea
void computeReverseMap()
Creates a mapping (boundary cell id) -> (cell id) in m_bndryCellIds.
void bcNeumann3600(MInt)
Simple and fast fixed adiabatic wall boundary condition for use with the flux-redistribution method.
MFloat m_static_cbc1091c_inflowArea
SysEqn::ConservativeVariables * CV
void initBndryCommunications()
inits the commnicators for the boundaries
BndryCndHandler * bndryCutOffViscousSlopes
void computeTrapez(MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
void bcInit0001(MInt)
Sets up the reconstruction stencil for boundary cells.
MFloat ** m_7902LESAverageOld
std::list< std::pair< MInt, MInt > > m_wmSrfcToCellId
MInt m_static_cbc1099_1091_local_dimT1
MBool m_static_cbc3091a_solverProfile
MFloat m_static_cbc1099_1091d_referencePoint[nDim]
void computePyra(MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
std::map< MInt, MSTG< nDim, MAIA_FINITE_VOLUME, MAIA_FINITE_VOLUME > * > m_stgBC
void computePoly3(MFloat *, MFloat *, MFloat *, MFloat *, MFloat *, MFloat *)
Definition: list.h:16
Definition: fvstg.h:609
This class is a ScratchSpace.
Definition: scratch.h:758
virtual MInt domainId() const
Return the domainId (rank)
Definition: solver.h:383
MPI_Comm mpiComm() const
Return the MPI communicator used by this solver.
Definition: solver.h:380
virtual MInt noDomains() const
Definition: solver.h:387
Class that represents FV cell collector.
Class that represents FV surface collector.
FvCell
FV cell Property Labels.
int32_t MInt
Definition: maiatypes.h:62
std::basic_string< char > MString
Definition: maiatypes.h:55
double MFloat
Definition: maiatypes.h:52
bool MBool
Definition: maiatypes.h:58
char MChar
Definition: maiatypes.h:56