WarpX
Loading...
Searching...
No Matches
WarpXFluidContainer Class Reference

#include <WarpXFluidContainer.H>

Public Member Functions

 WarpXFluidContainer (int ispecies, const std::string &name)
 
 ~WarpXFluidContainer ()=default
 
 WarpXFluidContainer (WarpXFluidContainer const &)=delete
 
WarpXFluidContaineroperator= (WarpXFluidContainer const &)=delete
 
 WarpXFluidContainer (WarpXFluidContainer &&)=default
 
WarpXFluidContaineroperator= (WarpXFluidContainer &&)=default
 
void AllocateLevelMFs (ablastr::fields::MultiFabRegister &m_fields, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, int lev) const
 
void InitData (ablastr::fields::MultiFabRegister &m_fields, amrex::Box init_box, amrex::Real cur_time, int lev, const amrex::Geometry &geom_lev, amrex::Real gamma_boost, amrex::Real beta_boost)
 
void ReadParameters ()
 
void Evolve (ablastr::fields::MultiFabRegister &fields, int lev, const std::string &current_fp_string, amrex::Real cur_time, bool skip_deposition=false)
 
void AdvectivePush_Muscl (ablastr::fields::MultiFabRegister &m_fields, int lev)
 Advective term, cold-rel. fluids.
 
void ApplyBcFluidsAndComms (ablastr::fields::MultiFabRegister &m_fields, int lev)
 Apply non-periodic BC to fluids and communicate boundaries.
 
void centrifugal_source_rz (ablastr::fields::MultiFabRegister &m_fields, int lev)
 Centrifugal source term.
 
void GatherAndPush (ablastr::fields::MultiFabRegister &m_fields, 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, int lev)
 Lorentz Momentum Source.
 
void DepositCurrent (ablastr::fields::MultiFabRegister &m_fields, amrex::MultiFab &jx, amrex::MultiFab &jy, amrex::MultiFab &jz, int lev)
 Deposit fluid current density.
 
void DepositCharge (ablastr::fields::MultiFabRegister &m_fields, amrex::MultiFab &rho, int lev, int icomp=0)
 Deposit fluid charge density.
 
amrex::Real getCharge () const
 
amrex::Real getMass () const
 

Public Attributes

friend MultiFluidContainer
 
std::string name_mf_N = "fluid_density_"+species_name
 
std::string name_mf_NU = "fluid_momentum_density_"+species_name
 

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 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 ( ablastr::fields::MultiFabRegister & m_fields,
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
m_fieldsreference to MultiFab register storing all fields
[in]levrefinement level

◆ AllocateLevelMFs()

void WarpXFluidContainer::AllocateLevelMFs ( ablastr::fields::MultiFabRegister & m_fields,
const amrex::BoxArray & ba,
const amrex::DistributionMapping & dm,
int lev ) const

◆ ApplyBcFluidsAndComms()

void WarpXFluidContainer::ApplyBcFluidsAndComms ( ablastr::fields::MultiFabRegister & m_fields,
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
m_fieldsreference to MultiFab register storing all fields
[in]levrefinement level

◆ centrifugal_source_rz()

void WarpXFluidContainer::centrifugal_source_rz ( ablastr::fields::MultiFabRegister & m_fields,
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
m_fieldsreference to MultiFab register storing all fields
[in]levrefinement level

◆ DepositCharge()

void WarpXFluidContainer::DepositCharge ( ablastr::fields::MultiFabRegister & m_fields,
amrex::MultiFab & rho,
int lev,
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
m_fieldsreference to MultiFab register storing all fields
[in,out]rhocharge density MultiFab.
[in]levrefinement level
[in]icompFourth component index of the rho MultiFab to deposit in

◆ DepositCurrent()

void WarpXFluidContainer::DepositCurrent ( ablastr::fields::MultiFabRegister & m_fields,
amrex::MultiFab & jx,
amrex::MultiFab & jy,
amrex::MultiFab & jz,
int lev )

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,out]m_fieldsMultiFab register of fields
[in,out]jxcurrent density MultiFab x comp.
[in,out]jycurrent density MultiFab y comp.
[in,out]jzcurrent density MultiFab z comp.
[in]levrefinement level

◆ Evolve()

void WarpXFluidContainer::Evolve ( ablastr::fields::MultiFabRegister & fields,
int lev,
const std::string & current_fp_string,
amrex::Real cur_time,
bool skip_deposition = false )

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

◆ GatherAndPush()

void WarpXFluidContainer::GatherAndPush ( ablastr::fields::MultiFabRegister & m_fields,
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,
int lev )

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,out]m_fieldsMultiFab register of fields
[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
[in]levrefinement level

◆ getCharge()

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

◆ getMass()

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

◆ InitData()

void WarpXFluidContainer::InitData ( ablastr::fields::MultiFabRegister & m_fields,
amrex::Box init_box,
amrex::Real cur_time,
int lev,
const amrex::Geometry & geom_lev,
amrex::Real gamma_boost,
amrex::Real beta_boost )

◆ 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

◆ name_mf_N

std::string WarpXFluidContainer::name_mf_N = "fluid_density_"+species_name

◆ name_mf_NU

std::string WarpXFluidContainer::name_mf_NU = "fluid_momentum_density_"+species_name

◆ 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: