""" Read the results in csv from the simulation outputs and save the fields in xyz format """ import os import sys import numpy as np import matplotlib.pyplot as plt import read_results def save_vext_xyzt(data, name): """ Save all the data for vext in a xyzt file NOTE: This is a highly inefficient method. It also uses a lot of memory and creates large files """ # Save results in xyzt format with open('results_vext_%s.xyzt'%name, 'w') as f: # Iterate over cables for i in all_cable_indices: print('Cable %i'%i) # Choose data try: data_ = data[i]['vext[0]'] except KeyError: data_ = data[i]['vext[1]'] # Iterate over z positions for iz, z in enumerate(zprofile[i].values()): # Iterate over time for t, v in zip(time, data_[iz]): f.write('%E, %E, %E, %E, %E\n'%(xx_[i], yy_[i], z, v, t)) def save_vext_xyz(data, name, t=None, it=None, tarray=None): """ Save all the data for vext for a certain time step in a xyz file """ # Choose it from the input if it is not None: if t is not None: print('ERROR: In save_vext_xyz. Please choose either t or it, not both') sys.exit() elif t is not None: # A value of t has been chosen if tarray is None: print('ERROR: In save_vext_xyz. If a value of t is provided, please provide also the time array (tarray)') sys.exit() else: it = np.where(tarray == t)[0][0] # Save results in xyz format with open('results_vext_%s_time_step_%05i.xyz'%(name, it), 'w') as f: # Iterate over cables for i in all_cable_indices: print('Cable %i'%i) # Choose data try: data_ = data[i]['vext[0]'] except KeyError: data_ = data[i]['vext[1]'] # Iterate over z positions for z, v in zip(zprofile[i].values(), data_[:, it]): f.write('%E, %E, %E, %E\n'%(xx_[i], yy_[i], z, v)) def save_v_xyz(data, name, t=None, it=None, tarray=None): """ Save all the data for v for a certain time step in a xyz file """ # Choose it from the input if it is not None: if t is not None: print('ERROR: In save_v_xyz. Please choose either t or it, not both') sys.exit() elif t is not None: # A value of t has been chosen if tarray is None: print('ERROR: In save_v_xyz. If a value of t is provided, please provide also the time array (tarray)') sys.exit() else: it = np.where(tarray == t)[0][0] # Save results in xyz format with open('results_v_%s_time_step_%05i.xyz'%(name, it), 'w') as f: # Iterate over cables for i in all_cable_indices: print('Cable %i'%i) # Choose data try: data_ = data[i]['v'] except KeyError: pass else: # Iterate over z positions for z, v in zip(zprofile[i].values(), data_[:, it]): f.write('%E, %E, %E, %E\n'%(xx_[i], yy_[i], z, v)) # Results folder folder = os.path.join(os.getcwd(), "data/results") # Read the results data, zprofile, xyr = read_results.read_results(folder) print('Finished with read_results') xx_, yy_, rr_ = xyr # All cable indices all_cable_indices = list(data.keys()) # Variable of interest var_interest = 'v' var_interest = 'vext[1]' # Callables callables = { 'v': save_v_xyz, 'vext[0]': save_vext_xyz, 'vext[1]': save_vext_xyz, } # Time nt = data[0][var_interest].shape[1] dt = 0.005 tarray = np.arange(0, nt * dt, dt) # Name of the simulation name = 'dataset01' # Save data in a xyz file for t = 1. callables[var_interest](data, name, t=0.015, tarray=tarray)