REMORA
Energy Research and Forecasting: An Atmospheric Modeling Code
ParticleData Struct Reference

#include <ParticleData.H>

Collaboration diagram for ParticleData:

Public Member Functions

void init_particle_params ()
 
void init_particles (amrex::ParGDBBase *a_gdb, const amrex::Vector< std::unique_ptr< amrex::MultiFab >> &z_phys_nd)
 
void Checkpoint (const std::string &filename)
 
void Restart (amrex::ParGDBBase *a_gdb, std::string &restart_file)
 
void advance_particles (int lev, amrex::Real dt_lev, amrex::MultiFab *xvel, amrex::MultiFab *yvel, amrex::MultiFab *zvel, const amrex::Vector< std::unique_ptr< amrex::MultiFab >> &z_phys_nd)
 
void Redistribute ()
 

Public Attributes

std::string pp_prefix {"remora"}
 
int use_tracer_particles
 
std::unique_ptr< TracerPCtracer_particles
 
amrex::Vector< std::string > tracer_particle_varnames = {AMREX_D_DECL("old_x", "old_y", "old_z")}
 

Detailed Description

Container holding many of the particle-related data and options

Member Function Documentation

◆ advance_particles()

void ParticleData::advance_particles ( int  lev,
amrex::Real  dt_lev,
amrex::MultiFab *  xvel,
amrex::MultiFab *  yvel,
amrex::MultiFab *  zvel,
const amrex::Vector< std::unique_ptr< amrex::MultiFab >> &  z_phys_nd 
)
inline
60  {
61  // Update tracer particles
63  amrex::Array<amrex::MultiFab const*, AMREX_SPACEDIM> mac_vel = {xvel, yvel, zvel};
64  bool use_terrain = (z_phys_nd[lev] != nullptr);
65  if (use_terrain) {
66  tracer_particles->AdvectWithUmac(mac_vel, lev, dt_lev, use_terrain, *z_phys_nd[lev]);
67  } else {
68  amrex::MultiFab dummy;
69  tracer_particles->AdvectWithUmac(mac_vel, lev, dt_lev, use_terrain, dummy);
70  }
71  }
72  }
int use_tracer_particles
Definition: ParticleData.H:83
std::unique_ptr< TracerPC > tracer_particles
Definition: ParticleData.H:84

◆ Checkpoint()

void ParticleData::Checkpoint ( const std::string &  filename)
inline
41  {
43  tracer_particles->Checkpoint(filename, "tracer_particles", true, tracer_particle_varnames);
44  }
45  }
amrex::Vector< std::string > tracer_particle_varnames
Definition: ParticleData.H:85

◆ init_particle_params()

void ParticleData::init_particle_params ( )
inline
22  {
23  amrex::ParmParse pp(pp_prefix);
24 
26  pp.query("use_tracer_particles", use_tracer_particles);
27  }
std::string pp_prefix
Definition: ParticleData.H:81

◆ init_particles()

void ParticleData::init_particles ( amrex::ParGDBBase *  a_gdb,
const amrex::Vector< std::unique_ptr< amrex::MultiFab >> &  z_phys_nd 
)
inline
31  {
32  // Initialize tracer particles
34  tracer_particles = std::make_unique<TracerPC>(a_gdb);
35  tracer_particles->InitParticles(*z_phys_nd[0]);
36  amrex::Print() << "Initialized " << tracer_particles->TotalNumberOfParticles() << " tracer particles." << std::endl;
37  }
38  }

◆ Redistribute()

void ParticleData::Redistribute ( )
inline
75  {
77  tracer_particles->Redistribute();
78  }
79  }

◆ Restart()

void ParticleData::Restart ( amrex::ParGDBBase *  a_gdb,
std::string &  restart_file 
)
inline
48  {
50  // tracer_particles = std::make_unique<TracerPC>(Geom(0), dmap[0], grids[0]);
51  tracer_particles = std::make_unique<TracerPC>(a_gdb);
52  std::string tracer_file("tracer_particles");
53  tracer_particles->Restart(restart_file, tracer_file);
54  }
55  }

Member Data Documentation

◆ pp_prefix

std::string ParticleData::pp_prefix {"remora"}

Referenced by init_particle_params().

◆ tracer_particle_varnames

amrex::Vector<std::string> ParticleData::tracer_particle_varnames = {AMREX_D_DECL("old_x", "old_y", "old_z")}

Referenced by Checkpoint().

◆ tracer_particles

std::unique_ptr<TracerPC> ParticleData::tracer_particles

◆ use_tracer_particles

int ParticleData::use_tracer_particles

The documentation for this struct was generated from the following file: