diff options
author | 2019-09-06 13:27:15 -0700 | |
---|---|---|
committer | 2019-09-06 13:27:15 -0700 | |
commit | 62496147d69527a138cd1f195e462c4afa89b7f4 (patch) | |
tree | f4eec791f96c99f8fb5af2b172ee4991096fd2b2 /Python/pywarpx | |
parent | 5736e73df40b0251a63e1910a0366babee6f8a14 (diff) | |
download | WarpX-62496147d69527a138cd1f195e462c4afa89b7f4.tar.gz WarpX-62496147d69527a138cd1f195e462c4afa89b7f4.tar.zst WarpX-62496147d69527a138cd1f195e462c4afa89b7f4.zip |
Updated Python fields interface to work with refinement
Diffstat (limited to 'Python/pywarpx')
-rwxr-xr-x | Python/pywarpx/_libwarpx.py | 9 | ||||
-rw-r--r-- | Python/pywarpx/fields.py | 123 |
2 files changed, 120 insertions, 12 deletions
diff --git a/Python/pywarpx/_libwarpx.py b/Python/pywarpx/_libwarpx.py index 5df9aa0f9..dc0507cb9 100755 --- a/Python/pywarpx/_libwarpx.py +++ b/Python/pywarpx/_libwarpx.py @@ -667,7 +667,6 @@ def get_mesh_electric_field(level, direction, include_ghosts=True): ''' - assert(level == 0) return _get_mesh_field_list(libwarpx.warpx_getEfield, level, direction, include_ghosts) @@ -695,7 +694,6 @@ def get_mesh_electric_field_cp(level, direction, include_ghosts=True): ''' - assert(level == 0) return _get_mesh_field_list(libwarpx.warpx_getEfieldCP, level, direction, include_ghosts) @@ -723,7 +721,6 @@ def get_mesh_electric_field_fp(level, direction, include_ghosts=True): ''' - assert(level == 0) return _get_mesh_field_list(libwarpx.warpx_getEfieldFP, level, direction, include_ghosts) @@ -752,7 +749,6 @@ def get_mesh_magnetic_field(level, direction, include_ghosts=True): ''' - assert(level == 0) return _get_mesh_field_list(libwarpx.warpx_getBfield, level, direction, include_ghosts) @@ -780,7 +776,6 @@ def get_mesh_magnetic_field_cp(level, direction, include_ghosts=True): ''' - assert(level == 0) return _get_mesh_field_list(libwarpx.warpx_getBfieldCP, level, direction, include_ghosts) @@ -808,7 +803,6 @@ def get_mesh_magnetic_field_fp(level, direction, include_ghosts=True): ''' - assert(level == 0) return _get_mesh_field_list(libwarpx.warpx_getBfieldFP, level, direction, include_ghosts) @@ -835,7 +829,6 @@ def get_mesh_current_density(level, direction, include_ghosts=True): ''' - assert(level == 0) return _get_mesh_field_list(libwarpx.warpx_getCurrentDensity, level, direction, include_ghosts) @@ -863,7 +856,6 @@ def get_mesh_current_density_cp(level, direction, include_ghosts=True): ''' - assert(level == 0) return _get_mesh_field_list(libwarpx.warpx_getCurrentDensityCP, level, direction, include_ghosts) @@ -891,7 +883,6 @@ def get_mesh_current_density_fp(level, direction, include_ghosts=True): ''' - assert(level == 0) return _get_mesh_field_list(libwarpx.warpx_getCurrentDensityFP, level, direction, include_ghosts) diff --git a/Python/pywarpx/fields.py b/Python/pywarpx/fields.py index fcb04f865..8b7283a46 100644 --- a/Python/pywarpx/fields.py +++ b/Python/pywarpx/fields.py @@ -26,14 +26,14 @@ class _MultiFABWrapper(object): - overlaps: is one along the axes where the grid boundaries overlap the neighboring grid - get_lovects: routine that returns the list of lo vectors - get_fabs: routine that returns the list of FABs - - level=0: ignored + - level: refinement level """ - def __init__(self, direction, overlaps, get_lovects, get_fabs, level=0, include_ghosts=False): + def __init__(self, direction, overlaps, get_lovects, get_fabs, level, include_ghosts=False): self.direction = direction self.overlaps = np.array(overlaps) self.get_lovects = get_lovects self.get_fabs = get_fabs - self.level = 0 #level + self.level = level self.include_ghosts = include_ghosts self.dim = _libwarpx.dim @@ -476,3 +476,120 @@ def JzWrapper(level=0, include_ghosts=False): get_lovects=_libwarpx.get_mesh_current_density_lovects, get_fabs=_libwarpx.get_mesh_current_density, level=level, include_ghosts=include_ghosts) + +def ExCPWrapper(level=1, include_ghosts=False): + assert level>0, Exception('Coarse patch only available on levels > 0') + return _MultiFABWrapper(direction=0, overlaps=[0,1,1], + get_lovects=_libwarpx.get_mesh_electric_field_cp_lovects, + get_fabs=_libwarpx.get_mesh_electric_field_cp, + level=level, include_ghosts=include_ghosts) + +def EyCPWrapper(level=1, include_ghosts=False): + assert level>0, Exception('Coarse patch only available on levels > 0') + return _MultiFABWrapper(direction=1, overlaps=[1,0,1], + get_lovects=_libwarpx.get_mesh_electric_field_cp_lovects, + get_fabs=_libwarpx.get_mesh_electric_field_cp, + level=level, include_ghosts=include_ghosts) + +def EzCPWrapper(level=1, include_ghosts=False): + assert level>0, Exception('Coarse patch only available on levels > 0') + return _MultiFABWrapper(direction=2, overlaps=[1,1,0], + get_lovects=_libwarpx.get_mesh_electric_field_cp_lovects, + get_fabs=_libwarpx.get_mesh_electric_field_cp, + level=level, include_ghosts=include_ghosts) + +def BxCPWrapper(level=1, include_ghosts=False): + assert level>0, Exception('Coarse patch only available on levels > 0') + return _MultiFABWrapper(direction=0, overlaps=[1,0,0], + get_lovects=_libwarpx.get_mesh_magnetic_field_cp_lovects, + get_fabs=_libwarpx.get_mesh_magnetic_field_cp, + level=level, include_ghosts=include_ghosts) + +def ByCPWrapper(level=1, include_ghosts=False): + assert level>0, Exception('Coarse patch only available on levels > 0') + return _MultiFABWrapper(direction=1, overlaps=[0,1,0], + get_lovects=_libwarpx.get_mesh_magnetic_field_cp_lovects, + get_fabs=_libwarpx.get_mesh_magnetic_field_cp, + level=level, include_ghosts=include_ghosts) + +def BzCPWrapper(level=1, include_ghosts=False): + assert level>0, Exception('Coarse patch only available on levels > 0') + return _MultiFABWrapper(direction=2, overlaps=[0,0,1], + get_lovects=_libwarpx.get_mesh_magnetic_field_cp_lovects, + get_fabs=_libwarpx.get_mesh_magnetic_field_cp, + level=level, include_ghosts=include_ghosts) + +def JxCPWrapper(level=1, include_ghosts=False): + assert level>0, Exception('Coarse patch only available on levels > 0') + return _MultiFABWrapper(direction=0, overlaps=[0,1,1], + get_lovects=_libwarpx.get_mesh_current_density_cp_lovects, + get_fabs=_libwarpx.get_mesh_current_density_cp, + level=level, include_ghosts=include_ghosts) + +def JyCPWrapper(level=1, include_ghosts=False): + assert level>0, Exception('Coarse patch only available on levels > 0') + return _MultiFABWrapper(direction=1, overlaps=[1,0,1], + get_lovects=_libwarpx.get_mesh_current_density_cp_lovects, + get_fabs=_libwarpx.get_mesh_current_density_cp, + level=level, include_ghosts=include_ghosts) + +def JzCPWrapper(level=1, include_ghosts=False): + assert level>0, Exception('Coarse patch only available on levels > 0') + return _MultiFABWrapper(direction=2, overlaps=[1,1,0], + get_lovects=_libwarpx.get_mesh_current_density_cp_lovects, + get_fabs=_libwarpx.get_mesh_current_density_cp, + level=level, include_ghosts=include_ghosts) + +def ExFPWrapper(level=0, include_ghosts=False): + return _MultiFABWrapper(direction=0, overlaps=[0,1,1], + get_lovects=_libwarpx.get_mesh_electric_field_fp_lovects, + get_fabs=_libwarpx.get_mesh_electric_field_fp, + level=level, include_ghosts=include_ghosts) + +def EyFPWrapper(level=0, include_ghosts=False): + return _MultiFABWrapper(direction=1, overlaps=[1,0,1], + get_lovects=_libwarpx.get_mesh_electric_field_fp_lovects, + get_fabs=_libwarpx.get_mesh_electric_field_fp, + level=level, include_ghosts=include_ghosts) + +def EzFPWrapper(level=0, include_ghosts=False): + return _MultiFABWrapper(direction=2, overlaps=[1,1,0], + get_lovects=_libwarpx.get_mesh_electric_field_fp_lovects, + get_fabs=_libwarpx.get_mesh_electric_field_fp, + level=level, include_ghosts=include_ghosts) + +def BxFPWrapper(level=0, include_ghosts=False): + return _MultiFABWrapper(direction=0, overlaps=[1,0,0], + get_lovects=_libwarpx.get_mesh_magnetic_field_fp_lovects, + get_fabs=_libwarpx.get_mesh_magnetic_field_fp, + level=level, include_ghosts=include_ghosts) + +def ByFPWrapper(level=0, include_ghosts=False): + return _MultiFABWrapper(direction=1, overlaps=[0,1,0], + get_lovects=_libwarpx.get_mesh_magnetic_field_fp_lovects, + get_fabs=_libwarpx.get_mesh_magnetic_field_fp, + level=level, include_ghosts=include_ghosts) + +def BzFPWrapper(level=0, include_ghosts=False): + return _MultiFABWrapper(direction=2, overlaps=[0,0,1], + get_lovects=_libwarpx.get_mesh_magnetic_field_fp_lovects, + get_fabs=_libwarpx.get_mesh_magnetic_field_fp, + level=level, include_ghosts=include_ghosts) + +def JxFPWrapper(level=0, include_ghosts=False): + return _MultiFABWrapper(direction=0, overlaps=[0,1,1], + get_lovects=_libwarpx.get_mesh_current_density_fp_lovects, + get_fabs=_libwarpx.get_mesh_current_density_fp, + level=level, include_ghosts=include_ghosts) + +def JyFPWrapper(level=0, include_ghosts=False): + return _MultiFABWrapper(direction=1, overlaps=[1,0,1], + get_lovects=_libwarpx.get_mesh_current_density_fp_lovects, + get_fabs=_libwarpx.get_mesh_current_density_fp, + level=level, include_ghosts=include_ghosts) + +def JzFPWrapper(level=0, include_ghosts=False): + return _MultiFABWrapper(direction=2, overlaps=[1,1,0], + get_lovects=_libwarpx.get_mesh_current_density_fp_lovects, + get_fabs=_libwarpx.get_mesh_current_density_fp, + level=level, include_ghosts=include_ghosts) |