1
Fork 0
internship/swash/readswash.py

84 lines
2.6 KiB
Python
Executable File

import numpy as np
def readswash(filename,xlen,nlay):
with open('test.txt', 'r') as f:
content = f.readlines()
fsurf = []
klay = np.zeros((7203,11,300))
brkp = []
Vxfield = np.zeros((7203,11,300))
Vyfield = np.zeros((7203,11,300))
Vzfield = np.zeros((7203,11,300))
ts = []
t = 0
for i in range(len(content)):
if content[i][33:93] == 'Layer interface k=00' :
layint0 = content[i+7].split('.')
layint1 = content[i+12].split('.')
surftemp = [float(layint0[0].split()[1])]+layint0[1:-1]+[float(layint1[0].split()[1])]+layint1[1:-1]
j = 0
while j < len(surftemp):
surftemp[j] = float(surftemp[j])
j+=1
fsurf.append(np.asarray(surftemp)/10)
if content[i][33:56] == 'Flow velocity per layer' :
k = int(content[i][83:85])
layint0 = content[i+7].split('.')
layint1 = content[i+12].split('.')
vktemp = [float(layint0[0].split()[1])]+layint0[1:-1]+[float(layint1[0].split()[1])]+layint1[1:-1]
j = 0
while j < len(vktemp):
try :
vktemp[j] = float(vktemp[j])
except :
#vktemp[j] = float(vktemp[j][-5:])
vktemp[j]=0
j+=1
if content[i][87:88] == 'X':
Vxfield[t,k,:] = np.asarray(vktemp)/1000
else:
Vyfield[t,k,:] = np.asarray(vktemp)/1000
if content[i][33:56] == 'Velocity in z-direction' :
k = int(content[i][91:93])
layint0 = content[i+7].split('.')
layint1 = content[i+12].split('.')
vktemp = [float(layint0[0].split()[1])]+layint0[1:-1]+[float(layint1[0].split()[1])]+layint1[1:-1]
j = 0
while j < len(vktemp):
try:
vktemp[j] = float(vktemp[j])
except:
vktemp[j] = 0.0
j+=1
Vzfield[t,k,:len(vktemp)] = np.asarray(vktemp)/1000
Vzfield[t,k,len(vktemp):] = np.zeros(300-len(vktemp))
if content[i][33:48] == 'Layer interface' :
k = int(content[i][91:93])
layint0 = content[i+7].split('.')
layint1 = content[i+12].split('.')
layktemp = [float(layint0[0].split()[1])]+layint0[1:-1]+[float(layint1[0].split()[1])]+layint1[1:-1]
j = 0
while j < len(layktemp):
layktemp[j] = float(layktemp[j])
j+=1
klay[t,k,:] = np.asarray(layktemp)/10
if content[i][33:52] == 'wave breaking point' :
br0 = content[i+7].split('.')
br1 = content[i+12].split('.')
brtemp = [float(br0[0].split()[1])]+br0[1:-1]+[float(br1[0].split()[1])]+br1[1:-1]
j = 0
while j < len(brtemp):
brtemp[j] = float(brtemp[j])
j+=1
brkp.append(np.asarray(brtemp))
if content[i][33:68] == 'Time in seconds from reference time' :
ts.append(float(content[i+1][7:16]))
t+=1
return fsurf, Vxfield, Vyfield, Vzfield, brkp, klay