ARTEMIS
Macros | Functions
WarpXWrappers.cpp File Reference
#include "BoundaryConditions/PML.H"
#include "Initialization/WarpXAMReXInit.H"
#include "Particles/MultiParticleContainer.H"
#include "Particles/ParticleBoundaryBuffer.H"
#include "Particles/WarpXParticleContainer.H"
#include "Utils/WarpXProfilerWrapper.H"
#include "Utils/WarpXUtil.H"
#include "WarpX.H"
#include "WarpXWrappers.H"
#include "WarpX_py.H"
#include <ablastr/warn_manager/WarnManager.H>
#include <AMReX.H>
#include <AMReX_ArrayOfStructs.H>
#include <AMReX_Box.H>
#include <AMReX_FArrayBox.H>
#include <AMReX_FabArray.H>
#include <AMReX_Geometry.H>
#include <AMReX_GpuControl.H>
#include <AMReX_IndexType.H>
#include <AMReX_IntVect.H>
#include <AMReX_MFIter.H>
#include <AMReX_MultiFab.H>
#include <AMReX_PODVector.H>
#include <AMReX_ParIter.H>
#include <AMReX_Particles.H>
#include <AMReX_StructOfArrays.H>
#include <array>
#include <cstdlib>

Macros

#define WARPX_GET_FIELD(FIELD, GETTER)
 
#define WARPX_GET_LOVECTS(FIELD, GETTER)
 
#define WARPX_GET_SCALAR(SCALAR, GETTER)
 
#define WARPX_GET_LOVECTS_SCALAR(SCALAR, GETTER)
 
#define WARPX_GET_FIELD_PML(FIELD, GETTER)
 
#define WARPX_GET_LOVECTS_PML(FIELD, GETTER)
 
#define WARPX_GET_SCALAR_PML(SCALAR, GETTER)
 
#define WARPX_GET_LOVECTS_PML_SCALAR(SCALAR, GETTER)
 

Functions

int warpx_Real_size ()
 
int warpx_ParticleReal_size ()
 
int warpx_nSpecies ()
 
bool warpx_use_fdtd_nci_corr ()
 
int warpx_galerkin_interpolation ()
 
int warpx_nComps ()
 
int warpx_nCompsSpecies (const char *char_species_name)
 
int warpx_SpaceDim ()
 
void amrex_init (int argc, char *argv[])
 
void amrex_finalize (int)
 
void warpx_init ()
 
void warpx_finalize ()
 
void warpx_set_callback_py (const char *char_callback_name, WARPX_CALLBACK_PY_FUNC_0 callback)
 
void warpx_clear_callback_py (const char *char_callback_name)
 
void warpx_evolve (int numsteps)
 
void warpx_addNParticles (const char *char_species_name, int lenx, amrex::ParticleReal const *x, amrex::ParticleReal const *y, amrex::ParticleReal const *z, amrex::ParticleReal const *vx, amrex::ParticleReal const *vy, amrex::ParticleReal const *vz, const int nattr_real, amrex::ParticleReal const *attr_real, const int nattr_int, int const *attr_int, int uniqueparticles)
 
void warpx_ConvertLabParamsToBoost ()
 
void warpx_ReadBCParams ()
 
void warpx_CheckGriddingForRZSpectral ()
 
amrex::Real warpx_getProbLo (int dir)
 
amrex::Real warpx_getProbHi (int dir)
 
amrex::Real warpx_getCellSize (int dir, int lev)
 
long warpx_getNumParticles (const char *char_species_name, const bool local)
 
int * warpx_getEx_nodal_flag ()
 
int * warpx_getEy_nodal_flag ()
 
int * warpx_getEz_nodal_flag ()
 
int * warpx_getBx_nodal_flag ()
 
int * warpx_getBy_nodal_flag ()
 
int * warpx_getBz_nodal_flag ()
 
int * warpx_getJx_nodal_flag ()
 
int * warpx_getJy_nodal_flag ()
 
int * warpx_getJz_nodal_flag ()
 
int * warpx_getAx_nodal_flag ()
 
int * warpx_getAy_nodal_flag ()
 
int * warpx_getAz_nodal_flag ()
 
int * warpx_getRho_nodal_flag ()
 
int * warpx_getPhi_nodal_flag ()
 
int * warpx_getF_nodal_flag ()
 
int * warpx_getG_nodal_flag ()
 
int * warpx_get_edge_lengths_x_nodal_flag ()
 
int * warpx_get_edge_lengths_y_nodal_flag ()
 
int * warpx_get_edge_lengths_z_nodal_flag ()
 
int * warpx_get_face_areas_x_nodal_flag ()
 
int * warpx_get_face_areas_y_nodal_flag ()
 
int * warpx_get_face_areas_z_nodal_flag ()
 
int * warpx_getF_pml_nodal_flag ()
 
int * warpx_getG_pml_nodal_flag ()
 
amrex::ParticleReal ** warpx_getParticleStructs (const char *char_species_name, int lev, int *num_tiles, int **particles_per_tile)
 
amrex::ParticleReal ** warpx_getParticleArrays (const char *char_species_name, const char *char_comp_name, int lev, int *num_tiles, int **particles_per_tile)
 
void warpx_convert_id_to_long (amrex::Long *ids, const WarpXParticleContainer::ParticleType *pstructs, int size)
 
void warpx_convert_cpu_to_int (int *cpus, const WarpXParticleContainer::ParticleType *pstructs, int size)
 
int warpx_getParticleCompIndex (const char *char_species_name, const char *char_comp_name)
 
void warpx_addRealComp (const char *char_species_name, const char *char_comp_name, bool comm=true)
 
amrex::Real warpx_sumParticleCharge (const char *char_species_name, const bool local)
 
int warpx_getParticleBoundaryBufferSize (const char *species_name, int boundary, bool local)
 
int ** warpx_getParticleBoundaryBufferScrapedSteps (const char *species_name, int boundary, int lev, int *num_tiles, int **particles_per_tile)
 
amrex::ParticleReal ** warpx_getParticleBoundaryBuffer (const char *species_name, int boundary, int lev, int *num_tiles, int **particles_per_tile, const char *comp_name)
 
amrex::ParticleReal ** warpx_getParticleBoundaryBufferStructs (const char *species_name, int boundary, int lev, int *num_tiles, int **particles_per_tile)
 
void warpx_clearParticleBoundaryBuffer ()
 
void warpx_depositChargeDensity (const char *char_species_name, int lev)
 This function is used to deposit a given species' charge density in the rho_fp multifab which can then be accessed from python via pywarpx.fields.RhoFPWrapper() More...
 
void warpx_ComputeDt ()
 
void warpx_MoveWindow (int step, bool move_j)
 
void warpx_EvolveE (amrex::Real dt)
 
void warpx_EvolveB (amrex::Real dt, DtType a_dt_type)
 
void warpx_FillBoundaryE ()
 
void warpx_FillBoundaryB ()
 
void warpx_SyncRho ()
 
void warpx_SyncCurrent (const amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 >> &J_fp, const amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 >> &J_cp)
 
void warpx_UpdateAuxilaryData ()
 
void warpx_PushParticlesandDepose (amrex::Real cur_time)
 
int warpx_getistep (int lev)
 
void warpx_setistep (int lev, int ii)
 
amrex::Real warpx_gett_new (int lev)
 
void warpx_sett_new (int lev, amrex::Real time)
 
amrex::Real warpx_getdt (int lev)
 
int warpx_maxStep ()
 
amrex::Real warpx_stopTime ()
 
int warpx_finestLevel ()
 
int warpx_getMyProc ()
 
int warpx_getNProcs ()
 
void warpx_setPotentialEB (const char *char_potential)
 
void mypc_Redistribute ()
 

Macro Definition Documentation

◆ WARPX_GET_FIELD

#define WARPX_GET_FIELD (   FIELD,
  GETTER 
)
Value:
amrex::Real** FIELD(int lev, int direction, \
int *return_size, int *ncomps, int **ngrowvect, int **shapes) { \
auto * mf = GETTER(lev, direction); \
if (mf != nullptr) { \
return getMultiFabPointers(*mf, return_size, ncomps, ngrowvect, shapes); \
} else { \
return nullptr; \
} \
}
direction
Definition: AnyFFT.H:81

◆ WARPX_GET_FIELD_PML

#define WARPX_GET_FIELD_PML (   FIELD,
  GETTER 
)
Value:
amrex::Real** FIELD(int lev, int direction, \
int *return_size, int *ncomps, int **ngrowvect, int **shapes) { \
auto * pml = WarpX::GetInstance().GetPML(lev); \
if (!pml) return nullptr; \
auto * mf = (pml->GETTER()[direction]); \
if (!mf) return nullptr; \
return getMultiFabPointers(*mf, return_size, ncomps, ngrowvect, shapes); \
}
static WarpX & GetInstance()
Definition: WarpX.cpp:309
PML * GetPML(int lev)
Definition: WarpX.cpp:3104

◆ WARPX_GET_LOVECTS

#define WARPX_GET_LOVECTS (   FIELD,
  GETTER 
)
Value:
int* FIELD(int lev, int direction, \
int *return_size, int **ngrowvect) { \
auto * mf = GETTER(lev, direction); \
if (mf != nullptr) { \
return getMultiFabLoVects(*mf, return_size, ngrowvect); \
} else { \
return nullptr; \
} \
}

◆ WARPX_GET_LOVECTS_PML

#define WARPX_GET_LOVECTS_PML (   FIELD,
  GETTER 
)
Value:
int* FIELD(int lev, int direction, \
int *return_size, int **ngrowvect) { \
auto * pml = WarpX::GetInstance().GetPML(lev); \
if (!pml) return nullptr; \
auto * mf = (pml->GETTER()[direction]); \
if (!mf) return nullptr; \
return getMultiFabLoVects(*mf, return_size, ngrowvect); \
}

◆ WARPX_GET_LOVECTS_PML_SCALAR

#define WARPX_GET_LOVECTS_PML_SCALAR (   SCALAR,
  GETTER 
)
Value:
int* SCALAR(int lev, \
int *return_size, int **ngrowvect) { \
auto * pml = WarpX::GetInstance().GetPML(lev); \
if (!pml) return nullptr; \
auto * mf = pml->GETTER(); \
if (!mf) return nullptr; \
return getMultiFabLoVects(*mf, return_size, ngrowvect); \
}

◆ WARPX_GET_LOVECTS_SCALAR

#define WARPX_GET_LOVECTS_SCALAR (   SCALAR,
  GETTER 
)
Value:
int* SCALAR(int lev, \
int *return_size, int **ngrowvect) { \
auto * mf = GETTER(lev); \
if (mf != nullptr) { \
return getMultiFabLoVects(*mf, return_size, ngrowvect); \
} else { \
return nullptr; \
} \
}

◆ WARPX_GET_SCALAR

#define WARPX_GET_SCALAR (   SCALAR,
  GETTER 
)
Value:
amrex::Real** SCALAR(int lev, \
int *return_size, int *ncomps, int **ngrowvect, int **shapes) { \
auto * mf = GETTER(lev); \
if (mf != nullptr) { \
return getMultiFabPointers(*mf, return_size, ncomps, ngrowvect, shapes); \
} else { \
return nullptr; \
} \
}

◆ WARPX_GET_SCALAR_PML

#define WARPX_GET_SCALAR_PML (   SCALAR,
  GETTER 
)
Value:
amrex::Real** SCALAR(int lev, \
int *return_size, int *ncomps, int **ngrowvect, int **shapes) { \
auto * pml = WarpX::GetInstance().GetPML(lev); \
if (!pml) return nullptr; \
auto * mf = pml->GETTER(); \
if (!mf) return nullptr; \
return getMultiFabPointers(*mf, return_size, ncomps, ngrowvect, shapes); \
}

Function Documentation

◆ amrex_finalize()

void amrex_finalize ( int  finalize_mpi)

◆ amrex_init()

void amrex_init ( int  argc,
char *  argv[] 
)

◆ mypc_Redistribute()

void mypc_Redistribute ( )

◆ warpx_addNParticles()

void warpx_addNParticles ( const char *  char_species_name,
int  lenx,
amrex::ParticleReal const *  x,
amrex::ParticleReal const *  y,
amrex::ParticleReal const *  z,
amrex::ParticleReal const *  vx,
amrex::ParticleReal const *  vy,
amrex::ParticleReal const *  vz,
const int  nattr_real,
amrex::ParticleReal const *  attr_real,
const int  nattr_int,
int const *  attr_int,
int  uniqueparticles 
)

◆ warpx_addRealComp()

void warpx_addRealComp ( const char *  char_species_name,
const char *  char_comp_name,
bool  comm = true 
)

◆ warpx_CheckGriddingForRZSpectral()

void warpx_CheckGriddingForRZSpectral ( )

◆ warpx_clear_callback_py()

void warpx_clear_callback_py ( const char *  char_callback_name)

◆ warpx_clearParticleBoundaryBuffer()

void warpx_clearParticleBoundaryBuffer ( )

◆ warpx_ComputeDt()

void warpx_ComputeDt ( )

◆ warpx_convert_cpu_to_int()

void warpx_convert_cpu_to_int ( int *  cpus,
const WarpXParticleContainer::ParticleType pstructs,
int  size 
)

◆ warpx_convert_id_to_long()

void warpx_convert_id_to_long ( amrex::Long *  ids,
const WarpXParticleContainer::ParticleType pstructs,
int  size 
)

◆ warpx_ConvertLabParamsToBoost()

void warpx_ConvertLabParamsToBoost ( )

◆ warpx_depositChargeDensity()

void warpx_depositChargeDensity ( const char *  species_name,
int  lev 
)

This function is used to deposit a given species' charge density in the rho_fp multifab which can then be accessed from python via pywarpx.fields.RhoFPWrapper()

Parameters
[in]species_namespecifying the name of the species to deposit
[in]levmesh refinement level

◆ warpx_evolve()

void warpx_evolve ( int  numsteps)

◆ warpx_EvolveB()

void warpx_EvolveB ( amrex::Real  dt,
DtType  a_dt_type 
)

◆ warpx_EvolveE()

void warpx_EvolveE ( amrex::Real  dt)

◆ warpx_FillBoundaryB()

void warpx_FillBoundaryB ( )

◆ warpx_FillBoundaryE()

void warpx_FillBoundaryE ( )

◆ warpx_finalize()

void warpx_finalize ( )

◆ warpx_finestLevel()

int warpx_finestLevel ( )

◆ warpx_galerkin_interpolation()

int warpx_galerkin_interpolation ( )

◆ warpx_get_edge_lengths_x_nodal_flag()

int* warpx_get_edge_lengths_x_nodal_flag ( )

◆ warpx_get_edge_lengths_y_nodal_flag()

int* warpx_get_edge_lengths_y_nodal_flag ( )

◆ warpx_get_edge_lengths_z_nodal_flag()

int* warpx_get_edge_lengths_z_nodal_flag ( )

◆ warpx_get_face_areas_x_nodal_flag()

int* warpx_get_face_areas_x_nodal_flag ( )

◆ warpx_get_face_areas_y_nodal_flag()

int* warpx_get_face_areas_y_nodal_flag ( )

◆ warpx_get_face_areas_z_nodal_flag()

int* warpx_get_face_areas_z_nodal_flag ( )

◆ warpx_getAx_nodal_flag()

int* warpx_getAx_nodal_flag ( )

◆ warpx_getAy_nodal_flag()

int* warpx_getAy_nodal_flag ( )

◆ warpx_getAz_nodal_flag()

int* warpx_getAz_nodal_flag ( )

◆ warpx_getBx_nodal_flag()

int* warpx_getBx_nodal_flag ( )

◆ warpx_getBy_nodal_flag()

int* warpx_getBy_nodal_flag ( )

◆ warpx_getBz_nodal_flag()

int* warpx_getBz_nodal_flag ( )

◆ warpx_getCellSize()

amrex::Real warpx_getCellSize ( int  dir,
int  lev 
)

◆ warpx_getdt()

amrex::Real warpx_getdt ( int  lev)

◆ warpx_getEx_nodal_flag()

int* warpx_getEx_nodal_flag ( )

◆ warpx_getEy_nodal_flag()

int* warpx_getEy_nodal_flag ( )

◆ warpx_getEz_nodal_flag()

int* warpx_getEz_nodal_flag ( )

◆ warpx_getF_nodal_flag()

int* warpx_getF_nodal_flag ( )

◆ warpx_getF_pml_nodal_flag()

int* warpx_getF_pml_nodal_flag ( )

◆ warpx_getG_nodal_flag()

int* warpx_getG_nodal_flag ( )

◆ warpx_getG_pml_nodal_flag()

int* warpx_getG_pml_nodal_flag ( )

◆ warpx_getistep()

int warpx_getistep ( int  lev)

◆ warpx_getJx_nodal_flag()

int* warpx_getJx_nodal_flag ( )

◆ warpx_getJy_nodal_flag()

int* warpx_getJy_nodal_flag ( )

◆ warpx_getJz_nodal_flag()

