#!/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)
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"))
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.
#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')