diff --git a/ATMOSPHERE/online/analysis_input_gen.py b/ATMOSPHERE/online/analysis_input_gen.py index 9d5b117..29bef83 100644 --- a/ATMOSPHERE/online/analysis_input_gen.py +++ b/ATMOSPHERE/online/analysis_input_gen.py @@ -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, @@ -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") @@ -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); @@ -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() @@ -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) diff --git a/ATMOSPHERE/online/job.slurm b/ATMOSPHERE/online/job.slurm index 41ba7cc..3fa720b 100644 --- a/ATMOSPHERE/online/job.slurm +++ b/ATMOSPHERE/online/job.slurm @@ -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"