mirror of https://gitlab.com/pamhyr/pamhyr2
100 lines
3.6 KiB
Python
Executable File
100 lines
3.6 KiB
Python
Executable File
#!/bin/env python3
|
|
|
|
import sys
|
|
import importlib.util as imp
|
|
import os
|
|
import numpy as np
|
|
|
|
def lire_opt(filename, res):
|
|
with open(filename, encoding = "ISO-8859-1", mode ="r") as f:
|
|
variables = ['"t"','"Bief"','"Section"','"Pk"']
|
|
lines = f.readlines()
|
|
for start,line in enumerate(lines):
|
|
print("line n "+str(start)+" : ",line)
|
|
if line == "[variables]\n": continue
|
|
if line == "[resultats]\n": break
|
|
val = line.split(';')
|
|
variables.append(val[1])
|
|
if val[1] == '"ZREF"': izref = start+3
|
|
if val[1] == '"Q"': iq = start+3
|
|
if val[1] == '"Z"': iz = start+3
|
|
print ("variables : "+str(variables))
|
|
|
|
#resultats
|
|
res.mage_version = 83
|
|
# first pass to count sect and biefs
|
|
prev_timestep = float(lines[start+1].split(';')[0])
|
|
for line in lines[start+1:]:
|
|
ls = line.split(';')
|
|
t = float(ls[0])
|
|
if prev_timestep != t : break
|
|
ibief = int(ls[1].strip('"'))
|
|
isect = int(ls[2].strip('"'))
|
|
pk = float(ls[3])
|
|
if ibief > res.ibmax:
|
|
res.ibmax += 1
|
|
res.is1.append(isect)
|
|
res.is2.append(isect)
|
|
if isect > res.ismax:
|
|
res.ismax += 1
|
|
res.xgeo.append(pk)
|
|
res.ygeo.append(0.0)
|
|
res.zfd.append(float(ls[izref]))
|
|
res.ybas.append(0.0)
|
|
if isect > res.is2[ibief-1]:
|
|
res.is2[ibief-1] = isect
|
|
if isect < res.is1[ibief-1]:
|
|
res.is1[ibief-1] = isect
|
|
|
|
print(" nb sections : "+str(res.ismax))
|
|
|
|
# first pass to get the data
|
|
prev_bief = 0
|
|
prev_sect = 0
|
|
z = np.zeros(res.ismax, dtype=np.float32)
|
|
q = np.zeros(res.ismax, dtype=np.float32)
|
|
isect = 0
|
|
count = np.array([1],dtype=np.int32)
|
|
bZ = bytearray('Z'.encode())
|
|
bQ = bytearray('Q'.encode())
|
|
for line in lines[start+1:]:
|
|
ls = line.split(';')
|
|
t = float(ls[0])
|
|
ibief = int(ls[1].strip('"'))
|
|
isect = int(ls[2].strip('"'))
|
|
if prev_timestep != t :
|
|
res.values['Z'].append(prev_timestep, z)
|
|
res.values['Q'].append(prev_timestep, q)
|
|
count[0] = 4 + 8 + 1 + 8*len(z)
|
|
res.raw_data.append(count)
|
|
res.raw_data.append(np.array([len(z)],dtype=np.int32))
|
|
res.raw_data.append(np.array([prev_timestep],dtype=np.float64))
|
|
res.raw_data.append(np.array(bZ,dtype=np.byte))
|
|
res.raw_data.append(z)
|
|
res.raw_data.append(count)
|
|
res.raw_data.append(count)
|
|
res.raw_data.append(np.array([len(q)],dtype=np.int32))
|
|
res.raw_data.append(np.array([prev_timestep],dtype=np.float64))
|
|
res.raw_data.append(np.array(bQ,dtype=np.byte))
|
|
res.raw_data.append(q)
|
|
res.raw_data.append(count)
|
|
prev_timestep = t
|
|
z[isect-1] = float(ls[iz])
|
|
q[isect-1] = float(ls[iq])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
current_dir = os.getcwd()
|
|
os.chdir('/home/theophile.terraz/Codes/mage/src')
|
|
spec = imp.spec_from_file_location("me", "./mage_extraire.py")
|
|
me = imp.module_from_spec(spec)
|
|
spec.loader.exec_module(me)
|
|
os.chdir(current_dir)
|
|
|
|
print( 'Number of arguments:', len(sys.argv), 'arguments.')
|
|
print( 'Argument List:', str(sys.argv))
|
|
res = me.data()
|
|
lire_opt(sys.argv[1], res)
|
|
res.write_bin_8(sys.argv[2][0:-4])
|