From f538350c61c0ec49819fb4952fe5d90a6f73f5ab Mon Sep 17 00:00:00 2001 From: Guillaume S <gsamson@mercator-ocean.fr> Date: Wed, 22 May 2024 17:02:24 +0200 Subject: [PATCH] update --- check_if_done.sh | 2 +- full_prod.sh | 22 ++++++++++++----- job_ablhpg.sbatch | 14 +++++------ job_ablvint.sbatch | 19 +++++++------- job_cdogrid.sbatch | 13 +++++++--- job_cdomiss.sbatch | 10 ++++---- job_cdosplit.sbatch | 6 ++--- job_mars.sbatch | 4 +-- job_ncochunk.sbatch | 8 +++--- mars_inst3D_ana.req.base | 7 ++++-- mars_surf2D_ana.req.base | 20 ++++++++++----- move_to_perm.sh | 14 +++++------ namelist_abl_tools.base | 53 ++++++++++++++++++++++++++++++++++++++++ subjob_ablhpg.sh | 14 +++++------ subjob_ablvint.sh | 16 ++++++------ subjob_cdogrid.sh | 28 ++++++++++----------- subjob_cdomiss.sh | 12 ++++----- subjob_cdosplit.sh | 10 ++++---- subjob_mars.sh | 20 +++++++-------- subjob_ncochunk.sh | 12 ++++----- 20 files changed, 194 insertions(+), 110 deletions(-) create mode 100644 namelist_abl_tools.base diff --git a/check_if_done.sh b/check_if_done.sh index e463dd0..69ab2f1 100755 --- a/check_if_done.sh +++ b/check_if_done.sh @@ -27,4 +27,4 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do done -if [ $((nbday*${#var_list[@]})) -eq ${tot_nb} ]; then echo "CHECK_IF_DONE OK"; exit 0; else echo "CHECK_IF_DONE ERROR"; exit 1; fi +if [ $((nbday*${#var_list[@]})) -eq ${tot_nb} ]; then echo "-CHECK_IF_DONE: OK"; exit 0; else echo "-CHECK_IF_DONE: NO"; exit 1; fi diff --git a/full_prod.sh b/full_prod.sh index 1577029..4629841 100755 --- a/full_prod.sh +++ b/full_prod.sh @@ -25,25 +25,35 @@ if [[ ${#date_beg} -eq 6 || ${#date_end} -eq 6 ]]; then date_end=$(date -d "${date_beg} + 1 month - 1 day" +"%C%y%m%d" ) fi -echo "${var_name:+"${var_name}: "}${date_beg}->${date_end}" +if [[ ${#date_beg} -eq 4 || ${#date_end} -eq 4 ]]; then + date_beg=${date_beg:0:6}0101 + date_end=$(date -d "${date_beg} + 1 year - 1 day" +"%C%y%m%d" ) +fi + +echo -e "\n${var_name:+"-${var_name}: "}${date_beg}->${date_end}\n" # directories export DIR_SRC="/home/ar0s/PROD_ERA5_ABL" -export DIR_SAVE="/ec/res5/project/mercator/ATMO_FORCINGS/ERA5_ABL50_F320_v1/daily/1h" +export DIR_SAVE="/ec/res5/project/mercator/ATMO_FORCINGS/ERA5_ABL50_F320_v1/daily/1h/TPOTL1" +export DIR_NEMO="/home/ar0s/SRC/NEMO/main/tools/ABL_TOOLS" export SCRATCH_DIR=${SCRATCHDIR} +export VLEVEL="L107-137" # L107-137 +export GRID=$(sed -rn "s/^ +grid += +([[:graph:]]+),.*/\1/p" ${DIR_SRC}/mars_inst3D_ana.req.base) +export BASE_NAME="ERA5_GLO_TLAUTO_IGNONE_G${GRID/N/F}_ana01h" +echo "-SCRATCH_DIR: ${SCRATCHDIR}" # scripts ./check_if_done.sh ${date_beg} ${date_end} ${var_name}; [ $? -eq 0 ] && exit 0 -./subjob_mars.sh ${date_beg} ${date_end}; [ $? -eq 1 ] && exit 1 -./subjob_cdogrid.sh ${date_beg} ${date_end}; [ $? -eq 1 ] && exit 1 +./subjob_mars.sh ${date_beg} ${date_end} ; [ $? -eq 1 ] && exit 1 +./subjob_cdogrid.sh ${date_beg} ${date_end} ; [ $? -eq 1 ] && exit 1 if [[ -z "${var_name}" || ${var_name} =~ "hpg" ]]; then - ./subjob_ablhpg.sh ${date_beg} ${date_end}; [ $? -eq 1 ] && exit 1 + ./subjob_ablhpg.sh ${date_beg} ${date_end} ; [ $? -eq 1 ] && exit 1 fi ./subjob_ablvint.sh ${date_beg} ${date_end} ${var_name}; [ $? -eq 1 ] && exit 1 if [ -z "${var_name}" ]; then - ./subjob_cdosplit.sh ${date_beg} ${date_end}; [ $? -eq 1 ] && exit 1 + ./subjob_cdosplit.sh ${date_beg} ${date_end} ; [ $? -eq 1 ] && exit 1 fi ./subjob_cdomiss.sh ${date_beg} ${date_end} ${var_name}; [ $? -eq 1 ] && exit 1 ./subjob_ncochunk.sh ${date_beg} ${date_end} ${var_name}; [ $? -eq 1 ] && exit 1 diff --git a/job_ablhpg.sbatch b/job_ablhpg.sbatch index b2f345c..fc2cb00 100755 --- a/job_ablhpg.sbatch +++ b/job_ablhpg.sbatch @@ -13,20 +13,20 @@ set +xv if [ -n "$1" ]; then date=$1; else exit 1; fi -p2D="${SCRATCH_DIR}/NC_F320/${date:0:6}/surf2D_ERA5_L1_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" -p3D="${SCRATCH_DIR}/NC_F320/${date:0:6}/inst3D_ERA5_L107-137_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" -pmsk="/ec/res5/project/mercator/ATMO_FORCINGS/ERA5_ABL50_F320_v1/mask0_ERA5_GLO_TLAUTO_IGNONE_GF320_NNint_20120101.nc" +p2D="${SCRATCH_DIR}/NC_${GRID/N/F}/${date:0:6}/surf2D_L1_${BASE_NAME}_${date}.nc" +p3D="${SCRATCH_DIR}/NC_${GRID/N/F}/${date:0:6}/inst3D_L107-137_${BASE_NAME}_${date}.nc" +pmsk="/ec/res5/project/mercator/ATMO_FORCINGS/ERA5_ABL50_F320_v1/mask0_${BASE_NAME%_ana*}_NNint_20120101.nc" -cp -av ${p2D} ${p3D} ${pmsk} $TMPDIR/. -cp -v /home/ar0s/SRC/NEMO/main/tools/ABL_TOOLS/main_uvg_hpg.exe $TMPDIR/. +time cp -av ${p2D} ${p3D} ${pmsk} $TMPDIR/. +cp -v ${DIR_NEMO}/main_uvg_hpg.exe $TMPDIR/. -sed -e "s/fsurf2D/$(basename ${p2D})/g; s/finst3D/$(basename ${p3D})/g; s/fmask/$(basename ${pmsk})/g; s/fhpg/$(basename ${p3D/inst3D/hpg})/g; s~fdir~$TMPDIR~g" < /home/ar0s/SRC/NEMO/main/tools/ABL_TOOLS/namelist_abl_tools.base > $TMPDIR/namelist_abl_tools.hpg.$date +sed -e "s/fsurf2D/$(basename ${p2D})/g; s/finst3D/$(basename ${p3D})/g; s/fmask/$(basename ${pmsk})/g; s/fhpg/$(basename ${p3D/inst3D/hpg})/g; s~fdir~$TMPDIR~g" < ${DIR_NEMO}/namelist_abl_tools.base > $TMPDIR/namelist_abl_tools.hpg.$date ls -l $TMPDIR cat $TMPDIR/namelist_abl_tools.hpg.$date $TMPDIR/main_uvg_hpg.exe $TMPDIR/namelist_abl_tools.hpg.$date -mv -v $TMPDIR/$(basename ${p3D/inst3D/hpg}) $(dirname ${p3D})/. +time mv -v $TMPDIR/$(basename ${p3D/inst3D/hpg}) $(dirname ${p3D})/. exit 0 diff --git a/job_ablvint.sbatch b/job_ablvint.sbatch index f6ed723..51f5159 100755 --- a/job_ablvint.sbatch +++ b/job_ablvint.sbatch @@ -15,16 +15,16 @@ set +xv if [ -n "$1" ]; then date=$1; else exit 1; fi if [ -n "$2" ]; then var_name=$2; fi -p2D="${SCRATCH_DIR}/NC_F320/${date:0:6}/surf2D_ERA5_L1_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" -p3D="${SCRATCH_DIR}/NC_F320/${date:0:6}/inst3D_ERA5_L107-137_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" -pmsk="/ec/res5/project/mercator/ATMO_FORCINGS/ERA5_ABL50_F320_v1/mask0_ERA5_GLO_TLAUTO_IGNONE_GF320_NNint_20120101.nc" -fabl=$(basename ${p3D/inst3D/abl}) ; fabl=${fabl/L107-137/L50Z10} +p2D="${SCRATCH_DIR}/NC_${GRID/N/F}/${date:0:6}/surf2D_L1_${BASE_NAME}_${date}.nc" +p3D="${SCRATCH_DIR}/NC_${GRID/N/F}/${date:0:6}/inst3D_${VLEVEL}_${BASE_NAME}_${date}.nc" +pmsk="/ec/res5/project/mercator/ATMO_FORCINGS/ERA5_ABL50_F320_v1/mask0_${BASE_NAME%_ana*}_NNint_20120101.nc" +fabl=$(basename ${p3D/inst3D/abl}) ; fabl=${fabl/${VLEVEL}/L50Z10} -cp -av ${p2D} ${p3D} ${pmsk} $TMPDIR/. -if [[ -n "${var_name}" && ${var_name} =~ "hpg" ]] || [ -z "${var_name}" ]; then cp -av ${p3D/inst3D/hpg} $TMPDIR/.; fi -cp -v /home/ar0s/SRC/NEMO/main/tools/ABL_TOOLS/main_vinterp.exe $TMPDIR/. +time cp -av ${p2D} ${p3D} ${pmsk} $TMPDIR/. +if [[ -n "${var_name}" && ${var_name} =~ "hpg" ]] || [ -z "${var_name}" ]; then time cp -av ${p3D/inst3D/hpg} $TMPDIR/.; fi +cp -v ${DIR_NEMO}/main_vinterp.exe $TMPDIR/. -sed -e "s/fsurf2D/$(basename ${p2D})/g; s/finst3D/$(basename ${p3D})/g; s/fmask/$(basename ${pmsk})/g; s/fhpg/$(basename ${p3D/inst3D/hpg})/g; s/fabl/${fabl}/g; s~fdir~$TMPDIR~g" < /home/ar0s/SRC/NEMO/main/tools/ABL_TOOLS/namelist_abl_tools.base > $TMPDIR/namelist_abl_tools.vint.$date +sed -e "s/fsurf2D/$(basename ${p2D})/g; s/finst3D/$(basename ${p3D})/g; s/fmask/$(basename ${pmsk})/g; s/fhpg/$(basename ${p3D/inst3D/hpg})/g; s/fabl/${fabl}/g; s~fdir~$TMPDIR~g" < ${DIR_NEMO}/namelist_abl_tools.base > $TMPDIR/namelist_abl_tools.vint.$date sed -i "s/ln_read_mask = .false./ln_read_mask = .true./g" $TMPDIR/namelist_abl_tools.vint.$date if [ -n "${var_name}" ]; then sed -i "s/ var_name = '',/ var_name = '${var_name}',/g" $TMPDIR/namelist_abl_tools.vint.$date @@ -36,6 +36,7 @@ cat $TMPDIR/namelist_abl_tools.vint.$date $TMPDIR/main_vinterp.exe $TMPDIR/namelist_abl_tools.vint.$date -mv -v $TMPDIR/${var_name:+"${var_name}_"}${fabl} $(dirname ${p3D})/. +ls -l $TMPDIR +time mv -v $TMPDIR/${var_name:+"${var_name}_"}${fabl} $(dirname ${p3D})/. exit 0 diff --git a/job_cdogrid.sbatch b/job_cdogrid.sbatch index 595d9e7..8616f53 100755 --- a/job_cdogrid.sbatch +++ b/job_cdogrid.sbatch @@ -15,11 +15,18 @@ if [ -n "$1" ]; then pinp=$1; else exit 1; fi if [ -n "$2" ]; then pout=$2; else exit 1; fi -cp -av ${pinp} $TMPDIR/. +time cp -av ${pinp} $TMPDIR/. -cdo -v -t ecmwf -z zip -k grid -f nc4 -setgridtype,regular $TMPDIR/$(basename ${pinp}) $TMPDIR/$(basename ${pout}) +if [[ ${GRID:0:1} == "N" ]]; then + cdo -v -t ecmwf -z zip -k grid -f nc4 -setgridtype,regular $TMPDIR/$(basename ${pinp}) $TMPDIR/$(basename ${pout}) +elif [[ ${GRID:0:1} == "F" ]]; then + cdo -v -t ecmwf -z zip -k grid -f nc4 copy $TMPDIR/$(basename ${pinp}) $TMPDIR/$(basename ${pout}) +else + echo "ERROR: ${GRID} grid unsupported" + exit 1 +fi mkdir -pv $(dirname ${pout}) -mv -v $TMPDIR/$(basename ${pout}) ${pout} +time mv -v $TMPDIR/$(basename ${pout}) ${pout} exit 0 diff --git a/job_cdomiss.sbatch b/job_cdomiss.sbatch index 6ab6eb5..a384d03 100755 --- a/job_cdomiss.sbatch +++ b/job_cdomiss.sbatch @@ -16,13 +16,13 @@ set +xv if [ -n "$1" ]; then date=$1; else exit 1; fi if [ -n "$2" ]; then var=$2; else exit 1; fi -d="${SCRATCH_DIR}/NC_F320/${date:0:6}" -f="abl_ERA5_L50Z10_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" +d="${SCRATCH_DIR}/NC_${GRID/N/F}/${date:0:6}" +f="abl_L50Z10_${BASE_NAME}_${date}.nc" -cp -av ${d}/${var}_${f} $TMPDIR/. +time cp -av ${d}/${var}_${f} $TMPDIR/. -cdo -v -P 4 -t ecmwf -z zip -k grid -f nc4 -pack -setmisstodis -setctomiss,9.9692e+36 $TMPDIR/${var}_${f} $TMPDIR/${var}_${f%.nc}_misstodis.nc +cdo -P 4 -t ecmwf -z zip -k grid -f nc4 -pack -setmisstodis -setctomiss,9.9692e+36 $TMPDIR/${var}_${f} $TMPDIR/${var}_${f%.nc}_misstodis.nc -mv -v $TMPDIR/${var}_${f%.nc}_misstodis.nc ${d}/. +time mv -v $TMPDIR/${var}_${f%.nc}_misstodis.nc ${d}/. exit 0 diff --git a/job_cdosplit.sbatch b/job_cdosplit.sbatch index c3489ee..56f1899 100755 --- a/job_cdosplit.sbatch +++ b/job_cdosplit.sbatch @@ -12,16 +12,16 @@ set +xv if [ -n "$1" ]; then date=$1; else exit 1; fi -pabl="${SCRATCH_DIR}/NC_F320/${date:0:6}/abl_ERA5_L50Z10_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" +pabl="${SCRATCH_DIR}/NC_F320/${date:0:6}/abl_L50Z10_${BASE_NAME}_${date}.nc" var_list=( uwnd vwnd uhpg vhpg tpot humi ) -cp -a ${pabl} ${TMPDIR}/. +time cp -a ${pabl} ${TMPDIR}/. cd $TMPDIR; pwd cdo -v splitname,swap $(basename ${pabl}) _$(basename ${pabl%.nc}) ls -l $TMPDIR #mv -v $TMPDIR/{$(tr ' ' ',' <<< ${var_list[*]})}_$(basename ${pabl}) $(dirname ${pabl})/. -mv -v $TMPDIR/????_$(basename ${pabl}) $(dirname ${pabl})/. +time mv -v $TMPDIR/????_$(basename ${pabl}) $(dirname ${pabl})/. exit 0 diff --git a/job_mars.sbatch b/job_mars.sbatch index cbebab5..df84914 100755 --- a/job_mars.sbatch +++ b/job_mars.sbatch @@ -14,7 +14,7 @@ sed -e "s~date_req~${date}~g; s~dir_out~$TMPDIR~g" < ${file_req} > $TMPDIR/$(bas mars $TMPDIR/$(basename ${file_req%.req.base}_${date}.req) -mkdir -pv ${SCRATCH_DIR}/GRIB_N320/${date:0:6} -mv -v $TMPDIR/*_${date}.grib ${SCRATCH_DIR}/GRIB_N320/${date:0:6} +mkdir -pv ${SCRATCH_DIR}/GRIB_${GRID}/${date:0:6} +mv -v $TMPDIR/*_${date}.grib ${SCRATCH_DIR}/GRIB_${GRID}/${date:0:6} exit 0 diff --git a/job_ncochunk.sbatch b/job_ncochunk.sbatch index 7c47a71..99f7b80 100755 --- a/job_ncochunk.sbatch +++ b/job_ncochunk.sbatch @@ -16,13 +16,13 @@ set +xv if [ -n "$1" ]; then date=$1; else exit 1; fi if [ -n "$2" ]; then var=$2; else exit 1; fi -d="${SCRATCH_DIR}/NC_F320/${date:0:6}" -f="${var}_abl_ERA5_L50Z10_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}_misstodis.nc" +d="${SCRATCH_DIR}/NC_${GRID/N/F}/${date:0:6}" +f="${var}_abl_L50Z10_${BASE_NAME}_${date}_misstodis.nc" -cp -av ${d}/${f} $TMPDIR/. +time cp -av ${d}/${f} $TMPDIR/. ncks --4 --dfl_lvl 1 --no_abc -v ${var} --cnk_plc=xpl --cnk_dmn lon,64 --cnk_dmn lat,64 --cnk_dmn time,1 --cnk_dmn jpka,1 $TMPDIR/${f} $TMPDIR/${f%.nc}_cnk64.nc -mv -v $TMPDIR/${f%.nc}_cnk64.nc ${d}/. +time mv -v $TMPDIR/${f%.nc}_cnk64.nc ${d}/. exit 0 diff --git a/mars_inst3D_ana.req.base b/mars_inst3D_ana.req.base index 1ace4e3..630a662 100644 --- a/mars_inst3D_ana.req.base +++ b/mars_inst3D_ana.req.base @@ -35,6 +35,7 @@ retrieve, #levelist = 44/to/60 , # L60 : level 44 correspond to ~3100 m #levelist = 71/to/91 , # L91 : 2006/02/01 06:00 -> 2013/06/25 00:00 levelist = 107/to/137, # L137: 2013/06/25 06:00 -> ongoing + ERA5 + #levelist = 137, # L137: 2013/06/25 06:00 -> ongoing + ERA5 # TIME @@ -84,8 +85,10 @@ retrieve, #area = 7.70/262.0/31.0/296.0, # NANUK #area = 35./0./90./360., - + # GULFSTREAM + #area = 50.0/-90.0/20.0/-30.0, # OUTPUTS - target = "dir_out/inst3D_ERA5_L107-137_GLO_TL[truncation]_IG[intgrid]_G[grid]_ana01h_[date].grib" + target = "dir_out/inst3D_L107-137_ERA5_GLO_TL[truncation]_IG[intgrid]_G[grid]_ana01h_[date].grib" + #target = "dir_out/inst3D_L107-137_ERA5_NANUK_TL[truncation]_IG[intgrid]_G[grid]_ana01h_[date].grib" diff --git a/mars_surf2D_ana.req.base b/mars_surf2D_ana.req.base index 6ef2130..28cc3f7 100644 --- a/mars_surf2D_ana.req.base +++ b/mars_surf2D_ana.req.base @@ -1,4 +1,4 @@ -# + # get ?h-analysis for instantaneous surface 2D fields ( Z, log(SP)) # # GRIB PARAMETERS DATABASE: https://codes.ecmwf.int/grib/param-db/ @@ -13,7 +13,6 @@ retrieve, # MODEL expver = 0001, - # IFS #class = od, # ERAI @@ -44,10 +43,16 @@ retrieve, # SPECTRAL GRID - #truncation = NONE, + #truncation = AUTO = NONE = 639, + # ERAI + #truncation = 255, + # ERA5 + #truncation = 639, truncation = AUTO, - #resol = AV, - # ERAI (T255) + + # INTERMEDIATE SPATIAL GRID + #intgrid = AUTO = NONE, + # ERAI #intgrid = N128, # ERA5 (T639) #intgrid = N320, @@ -78,8 +83,11 @@ retrieve, #area = 7.70/262.0/31.0/296.0, # NANUK #area = 35./0./90./360., + # GULFSTREAM + #area = 50.0/-90.0/20.0/-30.0, # OUTPUTS - target = "dir_out/surf2D_ERA5_L1_GLO_TL[truncation]_IG[intgrid]_G[grid]_ana01h_[date].grib" + target = "dir_out/surf2D_L1_ERA5_GLO_TL[truncation]_IG[intgrid]_G[grid]_ana01h_[date].grib" + #target = "dir_out/surf2D_L1_ERA5_NANUK_TL[truncation]_IG[intgrid]_G[grid]_ana01h_[date].grib" diff --git a/move_to_perm.sh b/move_to_perm.sh index be47c65..5ceaebe 100755 --- a/move_to_perm.sh +++ b/move_to_perm.sh @@ -20,7 +20,7 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do # DIRECTORIES & FILES d="${SCRATCH_DIR}/NC_F320/${ym}" - f="abl_ERA5_L50Z10_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}_misstodis_cnk64.nc" + f="abl_L50Z10_${BASE_NAME}_${date}_misstodis_cnk64.nc" for v in ${var_list[@]}; do @@ -32,7 +32,7 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do mkdir -pv ${DIR_SAVE}/${v^^} mv -v ${d}/${finp} ${DIR_SAVE}/${v^^}/${fout} else - echo "MOVE_TO_PERM ERROR: input files not found"; exit 1 + echo "-MOVE_TO_PERM: ERROR: input files not found"; exit 1 fi fi @@ -45,13 +45,13 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do file_nb=$( eval "ls ${DIR_SAVE}/${var_list[*]^^}/ERA5_L50Z10_${var_list[*]^^}_1H_extrap_y${date:0:4}m${date:4:2}d{${date_beg:6:2}..${date_end:6:2}}.nc 2>/dev/null" | wc -l ) fi if [ $((nbday*${#var_list[@]})) -eq ${file_nb} ]; then - echo "MOVE_TO_PERM OK" - eval "rm -v ${SCRATCH_DIR}/NC_F320/${ym}/*{${date_beg}..${date_end}}*.nc" - eval "rm -v ${SCRATCH_DIR}/GRIB_N320/${ym}/*{${date_beg}..${date_end}}*.grib" - echo "CLEANING OK" + echo "-MOVE_TO_PERM: OK" + eval "rm -v ${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}/*{${date_beg}..${date_end}}*.nc" + eval "rm -v ${SCRATCH_DIR}/GRIB_${GRID}/${ym}/*{${date_beg}..${date_end}}*.grib" + echo "-CLEANING: OK" exit 0 else - echo "MOVE_TO_PERM ERROR" + echo "-MOVE_TO_PERM: ERROR" exit 1 fi fi diff --git a/namelist_abl_tools.base b/namelist_abl_tools.base new file mode 100644 index 0000000..04002a4 --- /dev/null +++ b/namelist_abl_tools.base @@ -0,0 +1,53 @@ +: +:----------------------------------------------------------------------------- +: Atmospheric Boundary Layer preprocessing tool +:----------------------------------------------------------------------------- +: +&nml_dom + jpka = 50, ! ABL vertical levels number + hmax = 2000., ! ABL last level altitude + theta_s = 2., ! vertical grid stretching parameters + hc = 100., ! + ln_impose_z1 = .true., ! force ABL first level altitude + z1 = 10., ! ABL firt level imposed altitude [m] +/ + +&nml_opt + ptemp_method = 1 , ! potential temperature computation method + ln_slp_smth = .false. , ! smooth slp and ghw at high latitudes only + ln_drw_smth = .false. , ! smooth after drowning + ln_slp_log = .true. , ! read log(slp) + ln_read_zsurf = .true. , ! read surface geopotential + ln_hpg_frc = .true. , ! compute horizontal pressure gradient + ln_geo_wnd = .false. , ! compute geostrophic wind + ln_c1d = .false. , ! 1D-case + ln_read_mask = .false. , ! read mask file + ln_lsm_land = .false. , ! inverse land & sea masks + ln_perio_latbc = .true. , ! periodic lateral boundary conditions +/ + +&nml_fld + cn_dir = 'fdir', + mask_var = 'LSM', + file_m = 'fmask', + file_u = 'finst3D', + file_v = 'finst3D', + file_t = 'finst3D', + file_q = 'finst3D', + file_p = 'fsurf2D', + file_z = 'fsurf2D', + file_geos = 'fhpg', + file_hpg = 'fhpg', +/ + +&nml_out + grd_file = 'domcfg_abl_L50Z10.nc', + abl_file = 'fabl', + drwn_file = '', + var_name = '', +/ + +&nml_c1d + iloc = 283, + jloc = 52, +/ diff --git a/subjob_ablhpg.sh b/subjob_ablhpg.sh index ba3dc78..17ca76c 100755 --- a/subjob_ablhpg.sh +++ b/subjob_ablhpg.sh @@ -15,9 +15,9 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do ym=${date:0:6} # DIRECTORIES & FILES - p2D="${SCRATCH_DIR}/NC_F320/${ym}/surf2D_ERA5_L1_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" - p3D="${SCRATCH_DIR}/NC_F320/${ym}/inst3D_ERA5_L107-137_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" - pmsk="${SCRATCH_DIR}/NC_F320/${ym}/mask0_ERA5_GLO_TLAUTO_IGNONE_GF320_NNint_20120101.nc" + p2D="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}/surf2D_L1_${BASE_NAME}_${date}.nc" + p3D="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}/inst3D_L107-137_${BASE_NAME}_${date}.nc" + pmsk="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}/mask0_${BASE_NAME%_ana*}_NNint_20120101.nc" f2D=$(basename $p2D) ; d2D=$(dirname $p2D) f3D=$(basename $p3D) ; d3D=$(dirname $p3D) fmsk=$(basename $pmsk) ; dmsk=$(dirname $pmsk) @@ -27,9 +27,9 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do if [[ -s ${p2D} && -s ${p3D} ]]; then while [ $(squeue -u $USER -h -t pending,running -r | wc -l) -ge 90 ]; do echo "sleeping..."; sleep 10; done - sbatch --job-name=ablhpg_${date} --export=SCRATCH_DIR=${SCRATCH_DIR} /home/ar0s/PROD_ERA5_ABL/job_ablhpg.sbatch ${date} + sbatch --job-name=ablhpg_${date} --export=SCRATCH_DIR=${SCRATCH_DIR},BASE_NAME=${BASE_NAME},DIR_NEMO=${DIR_NEMO},GRID=${GRID} ${DIR_SRC}/job_ablhpg.sbatch ${date} else - echo "ABL_HPG ERROR: input files not found"; exit 1 + echo "-ABL_HPG: ERROR: input files not found"; exit 1 fi fi @@ -39,9 +39,9 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do if [ ${date} -eq ${date_end} ]; then file_nb=$( eval "ls ${d2D}/${fhpg/${date}.nc/${ym}{${date_beg:6:2}..${date_end:6:2}}}.nc 2>/dev/null" | wc -l ) if [ ${nbday} -eq ${file_nb} ]; then - echo "ABL_HPG OK" + echo "-ABL_HPG: OK" else - echo "ABL_HPG ERROR"; exit 1 + echo "-ABL_HPG: ERROR"; exit 1 fi fi diff --git a/subjob_ablvint.sh b/subjob_ablvint.sh index 9363d42..cb652ca 100755 --- a/subjob_ablvint.sh +++ b/subjob_ablvint.sh @@ -9,6 +9,7 @@ date_end=$2 nbday=$(( ($(date -d "${date_end}H00 + 1 day" +%s) - $(date -d "${date_beg}H00" +"%s") )/(60*60*24) )) if [ -n "$3" ]; then var_name=$3; fi + for d in $(seq -f "%02g" 0 $((nbday-1))); do # TIME @@ -16,20 +17,20 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do ym=${date:0:6} # DIRECTORIES & FILES - p2D="${SCRATCH_DIR}/NC_F320/${ym}/surf2D_ERA5_L1_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" - p3D="${SCRATCH_DIR}/NC_F320/${ym}/inst3D_ERA5_L107-137_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" - pmsk="${SCRATCH_DIR}/NC_F320/${ym}/mask0_ERA5_GLO_TLAUTO_IGNONE_GF320_NNint_20120101.nc" + p2D="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}/surf2D_L1_${BASE_NAME}_${date}.nc" + p3D="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}/inst3D_${VLEVEL}_${BASE_NAME}_${date}.nc" + pmsk="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}/mask0_${BASE_NAME%_ana*}_NNint_20120101.nc" f2D=$(basename $p2D) ; d2D=$(dirname $p2D) f3D=$(basename $p3D) ; d3D=$(dirname $p3D) fmsk=$(basename $pmsk) ; dmsk=$(dirname $pmsk) - fabl=${f3D/inst3D/abl} ; fabl=${fabl/L107-137/L50Z10} + fabl=${f3D/inst3D/abl} ; fabl=${fabl/${VLEVEL}/L50Z10} fhpg=${f3D/inst3D/hpg} if [ ! -s ${d2D}/${var_name:+"${var_name}_"}${fabl} ]; then if [[ -s ${p2D} && -s ${p3D} ]] && [[ -s ${d2D}/${fhpg} || -n "${var_name}" ]]; then while [ $(squeue -u $USER -h -t pending,running -r | wc -l) -ge 90 ]; do echo "sleeping..."; sleep 10; done - sbatch --job-name=ablvint${var_name:+"_${var_name}"}_${date} --export=SCRATCH_DIR=${SCRATCH_DIR} /home/ar0s/PROD_ERA5_ABL/job_ablvint.sbatch ${date} ${var_name} + sbatch --job-name=ablvint${var_name:+"_${var_name}"}_${date} --export=SCRATCH_DIR=${SCRATCH_DIR},VLEVEL=${VLEVEL},BASE_NAME=${BASE_NAME},DIR_NEMO=${DIR_NEMO},GRID=${GRID} ${DIR_SRC}/job_ablvint.sbatch ${date} ${var_name} else echo "ABL_VINT ERROR: input files not found"; exit 1 fi @@ -41,13 +42,14 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do if [ ${date} -eq ${date_end} ]; then file_nb=$( eval "ls ${d2D}/${var_name:+"${var_name}_"}${fabl/${date}.nc/${ym}{${date_beg:6:2}..${date_end:6:2}}}.nc 2>/dev/null" | wc -l ) if [ ${nbday} -eq ${file_nb} ]; then - echo "ABL_VINT OK" + echo "-ABL_VINT: OK" else - echo "ABL_VINT ERROR" + echo "-ABL_VINT: ERROR" exit 1 fi fi done + exit 0 diff --git a/subjob_cdogrid.sh b/subjob_cdogrid.sh index 3473923..64c3755 100755 --- a/subjob_cdogrid.sh +++ b/subjob_cdogrid.sh @@ -15,11 +15,11 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do ym=${date:0:6} # DIRECTORIES & FILES - p2D="${SCRATCH_DIR}/GRIB_N320/${ym}/surf2D_ERA5_L1_GLO_TLAUTO_IGNONE_GN320_ana01h_${date}.grib" - p3D="${SCRATCH_DIR}/GRIB_N320/${ym}/inst3D_ERA5_L107-137_GLO_TLAUTO_IGNONE_GN320_ana01h_${date}.grib" - dout="${SCRATCH_DIR}/NC_F320/${ym}" ; mkdir -p ${dout} - f2D=$(basename ${p2D/GN320/GF320reg}) ; f2D=${f2D%.grib}.nc - f3D=$(basename ${p3D/GN320/GF320reg}) ; f3D=${f3D%.grib}.nc + p2D="${SCRATCH_DIR}/GRIB_${GRID}/${ym}/surf2D_L1_${BASE_NAME/_GF/_GN}_${date}.grib" + p3D="${SCRATCH_DIR}/GRIB_${GRID}/${ym}/inst3D_${VLEVEL}_${BASE_NAME/_GF/_GN}_${date}.grib" + dout="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}" ; mkdir -p ${dout} + f2D="surf2D_L1_${BASE_NAME}_${date}.nc" + f3D="inst3D_${VLEVEL}_${BASE_NAME}_${date}.nc" d2D=$(dirname $p2D) ; d3D=$(dirname $p3D) if [ ! -s ${dout}/${f2D} ]; then @@ -28,9 +28,9 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do if [ -s ${p2D} ]; then while [ $(squeue -u $USER -h -t pending,running -r | wc -l) -ge 90 ]; do echo "sleeping..."; sleep 10; done - sbatch --job-name=cdogrid2D_${date} --export=SCRATCH_DIR=${SCRATCH_DIR} /home/ar0s/PROD_ERA5_ABL/job_cdogrid.sbatch ${p2D} ${dout}/${f2D} + sbatch --job-name=cdogrid2D_${date} --export=SCRATCH_DIR=${SCRATCH_DIR},GRID=${GRID} ${DIR_SRC}/job_cdogrid.sbatch ${p2D} ${dout}/${f2D} else - echo "CDO_GRID2D ERROR: input files not found"; exit 1 + echo "-CDO_GRID2D: ERROR: input files not found"; exit 1 fi fi @@ -38,12 +38,12 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do if [ ! -s ${dout}/${f3D} ]; then mkdir -pv ${dout} - + if [ -s ${p3D} ]; then while [ $(squeue -u $USER -h -t pending,running -r | wc -l) -ge 90 ]; do echo "sleeping..."; sleep 10; done - sbatch --job-name=cdogrid3D_${date} --export=SCRATCH_DIR=${SCRATCH_DIR} /home/ar0s/PROD_ERA5_ABL/job_cdogrid.sbatch ${p3D} ${dout}/${f3D} + sbatch --job-name=cdogrid3D_${date} --export=SCRATCH_DIR=${SCRATCH_DIR},GRID=${GRID} ${DIR_SRC}/job_cdogrid.sbatch ${p3D} ${dout}/${f3D} else - echo "CDO_GRID3D ERROR: input files not found"; exit 1 + echo "-CDO_GRID3D: ERROR: input files not found"; exit 1 fi fi @@ -53,15 +53,15 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do if [ ${date} -eq ${date_end} ]; then file_nb=$( eval "ls ${dout}/${f2D/${date}.nc/${ym}{${date_beg:6:2}..${date_end:6:2}}}.nc 2>/dev/null" | wc -l ) if [ ${nbday} -eq ${file_nb} ]; then - echo "CDO_GRID 2D OK" + echo "-CDO_GRID2D: OK" else - echo "ERROR CDO_GRID 2D"; exit 1 + echo "-CDO_GRID2D: ERROR"; exit 1 fi file_nb=$( eval "ls ${dout}/${f3D/${date}.nc/${ym}{${date_beg:6:2}..${date_end:6:2}}}.nc 2>/dev/null" | wc -l ) if [ ${nbday} -eq ${file_nb} ]; then - echo "CDO_GRID 3D OK" + echo "-CDO_GRID3D: OK" else - echo "ERROR CDO_GRID 3D"; exit 1 + echo "-CDO_GRID3D: ERROR"; exit 1 fi fi diff --git a/subjob_cdomiss.sh b/subjob_cdomiss.sh index a74506c..18ec82f 100755 --- a/subjob_cdomiss.sh +++ b/subjob_cdomiss.sh @@ -20,8 +20,8 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do ym=${date:0:6} # DIRECTORIES & FILES - d="${SCRATCH_DIR}/NC_F320/${ym}" - f="abl_ERA5_L50Z10_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" + d="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}" + f="abl_L50Z10_${BASE_NAME}_${date}.nc" for v in ${var_list[@]}; do @@ -31,9 +31,9 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do if [ ! -s ${d}/${fout} ]; then if [ -s ${d}/${finp} ]; then while [ $(squeue -u $USER -h -t pending,running -r | wc -l) -ge 90 ]; do echo "sleeping..."; sleep 10; done - sbatch --job-name=cdomiss_${date} --export=SCRATCH_DIR=${SCRATCH_DIR} ${DIR_SRC}/job_cdomiss.sbatch ${date} ${v} + sbatch --job-name=cdomiss_${date} --export=SCRATCH_DIR=${SCRATCH_DIR},BASE_NAME=${BASE_NAME},GRID=${GRID} ${DIR_SRC}/job_cdomiss.sbatch ${date} ${v} else - echo "CDO_MISS ERROR: input files not found"; exit 1 + echo "-CDO_MISS: ERROR: input files not found"; exit 1 fi fi @@ -48,9 +48,9 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do file_nb=$( eval "ls ${d}/${var_list[*]}_${f/${date}.nc/${ym}{${date_beg:6:2}..${date_end:6:2}}}_misstodis.nc 2>/dev/null" | wc -l ) fi if [ $((nbday*${#var_list[@]})) -eq ${file_nb} ]; then - echo "CDO_MISS OK" + echo "-CDO_MISS: OK" else - echo "CDO_MISS ERROR" + echo "-CDO_MISS: ERROR" exit 1 fi fi diff --git a/subjob_cdosplit.sh b/subjob_cdosplit.sh index ab50bc8..feea2a9 100755 --- a/subjob_cdosplit.sh +++ b/subjob_cdosplit.sh @@ -23,7 +23,7 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do ym=${date:0:6} # DIRECTORIES & FILES - pabl="${SCRATCH_DIR}/NC_F320/${ym}/abl_ERA5_L50Z10_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" + pabl="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}/abl_L50Z10_${BASE_NAME}_${date}.nc" fabl=$(basename $pabl) dabl=$(dirname $pabl) @@ -33,9 +33,9 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do if [ -s ${pabl} ]; then while [ $(squeue -u $USER -h -t pending,running -r | wc -l) -ge 90 ]; do echo "sleeping..."; sleep 10; done - sbatch --job-name=cdosplit_${date} --export=SCRATCH_DIR=${SCRATCH_DIR} ${DIR_SRC}/job_cdosplit.sbatch ${date} + sbatch --job-name=cdosplit_${date} --export=SCRATCH_DIR=${SCRATCH_DIR},BASE_NAME=${BASE_NAME} ${DIR_SRC}/job_cdosplit.sbatch ${date} else - echo "CDO_SPLIT ERROR: input files not found"; exit 1 + echo "-CDO_SPLIT: ERROR: input files not found"; exit 1 fi fi @@ -45,9 +45,9 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do if [ ${date} -eq ${date_end} ]; then file_nb=$( eval "ls ${dabl}/{$(tr ' ' ',' <<< ${var_list[*]})}_${fabl/${date}.nc/${ym}{${date_beg:6:2}..${date_end:6:2}}}.nc 2>/dev/null" | wc -l ) if [ $((nbday*var_nb)) -eq ${file_nb} ]; then - echo "CDO_SPLIT OK" + echo "-CDO_SPLIT: OK" else - echo "CDO_SPLIT ERROR" + echo "-CDO_SPLIT: ERROR" exit 1 fi fi diff --git a/subjob_mars.sh b/subjob_mars.sh index 528510f..78cbd93 100755 --- a/subjob_mars.sh +++ b/subjob_mars.sh @@ -15,22 +15,22 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do ym=${date:0:6} # DIRECTORIES & FILES - dout="${SCRATCH_DIR}/GRIB_N320/${ym}" - dreg="${SCRATCH_DIR}/NC_F320/${ym}" - f3D="inst3D_ERA5_L*_GLO_TLAUTO_IGNONE_GN320_ana01h_${date}.grib" - f2D="surf2D_ERA5_L*_GLO_TLAUTO_IGNONE_GN320_ana01h_${date}.grib" - n3D="inst3D_ERA5_L*_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" - n2D="surf2D_ERA5_L*_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}.nc" + dout="${SCRATCH_DIR}/GRIB_${GRID}/${ym}" + dreg="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}" + f3D="inst3D_${VLEVEL}_${BASE_NAME/_GF/_GN}_${date}.grib" + f2D="surf2D_L1_${BASE_NAME/_GF/_GN}_${date}.grib" + n3D="inst3D_${VLEVEL}_${BASE_NAME}_${date}.nc" + n2D="surf2D_L1_${BASE_NAME}_${date}.nc" # SUBMIT JOB if [ ! -s ${dout}/${f3D} ] && [ ! -s ${dreg}/${n3D} ]; then while [ $(squeue -u $USER -h -t pending,running -r | wc -l) -ge 90 ]; do echo "sleeping..."; sleep 10; done - sbatch --job-name=mars_inst3D_${date} --export=SCRATCH_DIR=${SCRATCH_DIR} ${DIR_SRC}/job_mars.sbatch ${DIR_SRC}/mars_inst3D_ana.req.base ${date} + sbatch --job-name=mars_inst3D_${date} --export=SCRATCH_DIR=${SCRATCH_DIR},GRID=${GRID} ${DIR_SRC}/job_mars.sbatch ${DIR_SRC}/mars_inst3D_ana.req.base ${date} fi if [ ! -s ${dout}/${f2D} ] && [ ! -s ${dreg}/${n2D} ]; then while [ $(squeue -u $USER -h -t pending,running -r | wc -l) -ge 90 ]; do echo "sleeping..."; sleep 10; done - sbatch --job-name=mars_surf2D_${date} --export=SCRATCH_DIR=${SCRATCH_DIR} ${DIR_SRC}/job_mars.sbatch ${DIR_SRC}/mars_surf2D_ana.req.base ${date} + sbatch --job-name=mars_surf2D_${date} --export=SCRATCH_DIR=${SCRATCH_DIR},GRID=${GRID} ${DIR_SRC}/job_mars.sbatch ${DIR_SRC}/mars_surf2D_ana.req.base ${date} fi # WAIT FOR THE LAST DATE TO FINISH @@ -41,11 +41,11 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do fnb=$( eval "ls ${dout}/${f3D/${date}.grib/${ym}{${date_beg:6:2}..${date_end:6:2}}}.grib 2>/dev/null" | wc -l ) nnb=$( eval "ls ${dreg}/${n3D/${date}.nc/${ym}{${date_beg:6:2}..${date_end:6:2}}}.nc 2>/dev/null" | wc -l ) - if [[ ${nbday} -eq ${fnb} || ${nbday} -eq ${nnb} ]]; then echo "MARS INST3D OK"; else echo "MARS INST3D ERROR"; exit 1; fi + if [[ ${nbday} -eq ${fnb} || ${nbday} -eq ${nnb} ]]; then echo "-MARS_INST3D: OK"; else echo "-MARS_INST3D: ERROR"; exit 1; fi fnb=$( eval "ls ${dout}/${f2D/${date}.grib/${ym}{${date_beg:6:2}..${date_end:6:2}}}.grib 2>/dev/null" | wc -l ) nnb=$( eval "ls ${dreg}/${n2D/${date}.nc/${ym}{${date_beg:6:2}..${date_end:6:2}}}.nc 2>/dev/null" | wc -l ) - if [[ ${nbday} -eq ${fnb} || ${nbday} -eq ${nnb} ]]; then echo "MARS SURF2D OK"; else echo "MARS SURF2D ERROR"; exit 1; fi + if [[ ${nbday} -eq ${fnb} || ${nbday} -eq ${nnb} ]]; then echo "-MARS_SURF2D: OK"; else echo "-MARS_SURF2D: ERROR"; exit 1; fi fi diff --git a/subjob_ncochunk.sh b/subjob_ncochunk.sh index b5c199e..4f81fd7 100755 --- a/subjob_ncochunk.sh +++ b/subjob_ncochunk.sh @@ -20,8 +20,8 @@ for d in $(seq -f "%02g" 0 $((nbday-1))); do ym=${date:0:6} # DIRECTORIES & FILES - d="${SCRATCH_DIR}/NC_F320/${ym}" - f="abl_ERA5_L50Z10_GLO_TLAUTO_IGNONE_GF320reg_ana01h_${date}_misstodis.nc" + d="${SCRATCH_DIR}/NC_${GRID/N/F}/${ym}" + f="abl_L50Z10_${BASE_NAME}_${date}_misstodis.nc" for v in ${var_list[@]}; do @@ -31,9 +31,9 @@ for v in ${var_list[@]}; do if [ ! -s ${d}/${fout} ]; then if [ -s ${d}/${finp} ]; then while [ $(squeue -u $USER -h -t pending,running -r | wc -l) -ge 90 ]; do echo "sleeping..."; sleep 10; done - sbatch --job-name=ncochunk_${date} --export=SCRATCH_DIR=${SCRATCH_DIR} /home/ar0s/PROD_ERA5_ABL/job_ncochunk.sbatch ${date} ${v} + sbatch --job-name=ncochunk_${date} --export=SCRATCH_DIR=${SCRATCH_DIR},BASE_NAME=${BASE_NAME},GRID=${GRID} ${DIR_SRC}/job_ncochunk.sbatch ${date} ${v} else - echo "NCO_CHUNK ERROR: input files not found"; exit 1 + echo "-NCO_CHUNK: ERROR: input files not found"; exit 1 fi fi @@ -49,9 +49,9 @@ if [ ${date} -eq ${date_end} ]; then file_nb=$( eval "ls ${d}/${var_list[*]}_${fall} 2>/dev/null" | wc -l ) fi if [ $((nbday*${#var_list[@]})) -eq ${file_nb} ]; then - echo "NCO_CHUNK OK" + echo "-NCO_CHUNK: OK" else - echo "NCO_CHUNK ERROR" + echo "-NCO_CHUNK: ERROR" exit 1 fi fi -- GitLab