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
19#include <CD_TimeStepper.H>
20#include <CD_NamespaceHeader.H>
21
22namespace Physics {
23 namespace TracerParticle {
24
29 {
30 Euler,
31 RK2,
32 RK4
33 };
34
38 enum class VelocityField
39 {
40 Diagonal,
42 };
43
54 template <typename P>
56 {
57 public:
62
68
74
78 virtual ~TracerParticleStepper();
79
86
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
183 getPlotVariableNames() const override;
184
192 void
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
226 virtual void
228 {}
229
235 virtual void
236 preRegrid(const int a_lmin, const int a_oldFinestLevel) override;
237
244 virtual void
245 regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override;
246
251 virtual void
252 postRegrid() override;
253
254 protected:
259
264
269
274
279
284
289
294
298 virtual void
300
304 virtual void
305 setVelocity();
306
310 virtual void
312
316 virtual void
318
322 virtual void
324
329 virtual void
331
336 virtual void
338
343 virtual void
345 };
346 } // namespace TracerParticle
347} // namespace Physics
348
349#include <CD_NamespaceFooter.H>
350
352
353#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.
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:268
void registerRealms() override
Register realms. Primal is the only realm we need.
Definition CD_TracerParticleStepperImplem.H:94
virtual void parseInitialConditions()
Parse initial conditions.
Definition CD_TracerParticleStepperImplem.H:201
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:278
void parseRuntimeOptions() override
Parse runtime options.
Definition CD_TracerParticleStepperImplem.H:132
void initialData() override
Fill problem with initial data.
Definition CD_TracerParticleStepperImplem.H:78
void registerOperators() override
Register operators.
Definition CD_TracerParticleStepperImplem.H:106
virtual Real computeDt() override
Compute a time step to be used by Driver.
Definition CD_TracerParticleStepperImplem.H:288
phase::which_phase m_phase
Phase (gas/solid) where the solver lives.
Definition CD_TracerParticleStepper.H:273
EBAMRCellData m_velocity
Cell-centred velocity field used to advect particles.
Definition CD_TracerParticleStepper.H:283
int getNumberOfPlotVariables() const override
Get number of plot variables for this physics module.
Definition CD_TracerParticleStepperImplem.H:246
virtual void advanceParticlesEuler(const Real a_dt)
Advance particles using explicit Euler rule.
Definition CD_TracerParticleStepperImplem.H:483
virtual void preRegrid(const int a_lmin, const int a_oldFinestLevel) override
Perform pre-regrid operations.
Definition CD_TracerParticleStepperImplem.H:349
void allocate() override
Allocate storage for solvers and time stepper.
Definition CD_TracerParticleStepperImplem.H:65
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:270
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
Time stepper regrid method.
Definition CD_TracerParticleStepperImplem.H:361
virtual Real advance(const Real a_dt) override
Advancement method. Swaps between various kernels.
Definition CD_TracerParticleStepperImplem.H:300
VelocityField m_velocityField
Velocity field type.
Definition CD_TracerParticleStepper.H:263
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:293
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:118
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:333
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:522
Real m_cfl
CFL number used to compute the advective time step.
Definition CD_TracerParticleStepper.H:288
void setupSolvers() override
Instantiate the tracer particle solver.
Definition CD_TracerParticleStepperImplem.H:49
virtual void printStepReport() override
Print a step report.
Definition CD_TracerParticleStepper.H:227
virtual ~TracerParticleStepper()
Destructor.
Definition CD_TracerParticleStepperImplem.H:39
virtual void advanceParticlesRK4(const Real a_dt)
Advance particles using fourth order Runge-Kutta.
Definition CD_TracerParticleStepperImplem.H:592
Vector< std::string > getPlotVariableNames() const override
Get plot variable names.
Definition CD_TracerParticleStepperImplem.H:258
IntegrationAlgorithm m_algorithm
Integration algorithm.
Definition CD_TracerParticleStepper.H:258
virtual void parseVelocityField()
Parse velocity field.
Definition CD_TracerParticleStepperImplem.H:176
virtual void parseIntegrator()
Parse integration algorithm from input script.
Definition CD_TracerParticleStepperImplem.H:146
virtual void postRegrid() override
Perform post-regrid operations.
Definition CD_TracerParticleStepperImplem.H:378
virtual void initialParticles()
Fill initial particles.
Definition CD_TracerParticleStepperImplem.H:433
TracerParticleStepper()
Constructor. Does nothing.
Definition CD_TracerParticleStepperImplem.H:28
virtual void setVelocity()
Set the velocity on the mesh.
Definition CD_TracerParticleStepperImplem.H:392
TracerParticleStepper & operator=(const TracerParticleStepper< P > &&a_other)=delete
Move assignment operator. Disallowed.
Base class for advancing equations.
Definition CD_TimeStepper.H:31
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26
A tracer particle class. This is templated for holding extra storage (useful for kernels).
Definition CD_TracerParticle.H:34
IntegrationAlgorithm
Integration algorithms available for advancing tracer particles.
Definition CD_TracerParticleStepper.H:29
@ 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:39
@ 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