aboutsummaryrefslogtreecommitdiff
path: root/Source/Python/WarpXWrappers.cpp
diff options
context:
space:
mode:
authorGravatar Edoardo Zoni <59625522+EZoni@users.noreply.github.com> 2021-11-05 09:58:54 -0700
committerGravatar GitHub <noreply@github.com> 2021-11-05 09:58:54 -0700
commit3684af17bbbe04fdc6dd84ff2a646c8a77076b73 (patch)
treeba5a5492a9565ab7d957caa3281ed316d5d48cd1 /Source/Python/WarpXWrappers.cpp
parent66731e4a97c052df78b486b92033707cedadb780 (diff)
downloadWarpX-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.cpp44
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) {