diff options
author | 2020-03-23 13:45:33 -0700 | |
---|---|---|
committer | 2020-03-23 13:45:33 -0700 | |
commit | 984c6f89ead2f761b6f948d19dc8724052a48a6d (patch) | |
tree | 702c7cdb89fc9c3f9dd8dac47a334d80c21da316 /Source/Python/WarpXWrappers.cpp | |
parent | 24aef3703b91c74c9cf049ee863415bb3ce4fbe1 (diff) | |
download | WarpX-984c6f89ead2f761b6f948d19dc8724052a48a6d.tar.gz WarpX-984c6f89ead2f761b6f948d19dc8724052a48a6d.tar.zst WarpX-984c6f89ead2f761b6f948d19dc8724052a48a6d.zip |
Updated Python interface for Python_Langmuir_rz_multimode test (#810)
* Added nodal and cell size data to the Python interface and updates the Python_Langmuir_rz_multimode regression test
* Cleanup of PICMI_inputs_langmuir_rz_multimode_analyze.py
Diffstat (limited to 'Source/Python/WarpXWrappers.cpp')
-rw-r--r-- | Source/Python/WarpXWrappers.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Source/Python/WarpXWrappers.cpp b/Source/Python/WarpXWrappers.cpp index 5c1964b1a..a7e50d502 100644 --- a/Source/Python/WarpXWrappers.cpp +++ b/Source/Python/WarpXWrappers.cpp @@ -57,6 +57,19 @@ namespace } return loVects; } + int* getFieldNodalFlagData(const amrex::IntVect nodal_flag) + { + /* 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)); + + constexpr int NODE = amrex::IndexType::NODE; + + for (int i=0 ; i < AMREX_SPACEDIM ; i++) { + nodel_flag_data[i] = (nodal_flag[i] == NODE ? 1 : 0); + } + return nodel_flag_data; + } } extern "C" @@ -213,6 +226,11 @@ extern "C" return geom.ProbHi(dir); } + amrex::Real warpx_getCellSize(int dir, int lev) { + const std::array<amrex::Real,3>& dx = WarpX::CellSize(lev); + return dx[dir]; + } + long warpx_getNumParticles(int speciesnumber) { auto & mypc = WarpX::GetInstance().GetPartContainer(); auto & myspc = mypc.GetParticleContainer(speciesnumber); @@ -257,6 +275,17 @@ 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);} + #define WARPX_GET_SCALAR(SCALAR, GETTER) \ amrex::Real** SCALAR(int lev, \ int *return_size, int *ncomps, int *ngrow, int **shapes) { \ |