コード例 #1
0
ファイル: dir_3d_to_2d.py プロジェクト: soumide1102/nubhlight
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)
コード例 #2
0
ファイル: mhdmodes2d.py プロジェクト: gnwong/ebhlight
  if MODES[n] == 3: # FAST
    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 = []
コード例 #3
0
ファイル: binning.py プロジェクト: soumide1102/nubhlight
    num_cpus = multiprocessing.cpu_count()
    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)
コード例 #4
0
import hdf5_to_dict as io
import sys

preferred_keys = [
    'N1', 'N2', 'N3', 'a', 'M_unit', 'B_unit', 'L_unit', 'Ne_unit'
]

if len(sys.argv) != 2:
    print('ERROR format is')
    print('  python hdr.py [filename]')
    sys.exit()

fnam = sys.argv[1]
hdr = io.load_hdr(fnam)

used_keys = []


def print_val(vnam):
    if vnam in hdr.keys() and vnam not in used_keys:
        format_string = '%e' if type(hdr[vnam]) is float else '%s'
        print(vnam, '=', format_string % hdr[vnam])
        used_keys.append(vnam)


for k in preferred_keys:
    print_val(k)

for k in hdr.keys():
    print_val(k)
コード例 #5
0
                    help=('Number of parallel processe to use. ' +
                          'If not set, defaults to all available cores.'))

args = parser.parse_args()

dfold = util.sanitize_path(args.dumpfolder)
if not os.path.exists(dfold):
    print('ERROR Folder ' + dfnam + ' does not exist!')
    sys.exit()

tmpdir = 'FRAMES'
util.safe_remove(tmpdir)
os.mkdir(tmpdir)

dfnams = io.get_dumps_full(dfold)
hdr = io.load_hdr(dfnams[0])
geom = io.load_geom(hdr)
num_files = len(dfnams)


def make_frame(pair):
    i, d = pair
    gc.collect()
    print("frame %d/%d" % (i, num_files))
    make_snap(d,
              args.variable,
              args.coords,
              args.size,
              args.cmap,
              args.log,
              os.path.join(tmpdir, 'frame_%08d.png' % i),
コード例 #6
0
ファイル: leptoneq.py プロジェクト: 5l1v3r1/nubhlight
os.chdir(TMP_DIR)
run_args = ['./bhlight', '-p', 'param_template.dat']
if MPI:
    NPROC = 4
    import psutil
    NCORE = psutil.cpu_count(logical=False)
    NTHREADS = (max(NCORE / NPROC, 1))
    os.environ['OMP_NUM_THREADS'] = '%d' % NTHREADS
    bcall(run_args, int(NPROC), stdin=DEVNULL)
else:
    bcall(run_args)
os.chdir('../')

# load simulation output
dumps = sorted(glob.glob(os.path.join(TMP_DIR, '') + '/dumps/dump*.h5'))
hdr = io.load_hdr(dumps[0])
geom = io.load_geom(hdr)
N1, N2, N3 = [hdr[i] for i in ['N1', 'N2', 'N3']]

times = np.empty(len(dumps))
Yes = np.empty((len(dumps), N1, N2))

dump = io.load_dump(dumps[0])
x, y = geom['xf'][:, :, 0], geom['yf'][:, :, 0]

#STOPPED EDITING HERE
for i, d in enumerate(dumps):
    dump = io.load_dump(d)
    times[i] = dump['t']
    Yes[i] = dump['Ye'].reshape(N1, N2)
times *= hdr['T_unit']
コード例 #7
0
ファイル: test_3D.py プロジェクト: rndsrc/iharm3d
        dvar[2] = -0.0832240462505
        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])
コード例 #8
0
import util
import os
import matplotlib
import matplotlib.pyplot as plt

SADW = True

if len(sys.argv) < 3:
    print('ERROR Format is')
    print('  savg.py [/path/to/dumpfile] [variable] [SADW=True]')
    sys.exit()

path = sys.argv[1]
vnam = sys.argv[2]

hdr = io.load_hdr(path)
geom = io.load_geom(hdr)
dump = io.load_dump(path, geom)

N1 = hdr['N1']
N2 = hdr['N2']
N3 = hdr['N3']
dx1 = hdr['dx'][1]
dx2 = hdr['dx'][2]
dx3 = hdr['dx'][3]

savg = np.zeros(N1)
for i in range(N1):
    vol = 0
    vol = (dump['RHO'][i, :, :] * dx2 * dx3 *
           geom['gdet'][i, :, :]).sum(axis=-1).sum(axis=-1)
コード例 #9
0
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()
コード例 #10
0
      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)
コード例 #11
0
ファイル: quick_plot.py プロジェクト: rndsrc/iharm3d
dumpfile = sys.argv[1]
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:, :])