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

This class contains the parameters needed to evaluate a time varying external vector potential, leading to external E/B fields to be applied in Hybrid Solver. This class is used to break up the passed in fields into a spatial and time dependent solution. More...

#include <ExternalVectorPotential.H>

Public Member Functions

 ExternalVectorPotential ()
 
void ReadParameters ()
 
void AllocateLevelMFs (ablastr::fields::MultiFabRegister &fields, int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, int ncomps, const amrex::IntVect &ngEB, const amrex::IntVect &Ex_nodal_flag, const amrex::IntVect &Ey_nodal_flag, const amrex::IntVect &Ez_nodal_flag, const amrex::IntVect &Bx_nodal_flag, const amrex::IntVect &By_nodal_flag, const amrex::IntVect &Bz_nodal_flag)
 
void InitData ()
 
void CalculateExternalCurlA ()
 
void CalculateExternalCurlA (std::string &coil_name)
 
AMREX_FORCE_INLINE void AddExternalFieldFromVectorPotential (ablastr::fields::VectorField const &dstField, amrex::Real scale_factor, ablastr::fields::VectorField const &srcField, std::array< std::unique_ptr< amrex::iMultiFab >, 3 > const &eb_update)
 
void UpdateHybridExternalFields (amrex::Real t, amrex::Real dt)
 

Protected Attributes

int m_nFields
 
std::vector< std::string > m_field_names
 
std::vector< std::string > m_Ax_ext_grid_function
 
std::vector< std::string > m_Ay_ext_grid_function
 
std::vector< std::string > m_Az_ext_grid_function
 
std::vector< std::array< std::unique_ptr< amrex::Parser >, 3 > > m_A_external_parser
 
std::vector< std::array< amrex::ParserExecutor< 4 >, 3 > > m_A_external
 
std::vector< std::string > m_A_ext_time_function
 
std::vector< std::unique_ptr< amrex::Parser > > m_A_external_time_parser
 
std::vector< amrex::ParserExecutor< 1 > > m_A_time_scale
 
std::vector< bool > m_read_A_from_file
 
std::vector< std::string > m_external_file_path
 
bool m_do_clean_divA = true
 

Detailed Description

This class contains the parameters needed to evaluate a time varying external vector potential, leading to external E/B fields to be applied in Hybrid Solver. This class is used to break up the passed in fields into a spatial and time dependent solution.

Eventually this can be used in a list to control independent external fields with different time profiles.

Constructor & Destructor Documentation

◆ ExternalVectorPotential()

ExternalVectorPotential::ExternalVectorPotential ( )

Member Function Documentation

◆ AddExternalFieldFromVectorPotential()

AMREX_FORCE_INLINE void ExternalVectorPotential::AddExternalFieldFromVectorPotential ( ablastr::fields::VectorField const & dstField,
amrex::Real scale_factor,
ablastr::fields::VectorField const & srcField,
std::array< std::unique_ptr< amrex::iMultiFab >, 3 > const & eb_update )

◆ AllocateLevelMFs()

void ExternalVectorPotential::AllocateLevelMFs ( ablastr::fields::MultiFabRegister & fields,
int lev,
const amrex::BoxArray & ba,
const amrex::DistributionMapping & dm,
int ncomps,
const amrex::IntVect & ngEB,
const amrex::IntVect & Ex_nodal_flag,
const amrex::IntVect & Ey_nodal_flag,
const amrex::IntVect & Ez_nodal_flag,
const amrex::IntVect & Bx_nodal_flag,
const amrex::IntVect & By_nodal_flag,
const amrex::IntVect & Bz_nodal_flag )

◆ CalculateExternalCurlA() [1/2]

void ExternalVectorPotential::CalculateExternalCurlA ( )

◆ CalculateExternalCurlA() [2/2]

void ExternalVectorPotential::CalculateExternalCurlA ( std::string & coil_name)

◆ InitData()

void ExternalVectorPotential::InitData ( )

◆ ReadParameters()

void ExternalVectorPotential::ReadParameters ( )

◆ UpdateHybridExternalFields()

void ExternalVectorPotential::UpdateHybridExternalFields ( amrex::Real t,
amrex::Real dt )

Member Data Documentation

◆ m_A_ext_time_function

std::vector<std::string> ExternalVectorPotential::m_A_ext_time_function
protected

◆ m_A_external

std::vector<std::array< amrex::ParserExecutor<4>, 3> > ExternalVectorPotential::m_A_external
protected

◆ m_A_external_parser

std::vector<std::array< std::unique_ptr<amrex::Parser>, 3> > ExternalVectorPotential::m_A_external_parser
protected

◆ m_A_external_time_parser

std::vector<std::unique_ptr<amrex::Parser> > ExternalVectorPotential::m_A_external_time_parser
protected

◆ m_A_time_scale

std::vector<amrex::ParserExecutor<1> > ExternalVectorPotential::m_A_time_scale
protected

◆ m_Ax_ext_grid_function

std::vector<std::string> ExternalVectorPotential::m_Ax_ext_grid_function
protected

◆ m_Ay_ext_grid_function

std::vector<std::string> ExternalVectorPotential::m_Ay_ext_grid_function
protected

◆ m_Az_ext_grid_function

std::vector<std::string> ExternalVectorPotential::m_Az_ext_grid_function
protected

◆ m_do_clean_divA

bool ExternalVectorPotential::m_do_clean_divA = true
protected

◆ m_external_file_path

std::vector<std::string> ExternalVectorPotential::m_external_file_path
protected

◆ m_field_names

std::vector<std::string> ExternalVectorPotential::m_field_names
protected

◆ m_nFields

int ExternalVectorPotential::m_nFields
protected

◆ m_read_A_from_file

std::vector<bool> ExternalVectorPotential::m_read_A_from_file
protected

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