diff options
author | 2021-11-05 09:58:54 -0700 | |
---|---|---|
committer | 2021-11-05 09:58:54 -0700 | |
commit | 3684af17bbbe04fdc6dd84ff2a646c8a77076b73 (patch) | |
tree | ba5a5492a9565ab7d957caa3281ed316d5d48cd1 /Source/Python/WarpXWrappers.cpp | |
parent | 66731e4a97c052df78b486b92033707cedadb780 (diff) | |
download | WarpX-3684af17bbbe04fdc6dd84ff2a646c8a77076b73.tar.gz WarpX-3684af17bbbe04fdc6dd84ff2a646c8a77076b73.tar.zst WarpX-3684af17bbbe04fdc6dd84ff2a646c8a77076b73.zip |
Add Python Wrappers for F,G in PML (#2481)
* Add Python Wrappers for F,G in PML
* Add Getters for F,G Nodal Flags
* Fix Bug in <F,G>FPPMLWrapper (Default Level)
* Fix Bug in F,G Nodal Flags
* Use GetPML Method for F,G Nodal Flags
Diffstat (limited to '')
-rw-r--r-- | Source/Python/WarpXWrappers.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/Source/Python/WarpXWrappers.cpp b/Source/Python/WarpXWrappers.cpp index a109df645..9ee99e8ab 100644 --- a/Source/Python/WarpXWrappers.cpp +++ b/Source/Python/WarpXWrappers.cpp @@ -424,6 +424,50 @@ extern "C" WARPX_GET_LOVECTS_PML(warpx_getCurrentDensityCPLoVects_PML, Getj_cp) WARPX_GET_LOVECTS_PML(warpx_getCurrentDensityFPLoVects_PML, Getj_fp) +#define WARPX_GET_SCALAR_PML(SCALAR, GETTER) \ + 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); \ + } + +#define WARPX_GET_LOVECTS_PML_SCALAR(SCALAR, GETTER) \ + 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); \ + } + + // F and G + WARPX_GET_SCALAR_PML(warpx_getFfieldCP_PML, GetF_cp) + WARPX_GET_SCALAR_PML(warpx_getFfieldFP_PML, GetF_fp) + WARPX_GET_LOVECTS_PML_SCALAR(warpx_getFfieldCPLoVects_PML, GetF_cp) + WARPX_GET_LOVECTS_PML_SCALAR(warpx_getFfieldFPLoVects_PML, GetF_fp) + WARPX_GET_SCALAR_PML(warpx_getGfieldCP_PML, GetG_cp) + WARPX_GET_SCALAR_PML(warpx_getGfieldFP_PML, GetG_fp) + WARPX_GET_LOVECTS_PML_SCALAR(warpx_getGfieldCPLoVects_PML, GetG_cp) + WARPX_GET_LOVECTS_PML_SCALAR(warpx_getGfieldFPLoVects_PML, GetG_fp) + + int* warpx_getF_pml_nodal_flag() + { + auto * pml = WarpX::GetInstance().GetPML(0); + if (!pml) return nullptr; + return getFieldNodalFlagData(pml->GetF_fp()); + } + + int* warpx_getG_pml_nodal_flag() + { + auto * pml = WarpX::GetInstance().GetPML(0); + if (!pml) return nullptr; + return getFieldNodalFlagData(pml->GetG_fp()); + } + amrex::ParticleReal** warpx_getParticleStructs( const char* char_species_name, int lev, int* num_tiles, int** particles_per_tile) { |