diff options
author | 2019-12-23 14:04:37 -0800 | |
---|---|---|
committer | 2019-12-23 14:04:37 -0800 | |
commit | 2ebae955f208d63fe781613cb511ff57b5da836a (patch) | |
tree | 08d29fc0954aeb1c539d9549ba00bad5080b6ada /Source/Python/WarpXWrappers.cpp | |
parent | 4b5b142d63f047a94919e24b8849841560e7be15 (diff) | |
parent | db13c6aa943753b514479aa7e0049921937c8846 (diff) | |
download | WarpX-2ebae955f208d63fe781613cb511ff57b5da836a.tar.gz WarpX-2ebae955f208d63fe781613cb511ff57b5da836a.tar.zst WarpX-2ebae955f208d63fe781613cb511ff57b5da836a.zip |
Merge branch 'dev' into comm
Diffstat (limited to 'Source/Python/WarpXWrappers.cpp')
-rw-r--r-- | Source/Python/WarpXWrappers.cpp | 181 |
1 files changed, 74 insertions, 107 deletions
diff --git a/Source/Python/WarpXWrappers.cpp b/Source/Python/WarpXWrappers.cpp index ad34d71ee..e72d467d7 100644 --- a/Source/Python/WarpXWrappers.cpp +++ b/Source/Python/WarpXWrappers.cpp @@ -208,113 +208,80 @@ extern "C" return myspc.TotalNumberOfParticles(); } - amrex::Real** warpx_getEfield(int lev, int direction, - int *return_size, int *ncomps, int *ngrow, int **shapes) { - auto & mf = WarpX::GetInstance().getEfield(lev, direction); - return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); - } - - int* warpx_getEfieldLoVects(int lev, int direction, - int *return_size, int *ngrow) { - auto & mf = WarpX::GetInstance().getEfield(lev, direction); - return getMultiFabLoVects(mf, return_size, ngrow); - } - - amrex::Real** warpx_getEfieldCP(int lev, int direction, - int *return_size, int *ncomps, int *ngrow, int **shapes) { - auto & mf = WarpX::GetInstance().getEfield_cp(lev, direction); - return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); - } - - int* warpx_getEfieldCPLoVects(int lev, int direction, - int *return_size, int *ngrow) { - auto & mf = WarpX::GetInstance().getEfield_cp(lev, direction); - return getMultiFabLoVects(mf, return_size, ngrow); - } - - amrex::Real** warpx_getEfieldFP(int lev, int direction, - int *return_size, int *ncomps, int *ngrow, int **shapes) { - auto & mf = WarpX::GetInstance().getEfield_fp(lev, direction); - return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); - } - - int* warpx_getEfieldFPLoVects(int lev, int direction, - int *return_size, int *ngrow) { - auto & mf = WarpX::GetInstance().getEfield_fp(lev, direction); - return getMultiFabLoVects(mf, return_size, ngrow); - } - - amrex::Real** warpx_getBfield(int lev, int direction, - int *return_size, int *ncomps, int *ngrow, int **shapes) { - auto & mf = WarpX::GetInstance().getBfield(lev, direction); - return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); - } - - int* warpx_getBfieldLoVects(int lev, int direction, - int *return_size, int *ngrow) { - auto & mf = WarpX::GetInstance().getBfield(lev, direction); - return getMultiFabLoVects(mf, return_size, ngrow); - } - - amrex::Real** warpx_getBfieldCP(int lev, int direction, - int *return_size, int *ncomps, int *ngrow, int **shapes) { - auto & mf = WarpX::GetInstance().getBfield_cp(lev, direction); - return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); - } - - int* warpx_getBfieldCPLoVects(int lev, int direction, - int *return_size, int *ngrow) { - auto & mf = WarpX::GetInstance().getBfield_cp(lev, direction); - return getMultiFabLoVects(mf, return_size, ngrow); - } - - amrex::Real** warpx_getBfieldFP(int lev, int direction, - int *return_size, int *ncomps, int *ngrow, int **shapes) { - auto & mf = WarpX::GetInstance().getBfield_fp(lev, direction); - return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); - } - - int* warpx_getBfieldFPLoVects(int lev, int direction, - int *return_size, int *ngrow) { - auto & mf = WarpX::GetInstance().getBfield_fp(lev, direction); - return getMultiFabLoVects(mf, return_size, ngrow); - } - - amrex::Real** warpx_getCurrentDensity(int lev, int direction, - int *return_size, int *ncomps, int *ngrow, int **shapes) { - auto & mf = WarpX::GetInstance().getcurrent(lev, direction); - return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); - } - - int* warpx_getCurrentDensityLoVects(int lev, int direction, - int *return_size, int *ngrow) { - auto & mf = WarpX::GetInstance().getcurrent(lev, direction); - return getMultiFabLoVects(mf, return_size, ngrow); - } - - amrex::Real** warpx_getCurrentDensityCP(int lev, int direction, - int *return_size, int *ncomps, int *ngrow, int **shapes) { - auto & mf = WarpX::GetInstance().getcurrent_cp(lev, direction); - return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); - } - - int* warpx_getCurrentDensityCPLoVects(int lev, int direction, - int *return_size, int *ngrow) { - auto & mf = WarpX::GetInstance().getcurrent_cp(lev, direction); - return getMultiFabLoVects(mf, return_size, ngrow); - } - - amrex::Real** warpx_getCurrentDensityFP(int lev, int direction, - int *return_size, int *ncomps, int *ngrow, int **shapes) { - auto & mf = WarpX::GetInstance().getcurrent_fp(lev, direction); - return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); - } - - int* warpx_getCurrentDensityFPLoVects(int lev, int direction, - int *return_size, int *ngrow) { - auto & mf = WarpX::GetInstance().getcurrent_fp(lev, direction); - return getMultiFabLoVects(mf, return_size, ngrow); - } +#define WARPX_GET_FIELD(FIELD, GETTER) \ + amrex::Real** FIELD(int lev, int direction, \ + int *return_size, int *ncomps, int *ngrow, int **shapes) { \ + auto & mf = GETTER(lev, direction); \ + return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); \ + } + +#define WARPX_GET_LOVECTS(FIELD, GETTER) \ + int* FIELD(int lev, int direction, \ + int *return_size, int *ngrow) { \ + auto & mf = GETTER(lev, direction); \ + return getMultiFabLoVects(mf, return_size, ngrow); \ + } + + WARPX_GET_FIELD(warpx_getEfield, WarpX::GetInstance().getEfield); + WARPX_GET_FIELD(warpx_getEfieldCP, WarpX::GetInstance().getEfield_cp); + WARPX_GET_FIELD(warpx_getEfieldFP, WarpX::GetInstance().getEfield_fp); + + WARPX_GET_FIELD(warpx_getBfield, WarpX::GetInstance().getBfield); + WARPX_GET_FIELD(warpx_getBfieldCP, WarpX::GetInstance().getBfield_cp); + WARPX_GET_FIELD(warpx_getBfieldFP, WarpX::GetInstance().getBfield_fp); + + WARPX_GET_FIELD(warpx_getCurrentDensity, WarpX::GetInstance().getcurrent); + WARPX_GET_FIELD(warpx_getCurrentDensityCP, WarpX::GetInstance().getcurrent_cp); + WARPX_GET_FIELD(warpx_getCurrentDensityFP, WarpX::GetInstance().getcurrent_fp); + + WARPX_GET_LOVECTS(warpx_getEfieldLoVects, WarpX::GetInstance().getEfield); + WARPX_GET_LOVECTS(warpx_getEfieldCPLoVects, WarpX::GetInstance().getEfield_cp); + WARPX_GET_LOVECTS(warpx_getEfieldFPLoVects, WarpX::GetInstance().getEfield_fp); + + WARPX_GET_LOVECTS(warpx_getBfieldLoVects, WarpX::GetInstance().getBfield); + WARPX_GET_LOVECTS(warpx_getBfieldCPLoVects, WarpX::GetInstance().getBfield_cp); + WARPX_GET_LOVECTS(warpx_getBfieldFPLoVects, WarpX::GetInstance().getBfield_fp); + + WARPX_GET_LOVECTS(warpx_getCurrentDensityLoVects, WarpX::GetInstance().getcurrent); + WARPX_GET_LOVECTS(warpx_getCurrentDensityCPLoVects, WarpX::GetInstance().getcurrent_cp); + WARPX_GET_LOVECTS(warpx_getCurrentDensityFPLoVects, WarpX::GetInstance().getcurrent_fp); + +#define WARPX_GET_FIELD_PML(FIELD, GETTER) \ + amrex::Real** FIELD(int lev, int direction, \ + int *return_size, int *ncomps, int *ngrow, int **shapes) { \ + auto * pml = WarpX::GetInstance().GetPML(lev); \ + if (pml) { \ + auto & mf = *(pml->GETTER()[direction]); \ + return getMultiFabPointers(mf, return_size, ncomps, ngrow, shapes); \ + } else { \ + return nullptr; \ + } \ + } + +#define WARPX_GET_LOVECTS_PML(FIELD, GETTER) \ + int* FIELD(int lev, int direction, \ + int *return_size, int *ngrow) { \ + auto * pml = WarpX::GetInstance().GetPML(lev); \ + if (pml) { \ + auto & mf = *(pml->GETTER()[direction]); \ + return getMultiFabLoVects(mf, return_size, ngrow); \ + } else { \ + return nullptr; \ + } \ + } + + WARPX_GET_FIELD_PML(warpx_getEfieldCP_PML, GetE_cp); + WARPX_GET_FIELD_PML(warpx_getEfieldFP_PML, GetE_fp); + WARPX_GET_FIELD_PML(warpx_getBfieldCP_PML, GetB_cp); + WARPX_GET_FIELD_PML(warpx_getBfieldFP_PML, GetB_fp); + WARPX_GET_FIELD_PML(warpx_getCurrentDensityCP_PML, Getj_cp); + WARPX_GET_FIELD_PML(warpx_getCurrentDensityFP_PML, Getj_fp); + WARPX_GET_LOVECTS_PML(warpx_getEfieldCPLoVects_PML, GetE_cp); + WARPX_GET_LOVECTS_PML(warpx_getEfieldFPLoVects_PML, GetE_fp); + WARPX_GET_LOVECTS_PML(warpx_getBfieldCPLoVects_PML, GetB_cp); + WARPX_GET_LOVECTS_PML(warpx_getBfieldFPLoVects_PML, GetB_fp); + WARPX_GET_LOVECTS_PML(warpx_getCurrentDensityCPLoVects_PML, Getj_cp); + WARPX_GET_LOVECTS_PML(warpx_getCurrentDensityFPLoVects_PML, Getj_fp); amrex::ParticleReal** warpx_getParticleStructs(int speciesnumber, int lev, int* num_tiles, int** particles_per_tile) { |