aboutsummaryrefslogtreecommitdiff
path: root/Tools/parallel_postproc.py
diff options
context:
space:
mode:
authorGravatar MaxThevenet <mthevenet@lbl.gov> 2018-12-11 10:37:21 -0800
committerGravatar MaxThevenet <mthevenet@lbl.gov> 2018-12-11 10:37:21 -0800
commitb53d4a7ea5c3963e16727aafdbda01771af04c0d (patch)
tree33ddccf2ceb4ae6670baa4ed31b9b97cb7035473 /Tools/parallel_postproc.py
parent4e4a84aba36b2d2168cf41077f596549180f0dd9 (diff)
downloadWarpX-b53d4a7ea5c3963e16727aafdbda01771af04c0d.tar.gz
WarpX-b53d4a7ea5c3963e16727aafdbda01771af04c0d.tar.zst
WarpX-b53d4a7ea5c3963e16727aafdbda01771af04c0d.zip
fix conflicts for merge revert
Diffstat (limited to 'Tools/parallel_postproc.py')
-rw-r--r--Tools/parallel_postproc.py83
1 files changed, 0 insertions, 83 deletions
diff --git a/Tools/parallel_postproc.py b/Tools/parallel_postproc.py
deleted file mode 100644
index 0942118ac..000000000
--- a/Tools/parallel_postproc.py
+++ /dev/null
@@ -1,83 +0,0 @@
-import matplotlib
-matplotlib.use('Agg')
-from mpi4py import MPI
-import glob, read_raw_data
-import numpy as np
-import scipy.constants as scc
-import matplotlib.pyplot as plt
-
-species = 'electrons'
-fieldname = 'Ey'
-lambda0 = .81e-6
-
-# --- custom functions --- #
-# ------------------------ #
-omega0 = 2*np.pi*scc.c/lambda0
-# Read field fieldname and return normalized max
-def get_a0(res_dir, snapshot):
- header = res_dir + '/Header'
- print( snapshot )
- allrd, info = read_raw_data.read_lab_snapshot(snapshot, header)
- F = allrd[ fieldname ]
- return info['z'][-1], np.max(np.abs(F)) * scc.e/(scc.m_e*omega0*scc.c)
-# Convert elements of a list to numpy arrays
-def convert_to_np_array(list_in):
- list_out = []
- for elem in list_in:
- list_out.append( np.array( elem ) )
- return list_out
-
-# --- MPI parallelization --- #
-# --------------------------- #
-# Get ordered list of snapshot files
-res_dir = './lab_frame_data/';
-file_list = glob.glob(res_dir + '/snapshot?????')
-file_list.sort()
-# Total number of files
-nfiles = len(file_list)
-# Each file has a unique number
-number_list = range(nfiles)
-comm_world = MPI.COMM_WORLD
-me = comm_world.Get_rank()
-nrank = comm_world.Get_size()
-# List of files to process for current proc
-my_list = file_list[ (me*nfiles)/nrank : ((me+1)*nfiles)/nrank ]
-# List if file numbers for current proc
-my_number_list = number_list[ (me*nfiles)/nrank : ((me+1)*nfiles)/nrank ]
-
-# --- Run parallel analysis --- #
-# ----------------------------- #
-# Each MPI rank reads roughly (nb snapshots)/(nb ranks) snapshots.
-# Works with any number of snapshots.
-for count, filename in enumerate(my_list):
- zwin, a0 = get_a0( res_dir, filename )
- uzlab = read_raw_data.get_particle_field(filename, species, 'uz')/scc.c
- select_particles = (uzlab > 5.)
- uzlab = uzlab[ select_particles ]
- uzmean = np.mean(uzlab)
-
-# --- gather and rank 0 plots --- #
-# ------------------------------- #
-# Gather particle quantities to rank 0 to plot history of quantities.
-UZMEAN = comm_world.gather(uzmean, root=0)
-ZWIN = comm_world.gather(zwin, root=0)
-A0 = comm_world.gather(a0, root=0)
-# Rank 0 does the plot.
-if me == 0:
- # Convert to numpy arrays
- UZMEAN, ZWIN, A0 = convert_to_np_array([UZMEAN, ZWIN, A0])
- # Plot and save
- fig = plt.figure()
- plt.subplot(2,1,1)
- plt.plot(ZWIN*1.e3, UZMEAN)
- plt.xlabel('z (mm)')
- plt.ylabel('uz')
- plt.title( 'beam energy' )
- plt.grid()
- plt.subplot(2,1,2)
- plt.plot(ZWIN*1.e3, A0)
- plt.ylabel('a0')
- plt.title( 'beam propag angle' )
- plt.grid()
- fig.savefig('./image.png', bbox_inches='tight')
- plt.close()