Source code for NEDAS.models.qg.fortran.bin2nc
import os
import sys
import numpy as np
from NEDAS.models.qg.fortran import QGFortranModel
from NEDAS.models.qg.fortran.util import read_data_bin, spec2grid
from NEDAS.utils.conversion import t2s, s2t, dt1h
from NEDAS.utils.netcdf_lib import nc_write_var
[docs]
def main():
model_name = sys.argv[1] # 'qg'
nens = int(sys.argv[2]) # 20
tstr = sys.argv[3] # '202301021200'
mem_list = np.arange(nens)
model = QGFortranModel()
kmax = 127
nx = 2*(kmax+1)
nz = 2
path = '/cluster/work/users/yingyue/'+model_name+f'.n{nens}'+'/cycle/'+tstr+'/'+model_name
t = s2t(tstr)
vnames = ['temperature', 'streamfunc', 'vorticity']
for m in mem_list:
print(m)
for n in [0, 1]:
tout = t + n*12*dt1h
for name in vnames:
field = np.zeros((nz, nx, nx))
for k in range(nz):
field[k,...] = model.read_var(name=name, path=path, member=m, time=tout, k=k)
nc_write_var(path+'/ens.nc', {'t':None, 'm':None, 'z':nz, 'y':nx, 'x':nx}, name, field, recno={'t':n, 'm':int(m)})
if __name__ == '__main__':
main()