chombo-discharge
Loading...
Searching...
No Matches
CD_TracerParticleSolver.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_TRACERPARTICLESOLVER_H
14#define CD_TRACERPARTICLESOLVER_H
15
16// Our includes
17#include <CD_AmrMesh.H>
20#include <CD_NamespaceHeader.H>
21
37template <typename P>
39{
40public:
45
51
56 TracerParticleSolver(const TracerParticleSolver&& a_other) = delete;
57
63 TracerParticleSolver(const RefCountedPtr<AmrMesh>& a_amr, const RefCountedPtr<ComputationalGeometry>& a_compGeom);
64
70 operator=(const TracerParticleSolver& a_other) = delete;
71
77 operator=(const TracerParticleSolver&& a_other) = delete;
78
82 virtual ~TracerParticleSolver();
83
87 virtual void
88 allocate();
89
93 virtual void
94 registerOperators() const;
95
100 virtual void
101 setAmr(const RefCountedPtr<AmrMesh>& a_amrMesh);
102
107 virtual void
108 setComputationalGeometry(const RefCountedPtr<ComputationalGeometry>& a_compGeom);
109
114 virtual void
115 setName(const std::string& a_name) noexcept;
116
121 virtual void
122 setVolumeScale(const bool a_scale) noexcept;
123
128 virtual void
129 setRealm(const std::string& a_realm);
130
135 virtual void
136 setPhase(const phase::which_phase& a_phase);
137
145 virtual void
146 setTime(const int a_step, const Real a_time, const Real a_dt);
147
152 virtual void
153 setVelocity(const EBAMRCellData& a_velocityField);
154
161 virtual void
162 preRegrid(const int a_lbase, const int a_oldFinestLevel);
163
171 virtual void
172 regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel);
173
177 virtual void
178 remap();
179
184 virtual void
185 setDeposition(const DepositionType a_deposition) noexcept;
186
191 virtual void
192 deposit(EBAMRCellData& a_phi) const noexcept;
193
198 virtual void
199 interpolateWeight(const EBAMRCellData& a_scalar) noexcept;
200
204 virtual void
206
210 virtual void
211 parseOptions();
212
216 virtual void
218
224 virtual void
226
231 virtual int
233
238 virtual Vector<std::string>
239 getPlotVariableNames() const;
240
249 virtual void
250 writePlotData(LevelData<EBCellFAB>& a_output,
251 int& a_comp,
252 const std::string& a_outputRealm,
253 const int a_level) const noexcept;
254
255#ifdef CH_USE_HDF5
261 virtual void
262 writeCheckpointLevel(HDF5Handle& a_handle, const int a_level) const;
263#endif
264
265#ifdef CH_USE_HDF5
271 virtual void
272 readCheckpointLevel(HDF5Handle& a_handle, const int a_level);
273#endif
274
279 virtual Real
280 computeDt() const;
281
286 virtual ParticleContainer<P>&
287 getParticles();
288
293 virtual const ParticleContainer<P>&
294 getParticles() const;
295
300 const EBAMRCellData&
301 getVelocityField() const;
302
307 virtual DepositionType
308 getDepositionType() const;
309
316
321 virtual DepositionType
322 getInterpolationType() const;
323
324protected:
328 RefCountedPtr<AmrMesh> m_amr;
329
333 RefCountedPtr<ComputationalGeometry> m_computationalGeometry;
334
339
344
349
353 std::string m_realm;
354
358 std::string m_name;
359
363 std::string m_className;
364
369
373 Real m_dt;
374
378 Real m_time;
379
384
389
394
399
404
408 EBAMRCellData m_velocityField;
409
414
418 void
420
424 void
426
430 void
432
444 virtual void
445 writeData(LevelData<EBCellFAB>& a_output,
446 int& a_comp,
447 const EBAMRCellData& a_data,
448 const std::string a_outputRealm,
449 const int a_level,
450 const bool a_interpToCentroids,
451 const bool a_interpGhost) const noexcept;
452};
453
454#include <CD_NamespaceFooter.H>
455
457
458#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:28
Declaration of base class for defining geometries.
DepositionType
Deposition types.
Definition CD_DepositionType.H:24
Declaration of an AMR-hierarchy container that owns per-patch ParticleSoA leaves.
Implementation of CD_TracerParticleSolver.H.
AMR-hierarchy container of computational particles, stored per patch in Struct-of-Arrays form.
Definition CD_ParticleContainer.H:123
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:39
virtual CoarseFineDeposition getCoarseFineDepositionType() const
Get the coarse-fine deposition type.
Definition CD_TracerParticleSolverImplem.H:714
ParticleContainer< P > m_particles
Computational particles.
Definition CD_TracerParticleSolver.H:413
virtual void remap()
Remap particles.
Definition CD_TracerParticleSolverImplem.H:339
virtual void setRealm(const std::string &a_realm)
Set the solver realm.
Definition CD_TracerParticleSolverImplem.H:233
void parsePlotVariables()
Parse plot variables.
Definition CD_TracerParticleSolverImplem.H:148
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:177
phase::which_phase m_phase
Phase where this solver lives.
Definition CD_TracerParticleSolver.H:368
virtual void setName(const std::string &a_name) noexcept
Set the solver name.
Definition CD_TracerParticleSolverImplem.H:209
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26
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:257
virtual void deposit(EBAMRCellData &a_phi) const noexcept
Deposit particle weight on mesh.
Definition CD_TracerParticleSolverImplem.H:363
CoarseFineDeposition m_coarseFineDeposition
Coarse-fine deposition strategy.
Definition CD_TracerParticleSolver.H:348
bool m_volumeScale
Do volumetric scaling when depositing (or not).
Definition CD_TracerParticleSolver.H:403
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:541
virtual ~TracerParticleSolver()
Destructor.
Definition CD_TracerParticleSolverImplem.H:56
std::string m_realm
Realm where this solver lives.
Definition CD_TracerParticleSolver.H:353
virtual void preRegrid(const int a_lbase, const int a_oldFinestLevel)
Perform pre-regrid operations.
Definition CD_TracerParticleSolverImplem.H:307
DepositionType m_interpolation
Deposition type when interpolating to particles.
Definition CD_TracerParticleSolver.H:343
bool m_plotWeight
Hook for adding weight to plot file.
Definition CD_TracerParticleSolver.H:393
virtual ParticleContainer< P > & getParticles()
Get all particles.
Definition CD_TracerParticleSolverImplem.H:666
void parseDeposition()
Parse deposition method.
Definition CD_TracerParticleSolverImplem.H:91
void parseVerbosity()
Parse solver verbosity.
Definition CD_TracerParticleSolverImplem.H:163
int m_verbosity
Verbosity level.
Definition CD_TracerParticleSolver.H:388
RefCountedPtr< AmrMesh > m_amr
Handle to AMR mesh.
Definition CD_TracerParticleSolver.H:328
virtual Vector< std::string > getPlotVariableNames() const
Get plot variable names.
Definition CD_TracerParticleSolverImplem.H:484
DepositionType m_deposition
Deposition type when depositing particles to grid.
Definition CD_TracerParticleSolver.H:338
RefCountedPtr< ComputationalGeometry > m_computationalGeometry
Handle to computational geometry.
Definition CD_TracerParticleSolver.H:333
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:513
virtual void parseRuntimeOptions()
Parse solver run-time options.
Definition CD_TracerParticleSolverImplem.H:77
virtual void writePlotFile()
Write plot file.
Definition CD_TracerParticleSolverImplem.H:412
virtual void setDeposition(const DepositionType a_deposition) noexcept
Set deposition method.
Definition CD_TracerParticleSolverImplem.H:351
virtual void setPhase(const phase::which_phase &a_phase)
Set the solver phase.
Definition CD_TracerParticleSolverImplem.H:245
virtual DepositionType getDepositionType() const
Get the deposition type.
Definition CD_TracerParticleSolverImplem.H:702
Real m_dt
Time step.
Definition CD_TracerParticleSolver.H:373
TracerParticleSolver(const TracerParticleSolver &a_other)=delete
Disallowed constructor.
virtual void allocate()
Allocate storage for this solver.
Definition CD_TracerParticleSolverImplem.H:195
std::string m_name
Solver name.
Definition CD_TracerParticleSolver.H:358
bool m_plotVelocity
Hook for adding velocity field to plot file.
Definition CD_TracerParticleSolver.H:398
int m_timeStep
Time step.
Definition CD_TracerParticleSolver.H:383
virtual DepositionType getInterpolationType() const
Get the interpolation type.
Definition CD_TracerParticleSolverImplem.H:726
virtual void setComputationalGeometry(const RefCountedPtr< ComputationalGeometry > &a_compGeom)
Set the computational geometry.
Definition CD_TracerParticleSolverImplem.H:283
virtual void interpolateVelocities()
Interpolate particles velocities.
Definition CD_TracerParticleSolverImplem.H:395
const EBAMRCellData & getVelocityField() const
Return the velocity field.
Definition CD_TracerParticleSolverImplem.H:690
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)
Regrid this solver.
Definition CD_TracerParticleSolverImplem.H:322
std::string m_className
Class name.
Definition CD_TracerParticleSolver.H:363
virtual void parseOptions()
Parse solver options.
Definition CD_TracerParticleSolverImplem.H:63
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:295
Real m_time
Time.
Definition CD_TracerParticleSolver.H:378
virtual void interpolateWeight(const EBAMRCellData &a_scalar) noexcept
Interpolate a scalar field onto the particle weight.
Definition CD_TracerParticleSolverImplem.H:383
EBAMRCellData m_velocityField
Mesh-based velocity field. Must be set through setVelocity.
Definition CD_TracerParticleSolver.H:408
virtual int getNumberOfPlotVariables() const
Get the number of plot variables.
Definition CD_TracerParticleSolverImplem.H:463
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:271
virtual Real computeDt() const
Compute dt = dx/max(v_x, v_y, v_z) minimized over all particles.
Definition CD_TracerParticleSolverImplem.H:625
virtual void setVolumeScale(const bool a_scale) noexcept
Turn on/off volume scaling.
Definition CD_TracerParticleSolverImplem.H:221
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38