aboutsummaryrefslogtreecommitdiff
path: root/Source/Python/WarpXWrappers.cpp
diff options
context:
space:
mode:
authorGravatar Edoardo Zoni <59625522+EZoni@users.noreply.github.com> 2020-05-01 16:44:35 -0700
committerGravatar GitHub <noreply@github.com> 2020-05-01 16:44:35 -0700
commit26d6358d3c7aff7b4310af34fc771d5c8f2628fe (patch)
treea152e03b2224c5b420ab99e8f8bb6cb40aa40ef7 /Source/Python/WarpXWrappers.cpp
parented8fdc9ca97aa51c522549c565dda4123c679eba (diff)
downloadWarpX-26d6358d3c7aff7b4310af34fc771d5c8f2628fe.tar.gz
WarpX-26d6358d3c7aff7b4310af34fc771d5c8f2628fe.tar.zst
WarpX-26d6358d3c7aff7b4310af34fc771d5c8f2628fe.zip
Do not rely on nodal flags (#931)
* Start removing nodal flags where possible * Remove additional nodal flags * Clean up getFieldNodalFlagData in Python wrappers * Remove nodal flags from PML files * Revert "Remove nodal flags from PML files" This reverts commit 1d58519f9cee2e64df811f76f3d8a0aead1aa4ef. * Fix issue when removing nodal flags from PML files * Remove nodal flags from (OLD) slice diagnostics * Nodal flags are now local variables in WarpX::AllocLevelMFs * Trigger Travis CI build after AMReX bug fix * Void commit: trigger Travis CI build
Diffstat (limited to 'Source/Python/WarpXWrappers.cpp')
-rw-r--r--Source/Python/WarpXWrappers.cpp33
1 files changed, 17 insertions, 16 deletions
diff --git a/Source/Python/WarpXWrappers.cpp b/Source/Python/WarpXWrappers.cpp
index 58a2067bc..e87a20a7a 100644
--- a/Source/Python/WarpXWrappers.cpp
+++ b/Source/Python/WarpXWrappers.cpp
@@ -57,18 +57,19 @@ namespace
}
return loVects;
}
- int* getFieldNodalFlagData(const amrex::IntVect nodal_flag)
+ // Copy the nodal flag data and return the copy:
+ // the nodal flag data should not be modifiable from Python.
+ int* getFieldNodalFlagData ( const amrex::MultiFab& mf )
{
- /* Copy the nodal flag data and return the copy.
- * The nodel flag data should not be modifiable from Python. */
- int *nodel_flag_data = (int*) malloc(AMREX_SPACEDIM * sizeof(int));
+ const amrex::IntVect nodal_flag( mf.ixType().toIntVect() );
+ int *nodal_flag_data = (int*) malloc(AMREX_SPACEDIM * sizeof(int));
constexpr int NODE = amrex::IndexType::NODE;
for (int i=0 ; i < AMREX_SPACEDIM ; i++) {
- nodel_flag_data[i] = (nodal_flag[i] == NODE ? 1 : 0);
+ nodal_flag_data[i] = (nodal_flag[i] == NODE ? 1 : 0);
}
- return nodel_flag_data;
+ return nodal_flag_data;
}
}
@@ -275,16 +276,16 @@ extern "C"
WARPX_GET_LOVECTS(warpx_getCurrentDensityCPLoVects, WarpX::GetInstance().getcurrent_cp);
WARPX_GET_LOVECTS(warpx_getCurrentDensityFPLoVects, WarpX::GetInstance().getcurrent_fp);
- int* warpx_getEx_nodal_flag() {return getFieldNodalFlagData(WarpX::Ex_nodal_flag);}
- int* warpx_getEy_nodal_flag() {return getFieldNodalFlagData(WarpX::Ey_nodal_flag);}
- int* warpx_getEz_nodal_flag() {return getFieldNodalFlagData(WarpX::Ez_nodal_flag);}
- int* warpx_getBx_nodal_flag() {return getFieldNodalFlagData(WarpX::Bx_nodal_flag);}
- int* warpx_getBy_nodal_flag() {return getFieldNodalFlagData(WarpX::By_nodal_flag);}
- int* warpx_getBz_nodal_flag() {return getFieldNodalFlagData(WarpX::Bz_nodal_flag);}
- int* warpx_getJx_nodal_flag() {return getFieldNodalFlagData(WarpX::jx_nodal_flag);}
- int* warpx_getJy_nodal_flag() {return getFieldNodalFlagData(WarpX::jy_nodal_flag);}
- int* warpx_getJz_nodal_flag() {return getFieldNodalFlagData(WarpX::jz_nodal_flag);}
- int* warpx_getRho_nodal_flag() {return getFieldNodalFlagData(WarpX::rho_nodal_flag);}
+ int* warpx_getEx_nodal_flag() {return getFieldNodalFlagData( WarpX::GetInstance().getEfield(0,0) );}
+ int* warpx_getEy_nodal_flag() {return getFieldNodalFlagData( WarpX::GetInstance().getEfield(0,1) );}
+ int* warpx_getEz_nodal_flag() {return getFieldNodalFlagData( WarpX::GetInstance().getEfield(0,2) );}
+ int* warpx_getBx_nodal_flag() {return getFieldNodalFlagData( WarpX::GetInstance().getBfield(0,0) );}
+ int* warpx_getBy_nodal_flag() {return getFieldNodalFlagData( WarpX::GetInstance().getBfield(0,1) );}
+ int* warpx_getBz_nodal_flag() {return getFieldNodalFlagData( WarpX::GetInstance().getBfield(0,2) );}
+ int* warpx_getJx_nodal_flag() {return getFieldNodalFlagData( WarpX::GetInstance().getcurrent(0,0) );}
+ int* warpx_getJy_nodal_flag() {return getFieldNodalFlagData( WarpX::GetInstance().getcurrent(0,1) );}
+ int* warpx_getJz_nodal_flag() {return getFieldNodalFlagData( WarpX::GetInstance().getcurrent(0,2) );}
+ int* warpx_getRho_nodal_flag() {return getFieldNodalFlagData( WarpX::GetInstance().getrho_fp(0) );}
#define WARPX_GET_SCALAR(SCALAR, GETTER) \
amrex::Real** SCALAR(int lev, \