int* warpx_getJz_nodal_flag ( )

◆ warpx_getMyProc()

int warpx_getMyProc ( )

◆ warpx_getNProcs()

int warpx_getNProcs ( )

◆ warpx_getNumParticles()

long warpx_getNumParticles ( const char *  char_species_name,
const bool  local 
)

◆ warpx_getParticleArrays()

amrex::ParticleReal** warpx_getParticleArrays ( const char *  char_species_name,
const char *  char_comp_name,
int  lev,
int *  num_tiles,
int **  particles_per_tile 
)

◆ warpx_getParticleBoundaryBuffer()

amrex::ParticleReal** warpx_getParticleBoundaryBuffer ( const char *  species_name,
int  boundary,
int  lev,
int *  num_tiles,
int **  particles_per_tile,
const char *  comp_name 
)

◆ warpx_getParticleBoundaryBufferScrapedSteps()

int** warpx_getParticleBoundaryBufferScrapedSteps ( const char *  species_name,
int  boundary,
int  lev,
int *  num_tiles,
int **  particles_per_tile 
)

◆ warpx_getParticleBoundaryBufferSize()

int warpx_getParticleBoundaryBufferSize ( const char *  species_name,
int  boundary,
bool  local 
)

◆ warpx_getParticleBoundaryBufferStructs()

amrex::ParticleReal** warpx_getParticleBoundaryBufferStructs ( const char *  species_name,
int  boundary,
int  lev,
int *  num_tiles,
int **  particles_per_tile 
)

◆ warpx_getParticleCompIndex()

int warpx_getParticleCompIndex ( const char *  char_species_name,
const char *  char_comp_name 
)

◆ warpx_getParticleStructs()

amrex::ParticleReal** warpx_getParticleStructs ( const char *  char_species_name,
int  lev,
int *  num_tiles,
int **  particles_per_tile 
)

◆ warpx_getPhi_nodal_flag()

int* warpx_getPhi_nodal_flag ( )

◆ warpx_getProbHi()

amrex::Real warpx_getProbHi ( int  dir)

◆ warpx_getProbLo()

amrex::Real warpx_getProbLo ( int  dir)

◆ warpx_getRho_nodal_flag()

int* warpx_getRho_nodal_flag ( )

◆ warpx_gett_new()

amrex::Real warpx_gett_new ( int  lev)

◆ warpx_init()

void warpx_init ( )

◆ warpx_maxStep()

int warpx_maxStep ( )

◆ warpx_MoveWindow()

void warpx_MoveWindow ( int  step,
bool  move_j 
)

◆ warpx_nComps()

int warpx_nComps ( )

◆ warpx_nCompsSpecies()

int warpx_nCompsSpecies ( const char *  char_species_name)

◆ warpx_nSpecies()

int warpx_nSpecies ( )

◆ warpx_ParticleReal_size()

int warpx_ParticleReal_size ( )

◆ warpx_PushParticlesandDepose()

void warpx_PushParticlesandDepose ( amrex::Real  cur_time)

◆ warpx_ReadBCParams()

void warpx_ReadBCParams ( )

◆ warpx_Real_size()

int warpx_Real_size ( )

◆ warpx_set_callback_py()

void warpx_set_callback_py ( const char *  char_callback_name,
WARPX_CALLBACK_PY_FUNC_0  callback 
)

◆ warpx_setistep()

void warpx_setistep ( int  lev,
int  ii 
)

◆ warpx_setPotentialEB()

void warpx_setPotentialEB ( const char *  char_potential)

◆ warpx_sett_new()

void warpx_sett_new ( int  lev,
amrex::Real  time 
)

◆ warpx_SpaceDim()

int warpx_SpaceDim ( )

◆ warpx_stopTime()

amrex::Real warpx_stopTime ( )

◆ warpx_sumParticleCharge()

amrex::Real warpx_sumParticleCharge ( const char *  char_species_name,
const bool  local 
)

◆ warpx_SyncCurrent()

void warpx_SyncCurrent ( const amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 >> &  J_fp,
const amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 >> &  J_cp 
)

◆ warpx_SyncRho()

void warpx_SyncRho ( )

◆ warpx_UpdateAuxilaryData()

void warpx_UpdateAuxilaryData ( )

◆ warpx_use_fdtd_nci_corr()

bool warpx_use_fdtd_nci_corr ( )