chombo-discharge
Loading...
Searching...
No Matches
CD_CdrPlasmaImExSdcStorage.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_CDRPLASMAIMEXSDCSTORAGE_H
14#define CD_CDRPLASMAIMEXSDCSTORAGE_H
15
16// Our includes
18#include <CD_AmrMesh.H>
19#include <CD_NamespaceHeader.H>
20
21namespace Physics {
22 namespace CdrPlasma {
23
33 {
34 public:
39
47 CdrStorage(const RefCountedPtr<AmrMesh>& a_amr,
48 const std::string& a_realm,
49 const phase::which_phase a_phase,
50 const int a_ncomp);
51
56
61 void
62 allocateStorage(const int a_p);
63
67 void
69
74 EBAMRCellData&
76 {
77 return m_scratch;
78 }
79
84 EBAMRCellData&
86 {
87 return m_scratch2;
88 }
89
95 EBAMRCellData&
97 {
98 return m_error;
99 }
100
105 EBAMRCellData&
107 {
108 return m_gradient;
109 }
110
115 EBAMRCellData&
117 {
118 return m_old;
119 }
120
126 EBAMRCellData&
128 {
129 return m_scratchD;
130 }
131
136 EBAMRCellData&
138 {
139 return m_divF;
140 }
141
146 Vector<EBAMRCellData>&
148 {
149 return m_phi;
150 }
151
156 Vector<EBAMRCellData>&
158 {
159 return m_FAR;
160 }
161
166 Vector<EBAMRCellData>&
168 {
169 return m_FD;
170 }
171
176 Vector<EBAMRCellData>&
178 {
179 return m_F;
180 }
181
187 EBAMRIVData&
189 {
190 return m_scratchIVs;
191 }
192
197 EBAMRIVData&
199 {
200 return m_scratchIVD;
201 }
202
207 EBAMRIVData&
209 {
210 return m_scratchIV1;
211 }
212
217 EBAMRIVData&
219 {
220 return m_scratchIV2;
221 }
222
227 EBAMRIVData&
229 {
230 return m_scratchIV3;
231 }
232
237 EBAMRIVData&
239 {
240 return m_scratchIV4;
241 }
242
247 EBAMRIFData&
249 {
250 return m_scratchIF1;
251 }
252
257 EBAMRIFData&
259 {
260 return m_scratchIF2;
261 }
262
267 EBAMRIFData&
269 {
270 return m_scratchIF3;
271 }
272
277 EBAMRIFData&
279 {
280 return m_scratchIF4;
281 }
282
283 protected:
287 std::string m_realm;
288
292 RefCountedPtr<AmrMesh> m_amr;
293
298
303
307 int m_p;
308
313
317 EBAMRCellData m_scratch;
318
322 EBAMRCellData m_scratch2;
323
327 EBAMRCellData m_error;
328
332 EBAMRCellData m_gradient;
333
337 EBAMRCellData m_old;
338
342 EBAMRCellData m_scratchD;
343
347 EBAMRCellData m_divF;
348
352 Vector<EBAMRCellData> m_phi;
353
357 Vector<EBAMRCellData> m_FAR;
358
362 Vector<EBAMRCellData> m_FD;
363
367 Vector<EBAMRCellData> m_F;
368
372 EBAMRIVData m_scratchIVs;
373
377 EBAMRIVData m_scratchIVD;
378
382 EBAMRIVData m_scratchIV1;
383
387 EBAMRIVData m_scratchIV2;
388
392 EBAMRIVData m_scratchIV3;
393
397 EBAMRIVData m_scratchIV4;
398
402 EBAMRIFData m_scratchIF1;
403
407 EBAMRIFData m_scratchIF2;
408
412 EBAMRIFData m_scratchIF3;
413
417 EBAMRIFData m_scratchIF4;
418 };
419
427 {
428 public:
433
441 FieldStorage(const RefCountedPtr<AmrMesh>& a_amr,
442 const std::string& a_realm,
443 const phase::which_phase a_phase,
444 const int a_ncomp);
445
450
455 void
456 allocateStorage(const int a_p);
457
461 void
463
468 MFAMRCellData&
470 {
471 return m_previous;
472 }
473
478 EBAMRCellData&
480 {
481 return m_E_cell;
482 }
483
488 EBAMRFluxData&
490 {
491 return m_E_face;
492 }
493
498 EBAMRIVData&
500 {
501 return m_E_eb;
502 }
503
508 EBAMRIFData&
510 {
511 return m_E_dom;
512 }
513
514 protected:
518 std::string m_realm;
519
523 RefCountedPtr<AmrMesh> m_amr;
524
529
534
538 int m_p;
539
543 MFAMRCellData m_previous;
544
548 EBAMRCellData m_E_cell;
549
553 EBAMRFluxData m_E_face;
554
558 EBAMRIVData m_E_eb;
559
563 EBAMRIFData m_E_dom;
564 };
565
572 {
573 public:
578
586 RtStorage(const RefCountedPtr<AmrMesh>& a_amr,
587 const std::string& a_realm,
588 const phase::which_phase a_phase,
589 const int a_ncomp);
590
594 ~RtStorage();
595
600 void
601 allocateStorage(const int a_p);
602
606 void
608
613 EBAMRCellData&
615 {
616 return m_previous;
617 }
618
623 EBAMRIVData&
625 {
626 return m_scratchIV;
627 }
628
633 EBAMRIFData&
635 {
636 return m_scratchIF;
637 }
638
639 protected:
643 std::string m_realm;
644
648 RefCountedPtr<AmrMesh> m_amr;
649
654
659
663 int m_p;
664
668 EBAMRCellData m_previous;
669
673 EBAMRIVData m_scratchIV;
674
678 EBAMRIFData m_scratchIF;
679 };
680
687 {
688 public:
693
701 SigmaStorage(const RefCountedPtr<AmrMesh>& a_amr,
702 const std::string& a_realm,
703 const phase::which_phase a_phase,
704 const int a_ncomp);
705
710
715 void
716 allocateStorage(const int a_p);
717
721 void
723
728 EBAMRIVData&
730 {
731 return m_scratch;
732 }
733
738 EBAMRIVData&
740 {
741 return m_error;
742 }
743
748 Vector<EBAMRIVData>&
750 {
751 return m_sigma;
752 }
753
758 Vector<EBAMRIVData>&
760 {
761 return m_Fnew;
762 }
763
768 Vector<EBAMRIVData>&
770 {
771 return m_Fold;
772 }
773
774 protected:
778 std::string m_realm;
779
783 RefCountedPtr<AmrMesh> m_amr;
784
789
794
798 int m_p;
799
803 EBAMRIVData m_scratch;
804
808 EBAMRIVData m_error;
809
813 Vector<EBAMRIVData> m_sigma;
814
818 Vector<EBAMRIVData> m_Fnew;
819
823 Vector<EBAMRIVData> m_Fold;
824 };
825 } // namespace CdrPlasma
826} // namespace Physics
827
828#include <CD_NamespaceFooter.H>
829
830#endif
Declaration of core class for handling AMR-related operations (with embedded boundaries)
Declaration of Physics::CdrPlasma::CdrPlasmaImExSdcStepper.
Per-CDR-species scratch storage for the IMEX-SDC time stepper.
Definition CD_CdrPlasmaImExSdcStorage.H:33
EBAMRCellData m_scratch
First general-purpose cell-centered scratch array.
Definition CD_CdrPlasmaImExSdcStorage.H:317
EBAMRCellData m_divF
Cell-centered divergence of the advective flux.
Definition CD_CdrPlasmaImExSdcStorage.H:347
EBAMRIFData m_scratchIF4
Domain-face-centered normal density gradient.
Definition CD_CdrPlasmaImExSdcStorage.H:417
Vector< EBAMRCellData > m_phi
phi^k at each of the p+1 SDC nodes. Index m ∈ [0, p].
Definition CD_CdrPlasmaImExSdcStorage.H:352
EBAMRCellData m_old
Cell-centered solution at the start of the step. Used for subcycling.
Definition CD_CdrPlasmaImExSdcStorage.H:337
EBAMRCellData & getError()
Return the error estimator array (one component, cell-centered).
Definition CD_CdrPlasmaImExSdcStorage.H:96
EBAMRCellData & getOld()
Return the "old solution" array used when subcycling is enabled.
Definition CD_CdrPlasmaImExSdcStorage.H:116
EBAMRIVData & getEbVelo()
Return the EB-centered normal drift velocity.
Definition CD_CdrPlasmaImExSdcStorage.H:218
EBAMRCellData & getScratch()
Return the first cell-centered scratch array (one component).
Definition CD_CdrPlasmaImExSdcStorage.H:75
EBAMRIVData m_scratchIV1
EB-centered species density extrapolated from the cell center.
Definition CD_CdrPlasmaImExSdcStorage.H:382
EBAMRIFData m_scratchIF3
Domain-face-centered boundary flux.
Definition CD_CdrPlasmaImExSdcStorage.H:412
void allocateStorage(const int a_p)
Allocate all scratch arrays sized for p+1 SDC nodes.
Definition CD_CdrPlasmaImExSdcStorage.cpp:35
bool m_subcycle
If true, extra subcycling storage is allocated.
Definition CD_CdrPlasmaImExSdcStorage.H:312
EBAMRIVData m_scratchIV2
EB-centered normal drift velocity component.
Definition CD_CdrPlasmaImExSdcStorage.H:387
std::string m_realm
Realm on which storage is allocated.
Definition CD_CdrPlasmaImExSdcStorage.H:287
int m_ncomp
Number of scalar components (1 for CDR species).
Definition CD_CdrPlasmaImExSdcStorage.H:302
EBAMRCellData m_scratchD
SpaceDim-component cell-centered scratch array.
Definition CD_CdrPlasmaImExSdcStorage.H:342
EBAMRIVData m_scratchIVs
EB-centered scalar scratch array (one component, e.g. for diffusion states).
Definition CD_CdrPlasmaImExSdcStorage.H:372
EBAMRCellData & getScratch2()
Return the second cell-centered scratch array (one component).
Definition CD_CdrPlasmaImExSdcStorage.H:85
EBAMRIVData & getEbFlux()
Return the EB-centered boundary flux (outward positive).
Definition CD_CdrPlasmaImExSdcStorage.H:228
EBAMRIVData & getEbGrad()
Return the EB-centered normal density gradient.
Definition CD_CdrPlasmaImExSdcStorage.H:238
EBAMRIFData m_scratchIF1
Domain-face-centered species density extrapolated from the cell center.
Definition CD_CdrPlasmaImExSdcStorage.H:402
EBAMRCellData m_error
Cell-centered error estimator: |phi^{k+1} - phi^k|.
Definition CD_CdrPlasmaImExSdcStorage.H:327
EBAMRCellData & getGradient()
Return the cell-centered gradient storage (SpaceDim components).
Definition CD_CdrPlasmaImExSdcStorage.H:106
Vector< EBAMRCellData > m_FAR
Explicit advection-reaction operator F_AR(phi^k) at each node. Index m ∈ [0, p].
Definition CD_CdrPlasmaImExSdcStorage.H:357
void deallocateStorage()
Deallocate all scratch arrays.
Definition CD_CdrPlasmaImExSdcStorage.cpp:74
EBAMRIFData & getDomainGrad()
Return the domain-face-centered normal density gradient.
Definition CD_CdrPlasmaImExSdcStorage.H:278
RefCountedPtr< AmrMesh > m_amr
AMR mesh used for allocation.
Definition CD_CdrPlasmaImExSdcStorage.H:292
EBAMRIFData & getDomainFlux()
Return the domain-face-centered boundary flux (inward positive).
Definition CD_CdrPlasmaImExSdcStorage.H:268
EBAMRCellData & getScratchD()
Return the SpaceDim-component cell-centered scratch array.
Definition CD_CdrPlasmaImExSdcStorage.H:127
Vector< EBAMRCellData > & getFAR()
Return the explicit advection-reaction operator F_AR^k at all p+1 nodes.
Definition CD_CdrPlasmaImExSdcStorage.H:157
~CdrStorage()
Destructor.
Definition CD_CdrPlasmaImExSdcStorage.cpp:29
EBAMRIVData m_scratchIV3
EB-centered boundary flux.
Definition CD_CdrPlasmaImExSdcStorage.H:392
Vector< EBAMRCellData > & getF()
Return the combined operator F^k = F_AR^k + F_D^k at all p+1 nodes.
Definition CD_CdrPlasmaImExSdcStorage.H:177
EBAMRIFData & getDomainState()
Return the domain-face-centered species density (extrapolated from the cell center).
Definition CD_CdrPlasmaImExSdcStorage.H:248
phase::which_phase m_phase
Phase on which storage is allocated.
Definition CD_CdrPlasmaImExSdcStorage.H:297
Vector< EBAMRCellData > & getFD()
Return the implicit diffusion operator F_D^k at all p+1 nodes.
Definition CD_CdrPlasmaImExSdcStorage.H:167
EBAMRCellData & getDivF()
Return the divergence of the advective flux (cell-centered, one component).
Definition CD_CdrPlasmaImExSdcStorage.H:137
EBAMRCellData m_gradient
Cell-centered gradient of the species density (SpaceDim components).
Definition CD_CdrPlasmaImExSdcStorage.H:332
CdrStorage()
Default constructor. Leaves all members uninitialised; call allocateStorage() after construction.
EBAMRIVData m_scratchIVD
EB-centered SpaceDim-component scratch array.
Definition CD_CdrPlasmaImExSdcStorage.H:377
EBAMRIVData & getEbState()
Return the EB-centered species density (extrapolated from the cell center).
Definition CD_CdrPlasmaImExSdcStorage.H:208
EBAMRIVData & getEbScratch1()
Return the first EB-centered scratch array (one component).
Definition CD_CdrPlasmaImExSdcStorage.H:188
Vector< EBAMRCellData > & getPhi()
Return the phi^k solution at all p+1 SDC nodes.
Definition CD_CdrPlasmaImExSdcStorage.H:147
EBAMRIFData m_scratchIF2
Domain-face-centered normal drift velocity component.
Definition CD_CdrPlasmaImExSdcStorage.H:407
EBAMRIVData m_scratchIV4
EB-centered normal density gradient.
Definition CD_CdrPlasmaImExSdcStorage.H:397
int m_p
Number of SDC subintervals (p+1 nodes).
Definition CD_CdrPlasmaImExSdcStorage.H:307
Vector< EBAMRCellData > m_FD
Implicit diffusion operator F_D(phi^k) at each node. Index m ∈ [0, p].
Definition CD_CdrPlasmaImExSdcStorage.H:362
EBAMRCellData m_scratch2
Second general-purpose cell-centered scratch array.
Definition CD_CdrPlasmaImExSdcStorage.H:322
EBAMRIFData & getDomainVelo()
Return the domain-face-centered normal drift velocity.
Definition CD_CdrPlasmaImExSdcStorage.H:258
EBAMRIVData & getEbScratchD()
Return the SpaceDim-component EB-centered scratch array.
Definition CD_CdrPlasmaImExSdcStorage.H:198
Vector< EBAMRCellData > m_F
Combined operator F = F_AR + F_D at each node. Index m ∈ [0, p].
Definition CD_CdrPlasmaImExSdcStorage.H:367
Field solver scratch storage for the IMEX-SDC time stepper.
Definition CD_CdrPlasmaImExSdcStorage.H:427
EBAMRCellData & getElectricFieldCell()
Return the cell-centered electric field vector (SpaceDim components).
Definition CD_CdrPlasmaImExSdcStorage.H:479
~FieldStorage()
Destructor.
Definition CD_CdrPlasmaImExSdcStorage.cpp:114
EBAMRIFData m_E_dom
Domain-face-centered electric field vector (SpaceDim components).
Definition CD_CdrPlasmaImExSdcStorage.H:563
int m_p
Number of SDC subintervals.
Definition CD_CdrPlasmaImExSdcStorage.H:538
EBAMRFluxData m_E_face
Face-centered normal component of the electric field.
Definition CD_CdrPlasmaImExSdcStorage.H:553
EBAMRFluxData & getElectricFieldFace()
Return the face-centered normal electric field component.
Definition CD_CdrPlasmaImExSdcStorage.H:489
EBAMRCellData m_E_cell
Cell-centered electric field vector (SpaceDim components).
Definition CD_CdrPlasmaImExSdcStorage.H:548
RefCountedPtr< AmrMesh > m_amr
AMR mesh used for allocation.
Definition CD_CdrPlasmaImExSdcStorage.H:523
EBAMRIVData m_E_eb
EB-centroid-centered electric field vector (SpaceDim components).
Definition CD_CdrPlasmaImExSdcStorage.H:558
void allocateStorage(const int a_p)
Allocate all field storage arrays for p+1 SDC nodes.
Definition CD_CdrPlasmaImExSdcStorage.cpp:120
std::string m_realm
Realm on which storage is allocated.
Definition CD_CdrPlasmaImExSdcStorage.H:518
phase::which_phase m_phase
Phase on which storage is allocated.
Definition CD_CdrPlasmaImExSdcStorage.H:528
int m_ncomp
Number of field components (SpaceDim).
Definition CD_CdrPlasmaImExSdcStorage.H:533
MFAMRCellData & getPrevious()
Return the multifluid electrostatic potential at the previous time step.
Definition CD_CdrPlasmaImExSdcStorage.H:469
FieldStorage()
Default constructor. Leaves all members uninitialised; call allocateStorage() after construction.
EBAMRIVData & getElectricFieldEb()
Return the EB-centroid-centered electric field vector.
Definition CD_CdrPlasmaImExSdcStorage.H:499
void deallocateStorage()
Deallocate all field storage arrays.
Definition CD_CdrPlasmaImExSdcStorage.cpp:132
MFAMRCellData m_previous
Multifluid cell-centered electrostatic potential at the previous time step.
Definition CD_CdrPlasmaImExSdcStorage.H:543
EBAMRIFData & getElectricFieldDomain()
Return the domain-face-centered electric field vector.
Definition CD_CdrPlasmaImExSdcStorage.H:509
Per-RTE-solver scratch storage for the IMEX-SDC time stepper.
Definition CD_CdrPlasmaImExSdcStorage.H:572
int m_ncomp
Number of scalar components (1 for RTE species).
Definition CD_CdrPlasmaImExSdcStorage.H:658
void deallocateStorage()
Deallocate all RTE scratch storage.
Definition CD_CdrPlasmaImExSdcStorage.cpp:166
std::string m_realm
Realm on which storage is allocated.
Definition CD_CdrPlasmaImExSdcStorage.H:643
EBAMRIFData m_scratchIF
Domain-face-centered scratch array for the isotropic photon density boundary condition.
Definition CD_CdrPlasmaImExSdcStorage.H:678
int m_p
Number of SDC subintervals.
Definition CD_CdrPlasmaImExSdcStorage.H:663
EBAMRCellData & getPrevious()
Return the cell-centered photon density at the previous time step.
Definition CD_CdrPlasmaImExSdcStorage.H:614
EBAMRIFData & getDomainFlux()
Return the domain-face-centered isotropic photon flux scratch array.
Definition CD_CdrPlasmaImExSdcStorage.H:634
void allocateStorage(const int a_p)
Allocate RTE scratch storage for p+1 SDC nodes.
Definition CD_CdrPlasmaImExSdcStorage.cpp:156
RefCountedPtr< AmrMesh > m_amr
AMR mesh used for allocation.
Definition CD_CdrPlasmaImExSdcStorage.H:648
EBAMRIVData m_scratchIV
EB-centered scratch array for the isotropic photon density boundary condition.
Definition CD_CdrPlasmaImExSdcStorage.H:673
phase::which_phase m_phase
Phase on which storage is allocated.
Definition CD_CdrPlasmaImExSdcStorage.H:653
~RtStorage()
Destructor.
Definition CD_CdrPlasmaImExSdcStorage.cpp:150
RtStorage()
Default constructor. Leaves all members uninitialised; call allocateStorage() after construction.
EBAMRIVData & getEbFlux()
Return the EB-centered isotropic photon flux scratch array.
Definition CD_CdrPlasmaImExSdcStorage.H:624
EBAMRCellData m_previous
Cell-centered photon density at the previous time step (used to restore state on rejection).
Definition CD_CdrPlasmaImExSdcStorage.H:668
Surface charge solver scratch storage for the IMEX-SDC time stepper.
Definition CD_CdrPlasmaImExSdcStorage.H:687
Vector< EBAMRIVData > m_Fnew
New (current-sweep) flux operator slopes at each node. Index m ∈ [0, p].
Definition CD_CdrPlasmaImExSdcStorage.H:818
Vector< EBAMRIVData > m_Fold
Lagged (previous-sweep) flux operator slopes at each node. Index m ∈ [0, p].
Definition CD_CdrPlasmaImExSdcStorage.H:823
EBAMRIVData m_error
Surface charge error estimator: |sigma^{k+1} - sigma^k|.
Definition CD_CdrPlasmaImExSdcStorage.H:808
EBAMRIVData & getError()
Return the surface charge error estimator: |sigma^{k+1} - sigma^k|.
Definition CD_CdrPlasmaImExSdcStorage.H:739
RefCountedPtr< AmrMesh > m_amr
AMR mesh used for allocation.
Definition CD_CdrPlasmaImExSdcStorage.H:783
int m_ncomp
Number of scalar components (1 for surface charge).
Definition CD_CdrPlasmaImExSdcStorage.H:793
void deallocateStorage()
Deallocate all surface charge scratch storage.
Definition CD_CdrPlasmaImExSdcStorage.cpp:207
std::string m_realm
Realm on which storage is allocated.
Definition CD_CdrPlasmaImExSdcStorage.H:778
Vector< EBAMRIVData > & getFnew()
Return the new (current-sweep) flux operator slopes at all p+1 nodes.
Definition CD_CdrPlasmaImExSdcStorage.H:759
~SigmaStorage()
Destructor.
Definition CD_CdrPlasmaImExSdcStorage.cpp:182
int m_p
Number of SDC subintervals.
Definition CD_CdrPlasmaImExSdcStorage.H:798
EBAMRIVData m_scratch
General-purpose EB-centered scratch array.
Definition CD_CdrPlasmaImExSdcStorage.H:803
Vector< EBAMRIVData > & getFold()
Return the lagged (previous-sweep) flux operator slopes at all p+1 nodes.
Definition CD_CdrPlasmaImExSdcStorage.H:769
phase::which_phase m_phase
Phase on which storage is allocated.
Definition CD_CdrPlasmaImExSdcStorage.H:788
EBAMRIVData & getScratch()
Return the general-purpose EB-centered scratch array.
Definition CD_CdrPlasmaImExSdcStorage.H:729
Vector< EBAMRIVData > m_sigma
sigma^k at each of the p+1 SDC nodes. Index m ∈ [0, p].
Definition CD_CdrPlasmaImExSdcStorage.H:813
void allocateStorage(const int a_p)
Allocate surface charge scratch storage for p+1 SDC nodes.
Definition CD_CdrPlasmaImExSdcStorage.cpp:188
SigmaStorage()
Default constructor. Leaves all members uninitialised; call allocateStorage() after construction.
Vector< EBAMRIVData > & getSigmaSolver()
Return sigma^k at all p+1 SDC nodes.
Definition CD_CdrPlasmaImExSdcStorage.H:749
Namespace containing physics models for use with chombo-discharge.
Definition CD_AdvectionDiffusion.H:16
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38