Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 34 additions & 8 deletions ATMOSPHERE/online/analysis_input_gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,19 @@
def argument():
parser = argparse.ArgumentParser(description = '''
Generates daily files for OASIM by reading ECMWF file provided by CMCC
and climatologies for tclw and tco3
''',
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
parser.add_argument( '--inputdir', '-i',
type = str,
required = True,
help = ''' Input CMCC file'''
help = ''' Input ECMWF dir provided by CMCC'''
)
parser.add_argument( '--climdir', '-c',
type = str,
required = True,
help = ''' Input climatology dir'''
)
parser.add_argument( '--maskfile', '-m',
type = str,
Expand Down Expand Up @@ -51,6 +57,7 @@ def argument():
jpk,jpj,jpi = TheMask.shape

INPUTDIR=addsep(args.inputdir)
CLIMDIR=addsep(args.climdir)
OUTDIR = addsep(args.outdir)

TL = TimeList.fromfilenames(None, INPUTDIR, "*_an-fv12.00.nc", prefix="", dateformat="%Y%m%d")
Expand Down Expand Up @@ -103,7 +110,7 @@ def getframe(filename,var, timeframe):
M2d_orig = readframe(filename, var, timeframe)
return interp(M2d_orig)

def dumpfile(filename, maskObj, sp,msl, t2m,d2m, tcc,w10):
def dumpfile(filename, maskObj, sp,msl, t2m,d2m, tcc,u10,v10,tclw,tco3):
ncOUT = netCDF4.Dataset(filename,"w");

ncOUT.createDimension('lon',jpi);
Expand Down Expand Up @@ -150,11 +157,28 @@ def dumpfile(filename, maskObj, sp,msl, t2m,d2m, tcc,w10):
setattr(ncvar, 'code', 164)
ncvar[:] = tcc

ncvar = ncOUT.createVariable('w10','f',('lat','lon'))
ncvar = ncOUT.createVariable('u10','f',('lat','lon'))
setattr(ncvar,'units','m/s')
setattr(ncvar,'long_name','zonal 10 metre wind speed')
setattr(ncvar,'code', 165)
ncvar[:] = u10
ncvar = ncOUT.createVariable('v10','f',('lat','lon'))
setattr(ncvar,'units','m/s')
setattr(ncvar,'long_name','10 metre wind speed module')
setattr(ncvar,'code', '165 and 166')
ncvar[:] = w10
setattr(ncvar,'long_name','meridional 10 metre wind speed module')
setattr(ncvar,'code', 166)
ncvar[:] = v10

ncvar = ncOUT.createVariable('tclw','f',('lat','lon'))
ncvar[:]=tclw
setattr(ncvar, 'long_name', 'Total column cloud liquid water' )
setattr(ncvar, 'units','kg m**-2' )
setattr(ncvar, 'orig', 'climatology')

ncvar = ncOUT.createVariable('tco3','f',('lat','lon'))
ncvar[:]=tco3
setattr(ncvar, 'long_name', 'Total column ozone' )
setattr(ncvar, 'units','kg m**-2' )
setattr(ncvar, 'orig', 'climatology')

setattr(ncOUT, 'input_file', str(inputfile))
ncOUT.close()
Expand All @@ -175,7 +199,9 @@ def dumpfile(filename, maskObj, sp,msl, t2m,d2m, tcc,w10):
t2m = getframe(inputfile,'T2M' , iframe)
d2m = getframe(inputfile,'D2M' , iframe)
tcc = getframe(inputfile,'TCC' , iframe)
input_climfile=CLIMDIR + d.strftime("climatm.yyyy%m15-00:00:00.nc")
tclw = netcdf4.readfile(input_climfile,"tclw")
tco3 = netcdf4.readfile(input_climfile,"tco3")

w10 = np.sqrt(u10**2 + v10**2)
dumpfile(outfile, TheMask, sp,msl, t2m,d2m, tcc,w10)
dumpfile(outfile, TheMask, sp,msl, t2m,d2m, tcc,u10,v10,tclw,tco3)

5 changes: 5 additions & 0 deletions ATMOSPHERE/online/job.slurm
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,9 @@ OUTDIR=/g100_scratch/userexternal/gbolzon0/V9C/ONLINE_ATM/out
MASKFILE=/g100_work/OGS_devC/V9C/RUNS_SETUP/PREPROC/MASK/meshmask.nc

mkdir -p $OUTDIR
ECMWF_DIR=/g100_work/OGS_prodC/OPA/V11C-prod/inpdir/analysis/20250408/ECMWF
CLIM_DIR=/g100_work/OGS_prodC/OPA/V11C-prod/etc/static-data/MODEL/ATM
opa_prex_or_die "mpirun -np 7 python analysis_input_gen.py -i $ECMWF_DIR -c $CLIM_DIR -o $OUTDIR -m $MASKFILE"


my_prex_or_die "mpirun -np 10 python forecast_input_gen.py -i $INPUTFILE -o $OUTDIR -m $MASKFILE"