chombo-discharge
Loading...
Searching...
No Matches
CD_McPhotoImplem.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_MCPHOTOIMPLEM_H
14#define CD_MCPHOTOIMPLEM_H
15
16// Our includes
17#include <CD_McPhoto.H>
18#include <CD_NamespaceHeader.H>
19
20template <class P, class Ret, Ret (P::*MemberFunc)() const>
21void
24 const DepositionType& a_deposition) const noexcept
25{
26 CH_TIME("McPhoto::depositPhotons(ParticleContainer)");
27 if (m_verbosity > 5) {
28 pout() << m_name + "::depositPhotons(ParticleContainer)" << endl;
29 }
30
31 // a_phi contains only weights, i.e. not divided by kappa
33
34 // Compute m_depositionNC = sum(kappa*Wc)/sum(kappa)
35 this->depositNonConservative(m_depositionNC, a_phi);
36
37 // Compute hybrid deposition, including mass difference
38 this->depositHybrid(a_phi, m_massDiff, m_depositionNC);
39
40 // Redistribute
41 if (m_blendConservation) {
42 Vector<RefCountedPtr<EBFluxRedistribution>>& redistOps = m_amr->getRedistributionOp(m_realm, m_phase);
43 for (int lvl = 0; lvl <= m_amr->getFinestLevel(); lvl++) {
44 const Real scale = 1.0;
45 const Interval variables = Interval(0, 0);
46 const bool hasCoar = lvl > 0;
47 const bool hasFine = lvl < m_amr->getFinestLevel();
48
49 if (hasCoar) {
50 redistOps[lvl]->redistributeCoar(*a_phi[lvl - 1], *m_massDiff[lvl], scale, variables);
51 }
52
53 redistOps[lvl]->redistributeLevel(*a_phi[lvl], *m_massDiff[lvl], scale, variables);
54
55 if (hasFine) {
56 redistOps[lvl]->redistributeFine(*a_phi[lvl + 1], *m_massDiff[lvl], scale, variables);
57 }
58 }
59 }
60
61 // Average down and interpolate
62 m_amr->conservativeAverage(a_phi, m_realm, m_phase);
63 m_amr->interpGhost(a_phi, m_realm, m_phase);
64}
65
66template <class P, class Ret, Ret (P::*MemberFunc)() const>
67void
72{
73 CH_TIME("McPhoto::depositKappaConservative");
74 if (m_verbosity > 5) {
75 pout() << m_name + "::depositKappaConservative" << endl;
76 }
77
78 CH_assert(a_phi[0]->nComp() == 1);
79
80 m_amr->depositParticles<P, Ret, MemberFunc>(a_phi,
81 m_realm,
82 m_phase,
86 false);
87}
88
89#include <CD_NamespaceFooter.H>
90
91#endif
CoarseFineDeposition
Coarse-fine deposition types (see CD_EBAMRParticleMesh for how these are handled).
Definition CD_CoarseFineDeposition.H:27
DepositionType
Deposition types.
Definition CD_DepositionType.H:24
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:68
virtual void depositPhotons()
Deposit photons on the mesh.
Definition CD_McPhoto.cpp:1296
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38