chombo-discharge
Loading...
Searching...
No Matches
CD_TracerParticleSolver.H
Go to the documentation of this file.
1/* chombo-discharge
2 * Copyright © 2022 SINTEF Energy Research.
3 * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4 */
5
12#ifndef CD_TracerParticleSolver_H
13#define CD_TracerParticleSolver_H
14
15// Our includes
16#include <CD_AmrMesh.H>
18#include <CD_TracerParticle.H>
20#include <CD_NamespaceHeader.H>
21
35template <typename P>
37{
38public:
43
49
55
62
69
76
80 virtual ~TracerParticleSolver();
81
85 virtual void
86 allocate();
87
91 virtual void
92 registerOperators() const;
93
98 virtual void
100
105 virtual void
107
112 virtual void
113 setName(const std::string& a_name) noexcept;
114
119 virtual void
120 setVolumeScale(const bool a_scale) noexcept;
121
126 virtual void
128
133 virtual void
134 setPhase(const phase::which_phase& a_phase);
135
143 virtual void
144 setTime(const int a_step, const Real a_time, const Real a_dt);
145
150 virtual void
152
159 virtual void
160 preRegrid(const int a_lbase, const int a_oldFinestLevel);
161
169 virtual void
170 regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel);
171
175 virtual void
176 remap();
177
182 virtual void
184
189 virtual void
190 deposit(EBAMRCellData& a_phi) const noexcept;
191
195 virtual void
197
201 virtual void
203
207 virtual void
208 parseOptions();
209
213 virtual void
215
221 virtual void
223
228 virtual int
230
235 virtual Vector<std::string>
236 getPlotVariableNames() const;
237
246 virtual void
248 int& a_comp,
250 const int a_level) const noexcept;
251
257#ifdef CH_USE_HDF5
258 virtual void
260#endif
261
267#ifdef CH_USE_HDF5
268 virtual void
270#endif
271
275 virtual Real
276 computeDt() const;
277
282 virtual ParticleContainer<P>&
283 getParticles();
284
289 virtual const ParticleContainer<P>&
290 getParticles() const;
291
296 const EBAMRCellData&
297 getVelocityField() const;
298
302 virtual DepositionType
303 getDepositionType() const;
309
313 virtual DepositionType
314 getInterpolationType() const;
315
316protected:
321
326
331
336
341
346
351
356
360 phase::which_phase m_phase;
361
366
371
376
381
386
391
396
401
406
410 void
412
416 void
418
422 void
424
432 template <class T, class Ret, Ret (T::*MemberFunc)() const>
433 void
437 const CoarseFineDeposition a_coarseFineDeposition) const noexcept;
438
449 virtual void
451 int& a_comp,
452 const EBAMRCellData& a_data,
454 const int a_level,
455 const bool a_interpToCentroids,
456 const bool a_interpGhost) const noexcept;
457};
458
459#include <CD_NamespaceFooter.H>
460
462
463#endif
Declaration of core class for handling AMR-related operations (with embedded boundaries)
CoarseFineDeposition
Coarse-fine deposition types (see CD_EBAMRParticleMesh for how these are handled).
Definition CD_CoarseFineDeposition.H:26
Declaration of base class for defining geometries.
DepositionType
Deposition types.
Definition CD_DepositionType.H:23
Declaration of a class for holding particles on an AMR hierarchy.
Implementation of CD_TracerParticleSolver.H.
Declaration of a tracer particle class.
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37
virtual CoarseFineDeposition getCoarseFineDepositionType() const
Get the coarse-fine deposition type.
Definition CD_TracerParticleSolverImplem.H:710
ParticleContainer< P > m_particles
Computational particles.
Definition CD_TracerParticleSolver.H:405
virtual void remap()
Remap particles.
Definition CD_TracerParticleSolverImplem.H:338
virtual void setRealm(const std::string &a_realm)
Set the solver realm.
Definition CD_TracerParticleSolverImplem.H:232
void depositParticles(EBAMRCellData &a_phi, const ParticleContainer< T > &a_particles, const DepositionType a_baseDeposition, const CoarseFineDeposition a_coarseFineDeposition) const noexcept
Generic particle deposition method for putting a scalar field onto the mesh.
Definition CD_TracerParticleSolverImplem.H:735
void parsePlotVariables()
Parse plot variables.
Definition CD_TracerParticleSolverImplem.H:147
TracerParticleSolver & operator=(const TracerParticleSolver &a_other)=delete
Disallowed assignment operator.
virtual void registerOperators() const
Register operators needed for AMR core functionality.
Definition CD_TracerParticleSolverImplem.H:176
phase::which_phase m_phase
Phase where this solver lives.
Definition CD_TracerParticleSolver.H:360
virtual void setName(const std::string &a_name) noexcept
Set the solver name.
Definition CD_TracerParticleSolverImplem.H:208
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:25
virtual void setTime(const int a_step, const Real a_time, const Real a_dt)
Set the time for this solver.
Definition CD_TracerParticleSolverImplem.H:256
virtual void deposit(EBAMRCellData &a_phi) const noexcept
Deposit particle weight on mesh.
Definition CD_TracerParticleSolverImplem.H:362
CoarseFineDeposition m_coarseFineDeposition
Coarse-fine deposition strategy.
Definition CD_TracerParticleSolver.H:340
bool m_volumeScale
Do volumetric scaling when depositing (or not).
Definition CD_TracerParticleSolver.H:395
virtual void writeData(LevelData< EBCellFAB > &a_output, int &a_comp, const EBAMRCellData &a_data, const std::string a_outputRealm, const int a_level, const bool a_interpToCentroids, const bool a_interpGhost) const noexcept
Write data to output. Convenience function.
Definition CD_TracerParticleSolverImplem.H:538
virtual ~TracerParticleSolver()
Destructor.
Definition CD_TracerParticleSolverImplem.H:55
std::string m_realm
Realm where this solver lives.
Definition CD_TracerParticleSolver.H:345
virtual void preRegrid(const int a_lbase, const int a_oldFinestLevel)
Perform pre-regrid operations.
Definition CD_TracerParticleSolverImplem.H:306
DepositionType m_interpolation
Deposition type when interpolating to particles.
Definition CD_TracerParticleSolver.H:335
bool m_plotWeight
Hook for adding weight to plot file.
Definition CD_TracerParticleSolver.H:385
virtual ParticleContainer< P > & getParticles()
Get all particles.
Definition CD_TracerParticleSolverImplem.H:662
void parseDeposition()
Parse deposition method.
Definition CD_TracerParticleSolverImplem.H:90
void parseVerbosity()
Parse solver verbosity.
Definition CD_TracerParticleSolverImplem.H:162
virtual void writePlotData(LevelData< EBCellFAB > &a_output, int &a_comp, const std::string a_outputRealm, const int a_level) const noexcept
Write plot data.
Definition CD_TracerParticleSolverImplem.H:510
int m_verbosity
Verbosity level.
Definition CD_TracerParticleSolver.H:380
RefCountedPtr< AmrMesh > m_amr
Handle to AMR mesh.
Definition CD_TracerParticleSolver.H:320
virtual Vector< std::string > getPlotVariableNames() const
Get plot variable names.
Definition CD_TracerParticleSolverImplem.H:481
DepositionType m_deposition
Deposition type when depositing particles to grid.
Definition CD_TracerParticleSolver.H:330
RefCountedPtr< ComputationalGeometry > m_computationalGeometry
Handle to computational geometry.
Definition CD_TracerParticleSolver.H:325
virtual void parseRuntimeOptions()
Parse solver run-time options.
Definition CD_TracerParticleSolverImplem.H:76
virtual void writePlotFile()
Write plot file.
Definition CD_TracerParticleSolverImplem.H:409
virtual void setDeposition(const DepositionType a_deposition) noexcept
Set deposition method.
Definition CD_TracerParticleSolverImplem.H:350
virtual void setPhase(const phase::which_phase &a_phase)
Set the solver phase.
Definition CD_TracerParticleSolverImplem.H:244
virtual DepositionType getDepositionType() const
Get the deposition type.
Definition CD_TracerParticleSolverImplem.H:698
Real m_dt
Time step.
Definition CD_TracerParticleSolver.H:365
TracerParticleSolver(const TracerParticleSolver &a_other)=delete
Disallowed constructor.
virtual void allocate()
Allocate storage for this solver.
Definition CD_TracerParticleSolverImplem.H:194
std::string m_name
Solver name.
Definition CD_TracerParticleSolver.H:350
bool m_plotVelocity
Hook for adding velocity field to plot file.
Definition CD_TracerParticleSolver.H:390
int m_timeStep
Time step.
Definition CD_TracerParticleSolver.H:375
virtual DepositionType getInterpolationType() const
Get the interpolation type.
Definition CD_TracerParticleSolverImplem.H:722
virtual void setComputationalGeometry(const RefCountedPtr< ComputationalGeometry > &a_compGeom)
Set the computational geometry.
Definition CD_TracerParticleSolverImplem.H:282
virtual void interpolateVelocities()
Interpolate particles velocities.
Definition CD_TracerParticleSolverImplem.H:392
const EBAMRCellData & getVelocityField() const
Return the velocity field.
Definition CD_TracerParticleSolverImplem.H:686
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)
Regrid this solver.
Definition CD_TracerParticleSolverImplem.H:321
std::string m_className
Class name.
Definition CD_TracerParticleSolver.H:355
virtual void parseOptions()
Parse solver options.
Definition CD_TracerParticleSolverImplem.H:62
TracerParticleSolver(const TracerParticleSolver &&a_other)=delete
Disallowed move constructor.
virtual void setVelocity(const EBAMRCellData &a_velocityField)
Set the tracer particle velocity field.
Definition CD_TracerParticleSolverImplem.H:294
Real m_time
Time.
Definition CD_TracerParticleSolver.H:370
virtual void interpolateWeight(const EBAMRCellData &a_scalar) noexcept
Interpolate a scalar field onto the particle weight.
Definition CD_TracerParticleSolverImplem.H:380
EBAMRCellData m_velocityField
Mesh-based velocity field. Must be set through setVelocity.
Definition CD_TracerParticleSolver.H:400
virtual int getNumberOfPlotVariables() const
Get the number of plot variables.
Definition CD_TracerParticleSolverImplem.H:460
TracerParticleSolver & operator=(const TracerParticleSolver &&a_other)=delete
Disallowed move assignment operator.
virtual void setAmr(const RefCountedPtr< AmrMesh > &a_amrMesh)
Set AmrMesh.
Definition CD_TracerParticleSolverImplem.H:270
virtual Real computeDt() const
Write checkpoint data into HDF5 file. @paramo[out] a_handle HDF5 file.
Definition CD_TracerParticleSolverImplem.H:622
virtual void setVolumeScale(const bool a_scale) noexcept
Turn on/off volume scaling.
Definition CD_TracerParticleSolverImplem.H:220