def avg_dump_dir(dirpath, rmin, rmax, zmin, zmax, fix_ghosts=False, N2CPU=2, N3CPU=11, nproc=None): "Average dump data in directory. Save 2d files to same directory." print("Mapping dumps in {} from 3d to 2d...".format(dirpath)) fnams = io.get_dumps_full(dirpath) hdr = io.load_hdr(fnams[0]) geom = io.load_geom(hdr) inputs = [(fnam,rmin,rmax,zmin,zmax,fix_ghosts,N2CPU,N3CPU,geom) \ for fnam in fnams] p = Pool(processes=nproc) p.map(_avg_dump_file_worker, inputs)
dvar[0] = 0.476395427447 dvar[1] = 0.635193903263 dvar[2] = -0.102965815319 dvar[3] = -0.316873207561 dvar[5] = 0.359559114174 dvar[6] = -0.359559114174 dvar *= amp # RUN PROBLEM FOR EACH RESOLUTION AND ANALYZE RESULT for m in xrange(len(RES)): print ['./bhlight_' + str(RES[m]), '-p', 'param_template.dat'] call(['./bhlight_' + str(RES[m]), '-p', 'param_template.dat']) dfiles = np.sort(glob.glob('dumps/dump*.h5')) hdr = io.load_hdr(dfiles[-1]) geom = io.load_geom(hdr, recalc=True) dump = io.load_dump(dfiles[-1],geom) X1 = geom['x'][:,:,0] X2 = geom['y'][:,:,0] dvar_code = [] dvar_code.append(dump['RHO'][:,:,0] - var0[0]) dvar_code.append(dump['UU'][:,:,0] - var0[1]) dvar_code.append(dump['U1'][:,:,0] - var0[2]) dvar_code.append(dump['U2'][:,:,0] - var0[3]) dvar_code.append(dump['U3'][:,:,0] - var0[4]) dvar_code.append(dump['B1'][:,:,0] - var0[5]) dvar_code.append(dump['B2'][:,:,0] - var0[6]) dvar_code.append(dump['B3'][:,:,0] - var0[7]) #dvar_sol = [] dvar_sol = np.zeros([RES[m], RES[m]])
os.environ['OMP_NUM_THREADS'] = str(int(np.max([2, num_cpus / num_mpi]))) # RUN EXECUTABLE os.chdir(TMP_DIR) args = ['./bhlight', '-p', 'param_template.dat'] if MPI: bcall(args, str(num_mpi)) else: bcall(args) os.chdir('../') # READ SIMULATION OUTPUT dfiles = np.sort(glob.glob(os.path.join(TMP_DIR, '') + '/dumps/dump*.h5')) Nd = len(dfiles) hdr = io.load_hdr(dfiles[0]) geom = io.load_geom(hdr) dump = io.load_dump(dfiles[-1], geom) nuLnu = dump['nuLnu'] if np.any(np.abs(nuLnu[1:, :, :, :]) >= 1e-15): nuLnu = np.sum(nuLnu, axis=0) else: nuLnu = nuLnu[0] def make_1d(tensor, axis): assert axis in [0, 1, 2] assert len(tensor.shape) == 3 if axis == 0: return np.sum(np.sum(tensor, axis=-1), axis=-1) if axis == 1:
if len(sys.argv) > 3: tstart = float(sys.argv[3]) if len(sys.argv) > 4: tend = float(sys.argv[4]) # LOAD FILES files = io.get_dumps_list(path) if len(files) == 0: util.warn("INVALID PATH TO DUMP FOLDER") sys.exit(1) frame_dir = "frames_"+movie_type util.make_dir(frame_dir) hdr = io.load_hdr(files[0]) geom = io.load_geom(hdr, path) jmin, jmax = get_j_vals(geom) #print("jmin: {} jmax: {}".format(jmin, jmax)) if diag_post: # Load fluxes from post-analysis: more flexible diag = pickle.load(open("eht_out.p", 'rb')) else: # Load diagnostics from HARM itself diag = io.load_log(path) nthreads = util.calc_nthreads(hdr, pad=0.3) if debug: # Run sequentially to make backtraces work for i in range(len(files)):
dvar[3] = -0.224080007379 dvar[4] = -0.224080007379 dvar[5] = 0.406380545676 dvar[6] = -0.203190272838 dvar[7] = -0.203190272838 dvar *= amp # USE DUMPS IN FOLDERS OF GIVEN FORMAT for m in xrange(len(RES)): print '../dumps_' + str(RES[m]) + '_' + str(MODES[n]) os.chdir('../dumps_' + str(RES[m]) + '_' + str(MODES[n])) dfile = np.sort(glob.glob('dump*.h5'))[-1] hdr = io.load_hdr(dfile) geom = io.load_geom(hdr, dfile) dump = io.load_dump(hdr, geom, dfile) X1 = dump['x'] X2 = dump['y'] X3 = dump['z'] dvar_code = [] dvar_code.append(dump['RHO'] - var0[0]) dvar_code.append(dump['UU'] - var0[1]) dvar_code.append(dump['U1'] - var0[2]) dvar_code.append(dump['U2'] - var0[3]) dvar_code.append(dump['U3'] - var0[4]) dvar_code.append(dump['B1'] - var0[5]) dvar_code.append(dump['B2'] - var0[6]) dvar_code.append(dump['B3'] - var0[7])
def make_snap(dfnam, vnam, coords, size, cmap, logplot, savefig, label, vmin, vmax, index=None, geom=None): if not os.path.exists(dfnam): print('ERROR File ' + dfnam + ' does not exist!') sys.exit() import matplotlib if savefig is not None and savefig: matplotlib.use('Agg') import matplotlib.pyplot as plt import plot as bplt import hdf5_to_dict as io import numpy as np font = {'size': 16} matplotlib.rc('font', **font) hdr = io.load_hdr(dfnam) if geom is None: geom = io.load_geom(hdr) dump = io.load_dump(dfnam, geom=geom) if not vnam in dump.keys(): print('ERROR Variable ' + vnam + ' is not contained in dump file!') print('Available variables are:') for key in dump.keys(): if type(dump[key]) is np.ndarray: if (len(dump[key].shape) == 3 and dump[key].shape[0] == hdr['N1'] and dump[key].shape[1] == hdr['N2'] and dump[key].shape[2] == hdr['N3']): print(key, end=' ') print('') sys.exit() IS_3D = hdr['N3'] > 1 var = dump[vnam] if index is not None: var = var[..., index] if logplot: var = np.log10(var) if label is None: label = vnam if index is not None: label += '[{}]'.format(index) if IS_3D: if coords == 'mks': fig, (a0, a1) = plt.subplots(1, 2, gridspec_kw={'width_ratios': [1, 1]}, figsize=(12, 6)) elif coords == 'cart': fig, (a0, a1) = plt.subplots(1, 2, gridspec_kw={'width_ratios': [1, 1]}, figsize=(13, 7)) ax = a0 if coords == 'mks': bplt.plot_X1X2(ax, geom, var, dump, cmap=cmap, vmin=vmin, vmax=vmax, cbar=False, label=label, ticks=None, shading='gouraud') elif coords == 'cart': bplt.plot_xz(ax, geom, var, dump, cmap=cmap, vmin=vmin, vmax=vmax, cbar=False, label=label, ticks=None, shading='gouraud') ax.set_xlim([-size, size]) ax.set_ylim([-size, size]) ax = a1 if coords == 'mks': bplt.plot_X1X3(ax, geom, var, dump, cmap=cmap, vmin=vmin, vmax=vmax, cbar=True, label=label, ticks=None, shading='gouraud') elif coords == 'cart': bplt.plot_xy(ax, geom, var, dump, cmap=cmap, vmin=vmin, vmax=vmax, cbar=True, label=label, ticks=None, shading='gouraud') ax.set_xlim([-size, size]) ax.set_ylim([-size, size]) else: if coords == 'mks': fig, ax = plt.subplots(1, 1, figsize=(10, 10)) bplt.plot_X1X2(ax, geom, var, dump, cmap=cmap, vmin=vmin, vmax=vmax, cbar=True, label=label, ticks=None, shading='gouraud') elif coords == 'cart': fig, ax = plt.subplots(1, 1, figsize=(7, 10)) bplt.plot_xz(ax, geom, var, dump, cmap=cmap, vmin=vmin, vmax=vmax, cbar=True, label=label, ticks=None, shading='gouraud') ax.set_xlim([0, size]) ax.set_ylim([-size, size]) if savefig == False: plt.show() else: plt.savefig(savefig, bbox_inches='tight') plt.cla() plt.clf() plt.close()
tstart = float(sys.argv[4]) if len(sys.argv) > 5: tend = float(sys.argv[5]) # LOAD FILES files1 = io.get_dumps_list(path1) files2 = io.get_dumps_list(path2) if len(files1) == 0 or len(files2) == 0: util.warn("INVALID PATH TO DUMP FOLDER") sys.exit(1) frame_dir = "frames_compare_"+movie_type util.make_dir(frame_dir) hdr1 = io.load_hdr(files1[0]) hdr2 = io.load_hdr(files2[0]) geom1 = io.load_geom(hdr1, path1) geom2 = io.load_geom(hdr2, path2) # TODO diags from post? # Load diagnostics from HARM itself diag1 = io.load_log(path1) diag2 = io.load_log(path2) nthreads = util.calc_nthreads(hdr1) if debug: for i in range(len(files1)): plot(i) else: util.run_parallel(plot, len(files1), nthreads)
if len(sys.argv) > 3: gridfile = sys.argv[2] var = sys.argv[3] elif len(sys.argv) > 2: gridfile = None var = sys.argv[2] # Optionally take extra name name = sys.argv[-1] if UNITS and var not in ['Tp']: M_unit = float(sys.argv[-1]) if gridfile is not None: hdr = io.load_hdr(dumpfile) geom = io.load_geom(hdr, gridfile) dump = io.load_dump(dumpfile, hdr, geom) else: # Assumes gridfile in same directory hdr, geom, dump = io.load_all(dumpfile) # If we're plotting a derived variable, calculate + add it if var in ['jcov', 'jsq']: dump['jcov'] = np.einsum("...i,...ij->...j", dump['jcon'], geom['gcov'][:, :, None, :, n]) dump['jsq'] = np.sum(dump['jcon'] * dump['jcov'], axis=-1) elif var in ['divE2D']: JE1g, JE2g = T_mixed(dump, 1, 0).mean(axis=-1) * geom['gdet'], T_mixed( dump, 2, 0).mean(axis=-1) * geom['gdet'] face_JE1 = 0.5 * (JE1g[:-1, :] + JE1g[1:, :]) face_JE2 = 0.5 * (JE2g[:, :-1] + JE2g[:, 1:])