WarpX
Public Member Functions | Public Attributes | Protected Attributes | List of all members
WarpXFluidContainer Class Reference

#include <WarpXFluidContainer.H>

Public Member Functions

 WarpXFluidContainer (int nlevs_max, int ispecies, const std::string &name)
 
 ~WarpXFluidContainer ()=default
 
 WarpXFluidContainer (WarpXFluidContainer const &)=delete
 
WarpXFluidContaineroperator= (WarpXFluidContainer const &)=delete
 
 WarpXFluidContainer (WarpXFluidContainer &&)=default
 
WarpXFluidContaineroperator= (WarpXFluidContainer &&)=default
 
void AllocateLevelMFs (int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
 
void InitData (int lev, amrex::Box init_box, amrex::Real cur_time)
 
void ReadParameters ()
 
void Evolve (int lev, const amrex::MultiFab &Ex, const amrex::MultiFab &Ey, const amrex::MultiFab &Ez, const amrex::MultiFab &Bx, const amrex::MultiFab &By, const amrex::MultiFab &Bz, amrex::MultiFab *rho, amrex::MultiFab &jx, amrex::MultiFab &jy, amrex::MultiFab &jz, amrex::Real cur_time, bool skip_deposition=false)
 
void AdvectivePush_Muscl (int lev)
 Advective term, cold-rel. fluids. More...
 
void ApplyBcFluidsAndComms (int lev)
 Apply non-periodic BC to fluids and communicate boundaries. More...
 
void centrifugal_source_rz (int lev)
 Centrifugal source term. More...
 
void GatherAndPush (int lev, const amrex::MultiFab &Ex, const amrex::MultiFab &Ey, const amrex::MultiFab &Ez, const amrex::MultiFab &Bx, const amrex::MultiFab &By, const amrex::MultiFab &Bz, amrex::Real t)
 Lorentz Momentum Source. More...
 
void DepositCurrent (int lev, amrex::MultiFab &jx, amrex::MultiFab &jy, amrex::MultiFab &jz)
 Deposit fluid current density. More...
 
void DepositCharge (int lev, amrex::MultiFab &rho, int icomp=0)
 Deposit fluid charge density. More...
 
amrex::Real getCharge () const
 
amrex::Real getMass () const
 

Public Attributes

friend MultiFluidContainer
 
amrex::Vector< std::unique_ptr< amrex::MultiFab > > N
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > NU
 

Protected Attributes

int species_id
 
std::string species_name
 
amrex::Real charge
 
amrex::Real mass
 
int do_not_push = 0
 
int do_not_gather = 0
 
int do_not_deposit = 0
 
PhysicalSpecies physical_species
 
std::string m_B_ext_s = "none"
 
std::string m_E_ext_s = "none"
 
std::unique_ptr< amrex::Parserm_Bx_parser
 
std::unique_ptr< amrex::Parserm_By_parser
 
std::unique_ptr< amrex::Parserm_Bz_parser
 
amrex::ParserExecutor< 4 > m_Bxfield_parser
 
amrex::ParserExecutor< 4 > m_Byfield_parser
 
amrex::ParserExecutor< 4 > m_Bzfield_parser
 
std::unique_ptr< amrex::Parserm_Ex_parser
 
std::unique_ptr< amrex::Parserm_Ey_parser
 
std::unique_ptr< amrex::Parserm_Ez_parser
 
amrex::ParserExecutor< 4 > m_Exfield_parser
 
amrex::ParserExecutor< 4 > m_Eyfield_parser
 
amrex::ParserExecutor< 4 > m_Ezfield_parser
 
std::unique_ptr< InjectorDensity, InjectorDensityDeleterh_inj_rho
 
InjectorDensityd_inj_rho = nullptr
 
std::unique_ptr< amrex::Parserdensity_parser
 
std::unique_ptr< InjectorMomentum, InjectorMomentumDeleterh_inj_mom
 
InjectorMomentumd_inj_mom = nullptr
 
std::unique_ptr< amrex::Parserux_parser
 
std::unique_ptr< amrex::Parseruy_parser
 
std::unique_ptr< amrex::Parseruz_parser
 
std::unique_ptr< amrex::Parserux_th_parser
 
std::unique_ptr< amrex::Parseruy_th_parser
 
std::unique_ptr< amrex::Parseruz_th_parser
 
std::unique_ptr< TemperaturePropertiesh_mom_temp
 
std::unique_ptr< VelocityPropertiesh_mom_vel
 

Detailed Description

WarpXFluidContainer is the base class from which all concrete fluid container classes derive.

WarpXFluidContainer contains the main functions for initialization, interaction with the grid (field gather and current deposition), fluid source and push, advective update and updates for non-inertial terms.

Constructor & Destructor Documentation

◆ WarpXFluidContainer() [1/3]

WarpXFluidContainer::WarpXFluidContainer ( int  nlevs_max,
int  ispecies,
const std::string &  name 
)

◆ ~WarpXFluidContainer()

WarpXFluidContainer::~WarpXFluidContainer ( )
default

◆ WarpXFluidContainer() [2/3]

WarpXFluidContainer::WarpXFluidContainer ( WarpXFluidContainer const &  )
delete

◆ WarpXFluidContainer() [3/3]

WarpXFluidContainer::WarpXFluidContainer ( WarpXFluidContainer &&  )
default

Member Function Documentation

◆ AdvectivePush_Muscl()

void WarpXFluidContainer::AdvectivePush_Muscl ( int  lev)

Advective term, cold-rel. fluids.

AdvectivePush_Muscl takes a single timestep (dt) of the cold relativistic fluid equations using a Muscl-Handcock scheme

Parameters
[in]levrefinement level

◆ AllocateLevelMFs()

void WarpXFluidContainer::AllocateLevelMFs ( int  lev,
const amrex::BoxArray ba,
const amrex::DistributionMapping dm 
)

◆ ApplyBcFluidsAndComms()

void WarpXFluidContainer::ApplyBcFluidsAndComms ( int  lev)

Apply non-periodic BC to fluids and communicate boundaries.

Apply (non-periodic) BC on the fluids (needed for spatial derivative), and communicate N, NU at boundaries

Parameters
[in]levrefinement level

◆ centrifugal_source_rz()

void WarpXFluidContainer::centrifugal_source_rz ( int  lev)

Centrifugal source term.

centrifugal_source_rz adds contributions due to curvature acceleration for a single timestep using an SSP-RK3 timestep for RZ specifically

Parameters
[in]levrefinement level

◆ DepositCharge()

void WarpXFluidContainer::DepositCharge ( int  lev,
amrex::MultiFab rho,
int  icomp = 0 
)

Deposit fluid charge density.

DepositCharge interpolates the fluid charge density onto the Yee grid and sums the contributions to the particle charge density

Parameters
[in]levrefinement level
[in,out]rhocharge density MultiFab.

◆ DepositCurrent()

void WarpXFluidContainer::DepositCurrent ( int  lev,
amrex::MultiFab jx,
amrex::MultiFab jy,
amrex::MultiFab jz 
)

Deposit fluid current density.

DepositCurrent interpolates the fluid current density comps. onto the Yee grid and sums the contributions to the particle current density

Parameters
[in]levrefinement level
[in,out]jxcurrent density MultiFab x comp.
[in,out]jycurrent density MultiFab y comp.
[in,out]jzcurrent density MultiFab z comp.

◆ Evolve()

void WarpXFluidContainer::Evolve ( int  lev,
const amrex::MultiFab Ex,
const amrex::MultiFab Ey,
const amrex::MultiFab Ez,
const amrex::MultiFab Bx,
const amrex::MultiFab By,
const amrex::MultiFab Bz,
amrex::MultiFab rho,
amrex::MultiFab jx,
amrex::MultiFab jy,
amrex::MultiFab jz,
amrex::Real  cur_time,
bool  skip_deposition = false 
)

Evolve updates a single timestep (dt) of the cold relativistic fluid equations

◆ GatherAndPush()

void WarpXFluidContainer::GatherAndPush ( int  lev,
const amrex::MultiFab Ex,
const amrex::MultiFab Ey,
const amrex::MultiFab Ez,
const amrex::MultiFab Bx,
const amrex::MultiFab By,
const amrex::MultiFab Bz,
amrex::Real  t 
)

Lorentz Momentum Source.

GatherAndPush introduces the Lorentz term in the cold relativistic fluid equations for a single timestep (dt) using Higuera and Cary Push

Parameters
[in]levrefinement level
[in]ExYee electric field (x)
[in]EyYee electric field (y)
[in]EzYee electric field (z)
[in]BxYee magnetic field (x)
[in]ByYee magnetic field (y)
[in]BzYee magnetic field (z)
[in]tCurrent time

◆ getCharge()

amrex::Real WarpXFluidContainer::getCharge ( ) const
inline

◆ getMass()

amrex::Real WarpXFluidContainer::getMass ( ) const
inline

◆ InitData()

void WarpXFluidContainer::InitData ( int  lev,
amrex::Box  init_box,
amrex::Real  cur_time 
)

◆ operator=() [1/2]

WarpXFluidContainer& WarpXFluidContainer::operator= ( WarpXFluidContainer &&  )
default

◆ operator=() [2/2]

WarpXFluidContainer& WarpXFluidContainer::operator= ( WarpXFluidContainer const &  )
delete

◆ ReadParameters()

void WarpXFluidContainer::ReadParameters ( )

Member Data Documentation

◆ charge

amrex::Real WarpXFluidContainer::charge
protected

◆ d_inj_mom

InjectorMomentum* WarpXFluidContainer::d_inj_mom = nullptr
protected

◆ d_inj_rho

InjectorDensity* WarpXFluidContainer::d_inj_rho = nullptr
protected

◆ density_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::density_parser
protected

◆ do_not_deposit

int WarpXFluidContainer::do_not_deposit = 0
protected

◆ do_not_gather

int WarpXFluidContainer::do_not_gather = 0
protected

◆ do_not_push

int WarpXFluidContainer::do_not_push = 0
protected

◆ h_inj_mom

std::unique_ptr<InjectorMomentum,InjectorMomentumDeleter> WarpXFluidContainer::h_inj_mom
protected

◆ h_inj_rho

std::unique_ptr<InjectorDensity,InjectorDensityDeleter> WarpXFluidContainer::h_inj_rho
protected

◆ h_mom_temp

std::unique_ptr<TemperatureProperties> WarpXFluidContainer::h_mom_temp
protected

◆ h_mom_vel

std::unique_ptr<VelocityProperties> WarpXFluidContainer::h_mom_vel
protected

◆ m_B_ext_s

std::string WarpXFluidContainer::m_B_ext_s = "none"
protected

◆ m_Bx_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::m_Bx_parser
protected

◆ m_Bxfield_parser

amrex::ParserExecutor<4> WarpXFluidContainer::m_Bxfield_parser
protected

◆ m_By_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::m_By_parser
protected

◆ m_Byfield_parser

amrex::ParserExecutor<4> WarpXFluidContainer::m_Byfield_parser
protected

◆ m_Bz_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::m_Bz_parser
protected

◆ m_Bzfield_parser

amrex::ParserExecutor<4> WarpXFluidContainer::m_Bzfield_parser
protected

◆ m_E_ext_s

std::string WarpXFluidContainer::m_E_ext_s = "none"
protected

◆ m_Ex_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::m_Ex_parser
protected

◆ m_Exfield_parser

amrex::ParserExecutor<4> WarpXFluidContainer::m_Exfield_parser
protected

◆ m_Ey_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::m_Ey_parser
protected

◆ m_Eyfield_parser

amrex::ParserExecutor<4> WarpXFluidContainer::m_Eyfield_parser
protected

◆ m_Ez_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::m_Ez_parser
protected

◆ m_Ezfield_parser

amrex::ParserExecutor<4> WarpXFluidContainer::m_Ezfield_parser
protected

◆ mass

amrex::Real WarpXFluidContainer::mass
protected

◆ MultiFluidContainer

friend WarpXFluidContainer::MultiFluidContainer

◆ N

amrex::Vector< std::unique_ptr<amrex::MultiFab> > WarpXFluidContainer::N

◆ NU

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpXFluidContainer::NU

◆ physical_species

PhysicalSpecies WarpXFluidContainer::physical_species
protected

◆ species_id

int WarpXFluidContainer::species_id
protected

◆ species_name

std::string WarpXFluidContainer::species_name
protected

◆ ux_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::ux_parser
protected

◆ ux_th_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::ux_th_parser
protected

◆ uy_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::uy_parser
protected

◆ uy_th_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::uy_th_parser
protected

◆ uz_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::uz_parser
protected

◆ uz_th_parser

std::unique_ptr<amrex::Parser> WarpXFluidContainer::uz_th_parser
protected

The documentation for this class was generated from the following files: