chombo-discharge
Loading...
Searching...
No Matches
CD_McPhotoImplem.H
Go to the documentation of this file.
1/* chombo-discharge
2 * Copyright © 2021 SINTEF Energy Research.
3 * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4 */
5
12#ifndef CD_McPhotoImplem_H
13#define CD_McPhotoImplem_H
14
15// Our includes
16#include <CD_McPhoto.H>
17#include <CD_NamespaceHeader.H>
18
19template <class P, class Ret, Ret (P::*MemberFunc)() const>
20void
23 const DepositionType& a_deposition) const noexcept
24{
25 CH_TIME("McPhoto::depositPhotons(ParticleContainer)");
26 if (m_verbosity > 5) {
27 pout() << m_name + "::depositPhotons(ParticleContainer)" << endl;
28 }
29
30 // a_phi contains only weights, i.e. not divided by kappa
32
33 // Compute m_depositionNC = sum(kappa*Wc)/sum(kappa)
34 this->depositNonConservative(m_depositionNC, a_phi);
35
36 // Compute hybrid deposition, including mass differnce
37 this->depositHybrid(a_phi, m_massDiff, m_depositionNC);
38
39 // Redistribute
40 if (m_blendConservation) {
41 Vector<RefCountedPtr<EBFluxRedistribution>>& redistOps = m_amr->getRedistributionOp(m_realm, m_phase);
42 for (int lvl = 0; lvl <= m_amr->getFinestLevel(); lvl++) {
43 const Real scale = 1.0;
44 const Interval variables = Interval(0, 0);
45 const bool hasCoar = lvl > 0;
46 const bool hasFine = lvl < m_amr->getFinestLevel();
47
48 if (hasCoar) {
49 redistOps[lvl]->redistributeCoar(*a_phi[lvl - 1], *m_massDiff[lvl], scale, variables);
50 }
51
52 redistOps[lvl]->redistributeLevel(*a_phi[lvl], *m_massDiff[lvl], scale, variables);
53
54 if (hasFine) {
55 redistOps[lvl]->redistributeFine(*a_phi[lvl + 1], *m_massDiff[lvl], scale, variables);
56 }
57 }
58 }
59
60 // Average down and interpolate
61 m_amr->conservativeAverage(a_phi, m_realm, m_phase);
62 m_amr->interpGhost(a_phi, m_realm, m_phase);
63}
64
65template <class P, class Ret, Ret (P::*MemberFunc)() const>
66void
71{
72 CH_TIME("McPhoto::depositKappaConservative");
73 if (m_verbosity > 5) {
74 pout() << m_name + "::depositKappaConservative" << endl;
75 }
76
77 CH_assert(a_phi[0]->nComp() == 1);
78
79 m_amr->depositParticles<P, Ret, MemberFunc>(a_phi,
80 m_realm,
81 m_phase,
85 false);
86}
87
88#include <CD_NamespaceFooter.H>
89
90#endif
CoarseFineDeposition
Coarse-fine deposition types (see CD_EBAMRParticleMesh for how these are handled).
Definition CD_CoarseFineDeposition.H:26
DepositionType
Deposition types.
Definition CD_DepositionType.H:23
Declaration of a radiative transfer solver which uses Monte Carlo sampling of computational or real p...
void depositKappaConservative(EBAMRCellData &a_phi, ParticleContainer< P > &a_particles, const DepositionType a_deposition, const CoarseFineDeposition a_coarseFineDeposition) const noexcept
This computes the "conservative" deposition, multiplied by kappa.
Definition CD_McPhotoImplem.H:67
virtual void depositPhotons()
Deposit photons on the mesh.
Definition CD_McPhoto.cpp:1288
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37