예제 #1
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Dec  4 11:06:35 2018

@author: engels
"""

import wabbit_tools
import sys

time, x0, dx, box, data, treecode = wabbit_tools.read_wabbit_hdf5(sys.argv[1])

data = wabbit_tools.overwrite_block_data_with_level(treecode, data)

wabbit_tools.write_wabbit_hdf5(sys.argv[2], time, x0, dx, box, data, treecode)
예제 #2
0
def write_mat_file_wabbit(args,
                          outfile,
                          times,
                          timestamps,
                          prefixes,
                          scalars,
                          vectors,
                          directory,
                          mpicommand="mpirun -np 2 ",
                          level=None):
    print('-------------------------')
    print('- WABBIT module matlab  -')
    print('-------------------------')

    # use any file to get blocksize and dimensionality
    file = directory + prefixes[0] + '_' + timestamps[0] + '.h5'
    # open h5 file
    f = h5py.File(file)
    # get the dataset handle
    dset_id = f.get('blocks')

    res = dset_id.shape
    dim = len(res) - 1
    densedir = directory + "/densedir%d/" % len(timestamps)
    if not os.path.exists(densedir):
        os.makedirs(densedir)
    # loop over time steps
    all_data = []
    data_list = {
        "names": prefixes,
        "data": [],
        "time": times,
        "domain_size": np.zeros(dim)
    }
    for prefix in prefixes:
        data_tmp = []
        for i in range(len(timestamps)):
            #use any of our files at the same timestamp to determine number of blocks
            file = directory + prefix + '_' + timestamps[i] + '.h5'
            file_dense = densedir + prefix + '_' + timestamps[i] + '.h5'
            if not level:
                command = mpicommand + " " + \
                "wabbit-post --sparse-to-dense "+file + " "+file_dense+ " "
            else:
                command = mpicommand + " " + \
                "wabbit-post --sparse-to-dense "+file + " "+file_dense+ " "  \
                 + level + " 4" #+ order
            command = command + " >> " + densedir + "wabbit-post.log"
            print("\n", command, "\n")
            ierr = os.system(command)
            if (ierr > 0):
                warn(
                    "Need wabbit for sparse-to-dense! Please export wabbit in PATH. export PATH=$PATH:/path/to/wabbit/"
                )
                return 0
            time, x0, dx, box, data, treecode = read_wabbit_hdf5(file_dense)
            data_dense, box_dense = dense_matrix(x0, dx, data, treecode, dim)
            data_tmp.append(data_dense)
            if os.path.isfile(file_dense):
                os.remove(file_dense)
            else:  ## Show an error ##
                print("Error: %s file not found" % file_dense)
        data_list["domain_size"] = box_dense
        data_list["dx"] = dx
        data_list["data"].append(np.asarray(data_tmp))

    # save everything in one file
    savemat(directory + "/" + outfile, data_list)
    # remove temporal directory
    try:
        shutil.rmtree(densedir)
    except OSError as e:
        print("Error: %s : %s" % (densedir, e.strerror))
mode_lists = [
    "mode1_list.txt", "mode2_list.txt", "mode3_list.txt", "mode4_list.txt"
]
reconstructed_iteration = 7

# read data
files = sorted(glob.glob(data["folder"] + "Jmax" + str(jmax) + "/u*.h5"))[275:]
p_list = []
t_list = []
for fname_in in files:

    path, fname = os.path.split(fname_in)
    folder = data['folder'] + "/Jmax" + str(jmax - 1) + "/"
    fname_out = folder + fname.split("_")[0]
    time, x0, dx, box, datafield, treecode = wt.read_wabbit_hdf5(fname_in)
    field, box = wt.dense_matrix(x0, dx, datafield, treecode)
    p_list.append(field[786, 2048])
    t_list.append(time)
    field = np.squeeze(field)
    Bs = wt.field_shape_to_bs(field.shape, jmax)
    box = box[::-1]
    fname = wt.dense_to_wabbit_hdf5(field, fname_out, Bs, box, time)

#    plt.figure(55)
#    plt.pcolormesh(field)
#    plt.axis("image")
#    plt.xticks([])
#    plt.yticks([])
#    plt.savefig(fname.replace("h5","png"))
예제 #4
0
    jmin, jmax = wabbit_tools.get_max_min_level(treecode)

    # note zero-based indexing
    level = np.zeros([jmax])

    for i in range(N):
        J = wabbit_tools.treecode_level(treecode[i, :]) - 1  # zero-based
        level[J] += 1

    for J in np.arange(start=jmin, stop=jmax):
        print("J=%2i Nb=%7i " % (J + 1, level[J]))

else:

    time, x0, dx, box, data, treecode = wabbit_tools.read_wabbit_hdf5(file)

    if args.mpirank:
        fid = h5py.File(file, 'r')

        # read procs array from file
        b = fid['procs'][:]
        procs = np.array(b, dtype=float)
        fid.close()

        if len(data.shape) == 4:
            N = treecode.shape[0]
            for i in range(N):
                data[i, :, :, :] = float(procs[i])

        elif len(data.shape) == 3:
        print("\n", dense_command, "\n\n")
        success = os.system(dense_command)  # execute command
        #wt.plot_wabbit_file(file_dense,savepng=True)
        if success != 0:
            print("command did not execute successfully")
            return

    # delete reference file
    os.system("rm " + file_coarse)
    return file_dense


file = wabbit_adapt(dirs, params, wabbit_setup)

# Grab some test data.
time, x0, dx, box, field, treecode = wt.read_wabbit_hdf5(file)
field, box = wt.dense_matrix(x0, dx, field, treecode)

# %%
plt.close("all")

fig1 = plt.figure()
ax1 = fig1.gca(projection='3d')
Nxy = field.shape
Z = field[Nxy[0] // 3:-Nxy[0] // 3:40, Nxy[1] // 3:-Nxy[1] // 3:40]

x = np.linspace(0, params.domain.L[0], Z.shape[0])
y = np.linspace(0, params.domain.L[1], Z.shape[1])
[X, Y] = np.meshgrid(x, y)
# Plot a basic wireframe.
예제 #6
0
파일: test.py 프로젝트: hsparr/WABBIT
#RHO =ONES*data[:,1]
#V = ONES*data[:,2]
#U = np.zeros([256, 256])
#plt.plot(data[:,2])
#Bs = np.asarray([33,33])
#box_size = np.asarray([1,1.7])
#
#wtools.dense_to_wabbit_hdf5(P.T, 'p' , Bs, box_size,  0, 0)
#wtools.dense_to_wabbit_hdf5(U.T, 'Ux' , Bs, box_size,  0, 0)
#wtools.dense_to_wabbit_hdf5(RHO.T, 'rho' , Bs, box_size,  0, 0)
#wtools.dense_to_wabbit_hdf5(V.T, 'Uy' , Bs, box_size,  0, 0)

#wtools.plot_wabbit_file('rho_000000000000.h5')

#%%
k = wtools.read_wabbit_hdf5('rho_000000000000.h5')

rho_feld = wtools.dense_matrix(k[1], k[2], k[4], k[5], dim=2)[0]
plt.plot(rho_feld[:, 0])

#%%
#wtools.plot_wabbit_file('/home/sparr/devel/Guderley_valid/wabbit_sim/free_timestep/rho_fil/rho_000000500000.h5')

#Bs = np.asarray([33,33])
#box_size = np.asarray([1.7,1])

k1 = wtools.read_wabbit_hdf5(
    '/home/sparr/devel/rot_valid/pressure_ring/p_000000400000.h5')
k2 = wtools.read_wabbit_hdf5(
    '/home/sparr/devel/rot_valid/new_presswave/p_fil/p_000000400000.h5')