84 lines
2.6 KiB
Python
84 lines
2.6 KiB
Python
|
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
|
||
|
|
||
|
|
||
|
|
||
|
|