chombo-discharge
Loading...
Searching...
No Matches
CD_TracerParticleStepper.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_TRACERPARTICLESTEPPER_H
14#define CD_TRACERPARTICLESTEPPER_H
15
16// Our includes
18#include <CD_TracerParticle.H>
20#include <CD_TimeStepper.H>
21#include <CD_NamespaceHeader.H>
22
23namespace Physics {
24namespace TracerParticle {
25
30{
31 Euler,
32 RK2,
33 RK4
34};
35
39enum class VelocityField
40{
41 Diagonal,
43};
44
54template <typename P>
56{
57public:
62
68
74
78 virtual ~TracerParticleStepper();
79
85 operator=(const TracerParticleStepper<P>& a_other) = delete;
86
92 operator=(const TracerParticleStepper<P>&& a_other) = delete;
93
97 void
98 setupSolvers() override;
99
103 void
104 allocate() override;
105
109 void
110 initialData() override;
111
115 void
116 postInitialize() override
117 {}
118
122 void
124 {}
125
129 void
130 registerRealms() override;
131
136 void
137 registerOperators() override;
138
142 void
143 parseOptions();
144
148 void
149 parseRuntimeOptions() override;
150
151#ifdef CH_USE_HDF5
157 virtual void
158 writeCheckpointData(HDF5Handle& a_handle, const int a_lvl) const override;
159#endif
160
161#ifdef CH_USE_HDF5
167 virtual void
168 readCheckpointData(HDF5Handle& a_handle, const int a_lvl) override;
169#endif
170
175 int
176 getNumberOfPlotVariables() const override;
177
182 Vector<std::string>
183 getPlotVariableNames() const override;
184
192 void
193 writePlotData(LevelData<EBCellFAB>& a_output,
194 int& a_icomp,
195 const std::string& a_realm,
196 const int a_level) const override;
197
202 virtual Real
203 computeDt() override;
204
210 virtual Real
211 advance(const Real a_dt) override;
212
219 virtual void
220 synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) override;
221
227 virtual void
229 {}
230
236 virtual void
237 preRegrid(const int a_lmin, const int a_oldFinestLevel) override;
238
245 virtual void
246 regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override;
247
252 virtual void
253 postRegrid() override;
254
255protected:
260
265
269 std::string m_realm;
270
275
279 RefCountedPtr<TracerParticleSolver<P>> m_solver;
280
284 EBAMRCellData m_velocity;
285
289 Real m_cfl;
290
295
299 virtual void
301
305 virtual void
306 setVelocity();
307
311 virtual void
313
317 virtual void
319
323 virtual void
325
330 virtual void
331 advanceParticlesEuler(const Real a_dt);
332
337 virtual void
338 advanceParticlesRK2(const Real a_dt);
339
344 virtual void
345 advanceParticlesRK4(const Real a_dt);
346};
347} // namespace TracerParticle
348} // namespace Physics
349
350#include <CD_NamespaceFooter.H>
351
353
354#endif
Declaration of main (abstract) time stepper class.
Documentation of Physics/TracerParticle namespace.
Declaration of a solver class that advances tracer particles.
Implementation of CD_TracerParticleStepper.H.
SoA payload for tracer particles (velocity + Runge-Kutta stage scratch)
TimeStepper for advancing tracer particles in a prescribed velocity field on an AMR mesh.
Definition CD_TracerParticleStepper.H:56
std::string m_realm
Realm where solver and m_velocity lives.
Definition CD_TracerParticleStepper.H:269
void registerRealms() override
Register realms. Primal is the only realm we need.
Definition CD_TracerParticleStepperImplem.H:95
virtual void parseInitialConditions()
Parse initial conditions.
Definition CD_TracerParticleStepperImplem.H:202
TracerParticleStepper(const TracerParticleStepper< P > &a_other)=delete
Copy constructor. Disallowed.
RefCountedPtr< TracerParticleSolver< P > > m_solver
Tracer particle solver holding particle positions and weights on the AMR hierarchy.
Definition CD_TracerParticleStepper.H:279
void parseRuntimeOptions() override
Parse runtime options.
Definition CD_TracerParticleStepperImplem.H:133
void initialData() override
Fill problem with initial data.
Definition CD_TracerParticleStepperImplem.H:79
void registerOperators() override
Register operators.
Definition CD_TracerParticleStepperImplem.H:107
virtual Real computeDt() override
Compute a time step to be used by Driver.
Definition CD_TracerParticleStepperImplem.H:289
phase::which_phase m_phase
Phase (gas/solid) where the solver lives.
Definition CD_TracerParticleStepper.H:274
EBAMRCellData m_velocity
Cell-centred velocity field used to advect particles.
Definition CD_TracerParticleStepper.H:284
int getNumberOfPlotVariables() const override
Get number of plot variables for this physics module.
Definition CD_TracerParticleStepperImplem.H:247
virtual void advanceParticlesEuler(const Real a_dt)
Advance particles using explicit Euler rule.
Definition CD_TracerParticleStepperImplem.H:480
virtual void preRegrid(const int a_lmin, const int a_oldFinestLevel) override
Perform pre-regrid operations.
Definition CD_TracerParticleStepperImplem.H:350
void allocate() override
Allocate storage for solvers and time stepper.
Definition CD_TracerParticleStepperImplem.H:66
void writePlotData(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string &a_realm, const int a_level) const override
Write plot data to output holder.
Definition CD_TracerParticleStepperImplem.H:271
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
Time stepper regrid method.
Definition CD_TracerParticleStepperImplem.H:362
virtual Real advance(const Real a_dt) override
Advancement method. Swaps between various kernels.
Definition CD_TracerParticleStepperImplem.H:301
VelocityField m_velocityField
Velocity field type.
Definition CD_TracerParticleStepper.H:264
TracerParticleStepper(const TracerParticleStepper< P > &&a_other)=delete
Move constructor. Disallowed.
size_t m_numInitialParticles
Number of particles placed uniformly at initialization.
Definition CD_TracerParticleStepper.H:294
void postCheckpointSetup() override
Post checkpoint operations. Not needed for this time stepper.
Definition CD_TracerParticleStepper.H:123
void parseOptions()
Parse options.
Definition CD_TracerParticleStepperImplem.H:119
virtual void synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) override
Synchronize solver times and time steps.
Definition CD_TracerParticleStepperImplem.H:334
void postInitialize() override
Perform any post-initialization steps. Not needed for this time stepper.
Definition CD_TracerParticleStepper.H:116
TracerParticleStepper & operator=(const TracerParticleStepper< P > &a_other)=delete
Copy assignment operator. Disallowed.
virtual void advanceParticlesRK2(const Real a_dt)
Advance particles using second order Runge-Kutta.
Definition CD_TracerParticleStepperImplem.H:523
Real m_cfl
CFL number used to compute the advective time step.
Definition CD_TracerParticleStepper.H:289
void setupSolvers() override
Instantiate the tracer particle solver.
Definition CD_TracerParticleStepperImplem.H:50
virtual void printStepReport() override
Print a step report.
Definition CD_TracerParticleStepper.H:228
virtual ~TracerParticleStepper()
Destructor.
Definition CD_TracerParticleStepperImplem.H:40
virtual void advanceParticlesRK4(const Real a_dt)
Advance particles using fourth order Runge-Kutta.
Definition CD_TracerParticleStepperImplem.H:608
Vector< std::string > getPlotVariableNames() const override
Get plot variable names.
Definition CD_TracerParticleStepperImplem.H:259
IntegrationAlgorithm m_algorithm
Integration algorithm.
Definition CD_TracerParticleStepper.H:259
virtual void parseVelocityField()
Parse velocity field.
Definition CD_TracerParticleStepperImplem.H:177
virtual void parseIntegrator()
Parse integration algorithm from input script.
Definition CD_TracerParticleStepperImplem.H:147
virtual void postRegrid() override
Perform post-regrid operations.
Definition CD_TracerParticleStepperImplem.H:379
virtual void initialParticles()
Fill initial particles.
Definition CD_TracerParticleStepperImplem.H:434
TracerParticleStepper()
Constructor. Does nothing.
Definition CD_TracerParticleStepperImplem.H:29
virtual void setVelocity()
Set the velocity on the mesh.
Definition CD_TracerParticleStepperImplem.H:393
TracerParticleStepper & operator=(const TracerParticleStepper< P > &&a_other)=delete
Move assignment operator. Disallowed.
Base class for advancing equations.
Definition CD_TimeStepper.H:32
IntegrationAlgorithm
Integration algorithms available for advancing tracer particles.
Definition CD_TracerParticleStepper.H:30
@ Euler
Explicit forward Euler (first order).
@ RK2
Explicit second-order Runge-Kutta (Heun's method).
@ RK4
Explicit classical fourth-order Runge-Kutta.
VelocityField
Predefined velocity fields available for testing.
Definition CD_TracerParticleStepper.H:40
@ Rotational
Solid-body rotation velocity field.
@ Diagonal
Uniform diagonal translation velocity.
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
SoA payload for tracer particles: interpolated velocity plus Runge-Kutta stage scratch.
Definition CD_TracerParticle.H:28