From db4bcf4469813aee1aaaf8dd0ebc92c95e3f1924 Mon Sep 17 00:00:00 2001 From: Joao Silva Date: Fri, 12 Jun 2026 22:32:38 -0300 Subject: [PATCH 1/5] new features: regional mode and ERA5 --- README.md | 5 + scripts/2.pre_processing.bash | 72 +++-- scripts/3.run_model.bash | 59 ++-- scripts/4.run_post.bash | 37 ++- scripts/make_degrib_ERA5.bash | 275 ++++++++++++++++++ ...{make_degrib.bash => make_degrib_GFS.bash} | 144 +++++++-- scripts/make_initatmos.bash | 10 +- scripts/make_lbcs.bash | 188 ++++++++++++ scripts/make_template.bash | 49 +++- .../namelists/namelist.atmosphere.TEMPLATE | 2 +- .../namelists/namelist.init_atmosphere.LBCS | 48 +++ .../namelist.init_atmosphere.TEMPLATE | 3 +- scripts/namelists/namelist.wps.TEMPLATE | 4 +- scripts/namelists/streams.atmosphere.TEMPLATE | 7 + .../namelists/streams.init_atmosphere.LBCS | 20 ++ scripts/setenv.bash | 4 + scripts/stools/setenv_PBS_ian_intel.bash | 7 +- 17 files changed, 835 insertions(+), 99 deletions(-) create mode 100755 scripts/make_degrib_ERA5.bash rename scripts/{make_degrib.bash => make_degrib_GFS.bash} (62%) create mode 100755 scripts/make_lbcs.bash create mode 100755 scripts/namelists/namelist.init_atmosphere.LBCS create mode 100755 scripts/namelists/streams.init_atmosphere.LBCS diff --git a/README.md b/README.md index 9a984fc..c66cd8f 100755 --- a/README.md +++ b/README.md @@ -2,6 +2,11 @@ ## History +**Develop** + +- New functionality for Regional simulations. +- Option to use ERA5 data as an initial condition. + **1.4.0** - Compatibility with MONAN 1.4.3-rc. - Support for multi-environment: 'Jaci' supercomputer (intel and gnu compilers and PBS scheduler) and 'Egeon' cluster (gnu compiler and SLURM scheduler). diff --git a/scripts/2.pre_processing.bash b/scripts/2.pre_processing.bash index baba5e6..9cc8a0b 100755 --- a/scripts/2.pre_processing.bash +++ b/scripts/2.pre_processing.bash @@ -25,7 +25,7 @@ then echo "" echo "${0} EXP_NAME/OP RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS" + echo "EXP_NAME :: Forcing: GFS or ERA5" echo " :: Others options to be added later..." echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo " 40962 (120 km)" @@ -52,7 +52,7 @@ echo "---- Pre Processing ----" echo "" -# Standart directories variables:--------------------------------------- +# Standard directories variables:--------------------------------------- DIRHOMES=${DIR_SCRIPTS}/scripts_CD-CT; mkdir -p ${DIRHOMES} DIRHOMED=${DIR_DADOS}/scripts_CD-CT; mkdir -p ${DIRHOMED} SCRIPTS=${DIRHOMES}/scripts; mkdir -p ${SCRIPTS} @@ -80,8 +80,6 @@ final_date=${yyyymmddhhf:0:4}-${yyyymmddhhf:4:2}-${yyyymmddhhf:6:2}_${yyyymmddhh export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRUN} #------------------------------------------------------- - - echo -e "${GREEN}==>${NC} Scripts_CD-CT last commit: \n" git log | head -1 @@ -95,31 +93,63 @@ then ln -sf ${DIRDADOS}/MONAN_datain/datain/WPS_GEOG ${DATAIN} fi - # Creating the x1.${RES}.static.nc file once, if does not exist yet:--------------- -if [ ! -s ${DATAIN}/fixed/x1.${RES}.static.nc ] -then - echo -e "${GREEN}==>${NC} Creating static.bash for submiting init_atmosphere to create x1.${RES}.static.nc...\n" - time ./make_static.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} +if [[ $EXP == "GFS" || $EXP == "ERA5" ]]; then + if [ ! -s ${DATAIN}/fixed/x1.${RES}.static.nc ] + then + echo -e "${GREEN}==>${NC} Creating static.bash for submiting init_atmosphere to create x1.${RES}.static.nc...\n" + time ./make_static.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} + else + echo -e "${GREEN}==>${NC} File x1.${RES}.static.nc already exist in ${DATAIN}/fixed.\n" + fi else - echo -e "${GREEN}==>${NC} File x1.${RES}.static.nc already exist in ${DATAIN}/fixed.\n" + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} Static phase fails! Please select EXP=GFS or EXP=ERA5.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 fi -#---------------------------------------------------------------------------------- +#---------------------------------------------------------------------------------- # Degrib phase:--------------------------------------------------------------------- -echo -e "${GREEN}==>${NC} Running Degrib:\n" -time ./make_degrib.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} +if [[ ${EXP} == "GFS" ]] +then + echo -e "${GREEN}==>${NC} Submitting Degrib for GFS data...\n" + time ./make_degrib_GFS.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} +elif [[ ${EXP} == "ERA5" ]] +then + echo -e "${GREEN}==>${NC} Submitting Degrib for ERA5 data...\n" + time ./make_degrib_ERA5.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} Degrib phase fails! Please select EXP=GFS or EXP=ERA5.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi #---------------------------------------------------------------------------------- - - - # Init Atmosphere phase:------------------------------------------------------------ -echo -e "${GREEN}==>${NC} Running Init Atmosphere...\n" -time ./make_initatmos.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} -#---------------------------------------------------------------------------------- - - +if [[ $EXP == "GFS" || $EXP == "ERA5" ]]; then + echo -e "${GREEN}==>${NC} Submitting Init Atmosphere for real case...\n" + time ./make_initatmos.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} Init Atmosphere phase fails! Please select EXP=GFS or EXP=ERA5.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi +# LBCs phase:------------------------------------------------------------ +if [[ $MODERUN == "R" ]]; then + echo -e "${GREEN}==>${NC} Regional simulation: submitting Init Atmosphere to generate lateral boundary conditions...\n" + time ./make_lbcs.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} +elif [[ $MODERUN == "G" ]]; then + echo -e "${GREEN}==>${NC} Global simulation: no need for lateral boundary conditions.\n" +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} LBCs phase fails! Please select MODERUN=R or G.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi +#---------------------------------------------------------------------------------- diff --git a/scripts/3.run_model.bash b/scripts/3.run_model.bash index a5713dc..7f5ae8c 100755 --- a/scripts/3.run_model.bash +++ b/scripts/3.run_model.bash @@ -8,10 +8,10 @@ umask 022 # # Performs the following tasks: # -# o VCheck all input files before -# o Creates the submition script +# o Check all input files before +# o Creates the submission script # o Submit the model -# o Veriffy all files generated +# o Verify all files generated # # #-----------------------------------------------------------------------------# @@ -23,7 +23,7 @@ then echo "" echo "${0} [EXP_NAME/OP] RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS" + echo "EXP_NAME :: Forcing: GFS or ERA5" echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" echo "FCST :: Forecast hours, e.g.: 24 or 36, etc." @@ -89,30 +89,49 @@ printf -v t_strout "%02d:%02d:%02d" "$h" "$m" "$s" # From now on, CONFI_LEN_DISP becames cte = 0.0, pickin up this value from static file. # Calculating default parameters for different resolutions -if [ $RES -eq 1024002 ]; then #24Km - CONFIG_DT=150.0 - CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 2621442 ]; then #15Km - CONFIG_DT=90.0 - CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 40962 ]; then #120Km +if [ $RES -eq 40962 ]; then #120Km CONFIG_DT=600.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 163842 ]; then #60Km +elif [ $RES -eq 163842 ]; then #60Km CONFIG_DT=300.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 655362 ]; then #30Km +elif [ $RES -eq 655362 ]; then #30Km CONFIG_DT=150.0 CONFIG_CONV_INTERVAL="00:15:00" +elif [ $RES -eq 1024002 ]; then #24Km + CONFIG_DT=150.0 + CONFIG_CONV_INTERVAL="00:15:00" +elif [ $RES -eq 2621442 ]; then #15Km + CONFIG_DT=90.0 + CONFIG_CONV_INTERVAL="00:15:00" elif [ $RES -eq 5898242 ]; then #10Km CONFIG_DT=60.0 CONFIG_CONV_INTERVAL="00:15:00" +elif [ $RES -eq 23592962 ]; then #5km + CONFIG_DT=30.0 + CONFIG_CONV_INTERVAL="00:15:00" elif [ $RES -eq 65536002 ]; then #3Km CONFIG_DT=18.0 CONFIG_CONV_INTERVAL="00:15:00" +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} [${0}] Simulation parameters for resolution $RES have not been set! Edit them in '3.run_model.bash'.\n" + exit -1 fi #------------------------------------------------------- +# Setting configuration to apply or not lateral boundary conditions +if [[ $MODERUN == "R" ]]; then + APPLY_LBCS=true +elif [[ $MODERUN == "G" ]]; then + APPLY_LBCS=false +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} Atmosphere phase fails! Please select MODERUN=R (Regional) or MODERUN=G (Global) in 'setenv.bash' so that MONAN knows whether to read or not lateral boundary conditions.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi +#------------------------------------------------------- # Calculating final forecast dates in model namelist format: DD_HH:MM:SS # using: start_date(yyyymmdd) + FCST(hh) : @@ -139,7 +158,7 @@ then fi -files_needed=("${SCRIPTS}/namelists/stream_list.atmosphere.output" ""${SCRIPTS}/namelists/stream_list.atmosphere.diagnostics${VARTABLE} "${SCRIPTS}/namelists/stream_list.atmosphere.surface" "${EXECS}/atmosphere_model" "${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc" "${DATAIN}/fixed/Vtable.GFS") +files_needed=("${SCRIPTS}/namelists/stream_list.atmosphere.output" ""${SCRIPTS}/namelists/stream_list.atmosphere.diagnostics${VARTABLE} "${SCRIPTS}/namelists/stream_list.atmosphere.surface" "${EXECS}/atmosphere_model" "${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc" "${DATAIN}/fixed/Vtable.${EXP}") for file in "${files_needed[@]}" do if [ ! -s "${file}" ] @@ -157,16 +176,18 @@ cp -f ${DATAIN}/fixed/*DATA ${DIRRUN} cp -f ${DATAIN}/fixed/x1.${RES}.static.nc ${DIRRUN} cp -f ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ${DIRRUN} cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ${DIRRUN} -cp -f ${DATAIN}/fixed/Vtable.GFS ${DIRRUN} +cp -f ${DATAIN}/fixed/Vtable.${EXP} ${DIRRUN} - -if [ ${EXP} = "GFS" ] +if [[ $MODERUN == "R" ]]; then + cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/lbc*.nc ${DIRRUN} +fi +if [[ ${EXP} == "GFS" || ${EXP} == "ERA5" ]] then sed -e "s,#LABELI#,${start_date},g;s,#FCSTS#,${DD_HHMMSS_forecast},g;s,#RES#,${RES},g; -s,#CONFIG_DT#,${CONFIG_DT},g;s,#CONFIG_LEN_DISP#,${CONFIG_LEN_DISP},g;s,#CONFIG_CONV_INTERVAL#,${CONFIG_CONV_INTERVAL},g" \ +s,#CONFIG_DT#,${CONFIG_DT},g;s,#CONFIG_LEN_DISP#,${CONFIG_LEN_DISP},g;s,#CONFIG_CONV_INTERVAL#,${CONFIG_CONV_INTERVAL},g;s,#APPLY_LBCS#,${APPLY_LBCS},g" \ ${SCRIPTS}/namelists/namelist.atmosphere.TEMPLATE > ${DIRRUN}/namelist.atmosphere - sed -e "s,#RES#,${RES},g;s,#CIORIG#,${EXP},g;s,#LABELI#,${YYYYMMDDHHi},g;s,#NLEV#,${NLEV},g" \ + sed -e "s,#RES#,${RES},g;s,#LBCINT#,${LBCINT},g;s,#CIORIG#,${EXP},g;s,#LABELI#,${YYYYMMDDHHi},g;s,#NLEV#,${NLEV},g" \ ${SCRIPTS}/namelists/streams.atmosphere.TEMPLATE > ${DIRRUN}/streams.atmosphere fi cp -f ${SCRIPTS}/namelists/stream_list.atmosphere.output ${DIRRUN} diff --git a/scripts/4.run_post.bash b/scripts/4.run_post.bash index f6b082b..85eda74 100755 --- a/scripts/4.run_post.bash +++ b/scripts/4.run_post.bash @@ -88,21 +88,7 @@ IFS=":" read -r h m s <<< "${t_strout}" printf -v t_strout "%02d:%02d:%02d" "$h" "$m" "$s" # Calculating default parameters for different resolutions -if [ $RES -eq 1024002 ]; then #24Km - NLAT=721 #180/0.25 - NLON=1441 #360/0.25 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 2621442 ]; then #15Km - NLAT=1201 #180/0.15 - NLON=2401 #360/0.15 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 40962 ]; then #120Km +if [ $RES -eq 40962 ]; then #120Km NLAT=150 #180/1.2 NLON=300 #360/1.2 STARTLAT=-90.0 @@ -123,6 +109,20 @@ elif [ $RES -eq 655362 ]; then #30Km STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 +elif [ $RES -eq 1024002 ]; then #24Km + NLAT=721 #180/0.25 + NLON=1441 #360/0.25 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 +elif [ $RES -eq 2621442 ]; then #15Km + NLAT=1201 #180/0.15 + NLON=2401 #360/0.15 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 elif [ $RES -eq 5898242 ]; then #10Km NLAT=1801 #180/0.10 (+1) NLON=3601 #360/0.10 (+1) @@ -130,6 +130,13 @@ elif [ $RES -eq 5898242 ]; then #10Km STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 +elif [ $RES -eq 23592962 ]; then #5Km + NLAT=3601 #180/0.05 + NLON=7201 #360/0.05 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 elif [ $RES -eq 65536002 ]; then #3Km NLAT=6001 #180/0.03 NLON=12001 #360/0.03 diff --git a/scripts/make_degrib_ERA5.bash b/scripts/make_degrib_ERA5.bash new file mode 100755 index 0000000..37c8849 --- /dev/null +++ b/scripts/make_degrib_ERA5.bash @@ -0,0 +1,275 @@ +#!/bin/bash + +if [ $# -ne 6 ] +then + echo "" + echo "Instructions: execute the command below" + echo "" + echo "${0} EXP_NAME RESOLUTION LABELI FCST" + echo "" + echo "EXP_NAME :: Forcing: GFS" + echo " :: Others options to be added later..." + echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" + echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" + echo "FCST :: Forecast hours, e.g.: 24 or 36, etc." + echo "" + echo "24 hour forecast example:" + echo "${0} GFS 1024002 2024010100 24" + echo "${0} GFS 40962 2024010100 48" + echo "" + + exit +fi + +# Set environment variables exports: +echo "" +echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" +. setenv.bash + + +# Standart directories variables:--------------------------------------- +DIRHOMES=${DIR_SCRIPTS}/scripts_CD-CT; mkdir -p ${DIRHOMES} +DIRHOMED=${DIR_DADOS}/scripts_CD-CT; mkdir -p ${DIRHOMED} +SCRIPTS=${DIRHOMES}/scripts; mkdir -p ${SCRIPTS} +DATAIN=${DIRHOMED}/datain; mkdir -p ${DATAIN} +DATAOUT=${DIRHOMED}/dataout; mkdir -p ${DATAOUT} +SOURCES=${DIRHOMES}/sources; mkdir -p ${SOURCES} +EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} +#---------------------------------------------------------------------- + + +# Input variables:-------------------------------------- +EXP=${1}; #EXP=GFS +MESH=${2}; #MESH +YYYYMMDDHHi=${3}; #YYYYMMDDHHi=2024012000 +FCST=${4}; #FCST=24 +REGIONAL=${5}; #REGIONAL=Y +LBCINT=${6}; #LBCINT=21600 +#------------------------------------------------------- + +source utils.bash + +# Local variables-------------------------------------- +start_date=${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}_${YYYYMMDDHHi:8:2}:00:00 +YYYYMMDDHHf=$(add_hours "$YYYYMMDDHHi" "$FCST") +final_date=${YYYYMMDDHHf:0:4}-${YYYYMMDDHHf:4:2}-${YYYYMMDDHHf:6:2}_${YYYYMMDDHHf:8:2}:00:00 +## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +## !!!!!!!!!!! ATENCAO: AQUI ESTA SENDO ASSUMIDO QUE TODOS OS DADOS DO ERA5 NECESSARIOS PARA O !!!!!!!!!!! +## !!!!!!!!!!! EXPERIMENTO ESTAO NO SEGUINTE DIRETORIO: !!!!!!!!!!! +## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +ERA5_DATA=/pesq/share/monan/curso_OMM_INPE_2025/CGFD-USP_Cases/MPAS-BR/met_data/ERA5/DATA +## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +BNDDIR=${ERA5_DATA} +export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRUN} +#------------------------------------------------------- +mkdir -p ${DATAIN}/${YYYYMMDDHHi} +mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs + +mkdir -p ${HOME}/local/lib64 +cp -f /usr/lib64/libjasper.so* ${HOME}/local/lib64 +cp -f /usr/lib64/libjpeg.so* ${HOME}/local/lib64 + + +# Se nao existir CI no diretorio ERA5_data, aborta! +if [ ! -s ${BNDDIR}/era5.pl.${YYYYMMDDHHi}.grib ] || [ ! -s ${BNDDIR}/era5.sl.${YYYYMMDDHHi}.grib ] +then + echo -e "${RED}==>${NC}Condicao de contorno inexistente !" + echo -e "${RED}==>${NC}Check ${BNDDIR} or." + echo -e "${RED}==>${NC}Check ${GCCCIS}" + exit 1 +fi + +## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +## !!!!!!!!!!! ATENCAO: AQUI ESTA SENDO ASSUMIDO QUE A TABELA Vtable.ECMWF EXISTE NESSE DIRETORIO !!!!!!!! +## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# Copiar Vtable do ERA5 +cp /pesq/share/monan/curso_OMM_INPE_2025/CGFD-USP_Cases/WPS/ungrib/Variable_Tables/Vtable.ECMWF ${DATAIN}/fixed +## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +files_needed=("${DATAIN}/fixed/${MESH}.static.nc" "${DATAIN}/fixed/Vtable.ECMWF" "${EXECS}/ungrib.exe" "${BNDDIR}/era5.pl.${YYYYMMDDHHi}.grib" "${BNDDIR}/era5.sl.${YYYYMMDDHHi}.grib") +for file in "${files_needed[@]}" +do + if [ ! -s "${file}" ] + then + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} [${0}] At least the file ${file} was not generated. \n" + exit -1 + fi +done + +# Copia arquivos necessarios para diretorio DIRRUN +cp -f ${DATAIN}/fixed/${MESH}.static.nc ${DIRRUN} +cp -f ${DATAIN}/fixed/Vtable.ECMWF ${DIRRUN}/Vtable +cp -f ${EXECS}/ungrib.exe ${DIRRUN} +cp -f ${SCRIPTS}/namelists/namelist.wps.TEMPLATE ${DIRRUN}/namelist.wps.TEMPLATE + +cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} +cp -f ${SCRIPTS}/link_grib.csh ${DIRRUN} +rm -f ${DIRRUN}/degrib.bash + +if [[ $REGIONAL == "Y" ]]; then + echo "REGIONAL=Y. Degribbing ERA5 data for both initial and lateral boundary conditions..." + cp -f ${BNDDIR}/era5.pl.*.grib ${DATAIN}/${YYYYMMDDHHi} + cp -f ${BNDDIR}/era5.sl.*.grib ${DATAIN}/${YYYYMMDDHHi} + cat << EOF0 > ${DIRRUN}/degrib.bash +#!/bin/bash -x +#SBATCH --job-name=${DEGRIB_jobname} +#SBATCH --nodes=${DEGRIB_nnodes} +#SBATCH --partition=${DEGRIB_QUEUE} +#SBATCH --ntasks=${DEGRIB_ncores} +#SBATCH --tasks-per-node=${DEGRIB_ncpn} # ic for benchmark +#SBATCH --time=${STATIC_walltime} +#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o%j # File name for standard output +#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e%j # File name for standard error output +# + +ulimit -s unlimited +ulimit -c unlimited +ulimit -v unlimited + +export PMIX_MCA_gds=hash + + +export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${HOME}/local/lib64 + +cd ${DIRRUN} +. setenv.bash + +ldd ungrib.exe + +rm -f GRIBFILE.* namelist.wps + + +sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${final_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,ERA5,g" \ + ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps + +./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/era5.*.grib + +date +time mpirun -np 1 ./ungrib.exe +date + + +grep "Successful completion of program ungrib.exe" ${DIRRUN}/ungrib.log >& /dev/null + +if [ \$? -ne 0 ]; then + echo " BUMMER: Ungrib generation failed for some yet unknown reason." + echo " " + tail -10 ${DIRRUN}/ungrib.log + echo " " + exit 21 +fi + +# +# clean up and remove links +# + mv ungrib.log ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/ungrib.${start_date}.log + mv namelist.wps ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/namelist.${start_date}.wps + mv ERA5* ${DATAOUT}/${YYYYMMDDHHi}/Pre + + rm -fr ${DATAIN}/${YYYYMMDDHHi} + +echo "End of degrib Job" + + +EOF0 + + +elif [[ $REGIONAL == "N" ]]; then + echo "REGIONAL=N. Degribbing ERA5 data only for initial conditions..." + cp -f ${BNDDIR}/era5.pl.${YYYYMMDDHHi}.grib ${DATAIN}/${YYYYMMDDHHi} + cp -f ${BNDDIR}/era5.sl.${YYYYMMDDHHi}.grib ${DATAIN}/${YYYYMMDDHHi} + cat << EOF0 > ${DIRRUN}/degrib.bash +#!/bin/bash -x +#SBATCH --job-name=${DEGRIB_jobname} +#SBATCH --nodes=${DEGRIB_nnodes} +#SBATCH --partition=${DEGRIB_QUEUE} +#SBATCH --ntasks=${DEGRIB_ncores} +#SBATCH --tasks-per-node=${DEGRIB_ncpn} # ic for benchmark +#SBATCH --time=${STATIC_walltime} +#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o%j # File name for standard output +#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e%j # File name for standard error output +# + +ulimit -s unlimited +ulimit -c unlimited +ulimit -v unlimited + +export PMIX_MCA_gds=hash + + +export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${HOME}/local/lib64 + +cd ${DIRRUN} +. setenv.bash + +ldd ungrib.exe + +rm -f GRIBFILE.* namelist.wps + + +sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${start_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,ERA5,g" \ + ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps + +./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/era5.*.${YYYYMMDDHHi}.grib + +date +time mpirun -np 1 ./ungrib.exe +date + + +grep "Successful completion of program ungrib.exe" ${DIRRUN}/ungrib.log >& /dev/null + +if [ \$? -ne 0 ]; then + echo " BUMMER: Ungrib generation failed for some yet unknown reason." + echo " " + tail -10 ${DIRRUN}/ungrib.log + echo " " + exit 21 +fi + +# +# clean up and remove links +# + mv ungrib.log ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/ungrib.${start_date}.log + mv namelist.wps ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/namelist.${start_date}.wps + mv ERA5\:${start_date:0:13} ${DATAOUT}/${YYYYMMDDHHi}/Pre + + rm -fr ${DATAIN}/${YYYYMMDDHHi} + +echo "End of degrib Job" + + +EOF0 + +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} LBCs phase fails during degrib! Please select REGIONAL=Y or REGIONAL=N so that degrib can be done appropriately.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi + + +chmod a+x ${DIRRUN}/degrib.bash + +echo -e "${GREEN}==>${NC} Executing sbatch degrib.bash...\n" +cd ${DIRRUN} +sbatch --wait ${DIRRUN}/degrib.bash + + + +files_ungrib=("${EXP}:${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}_${YYYYMMDDHHi:8:2}") +for file in "${files_ungrib[@]}" +do + if [ ! -s ${DATAOUT}/${YYYYMMDDHHi}/Pre/${file} ] + then + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} Degrib fails! At least the file ${file} was not generated at ${DATAIN}/${YYYYMMDDHHi}. \n" + echo -e "${RED}==>${NC} Check logs at ${DATAOUT}/logs/degrib.* .\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 + fi +done + +mv ${DIRRUN}/degrib.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs +rm -fr ${DIRRUN} diff --git a/scripts/make_degrib.bash b/scripts/make_degrib_GFS.bash similarity index 62% rename from scripts/make_degrib.bash rename to scripts/make_degrib_GFS.bash index 43f7ca3..feb3243 100755 --- a/scripts/make_degrib.bash +++ b/scripts/make_degrib_GFS.bash @@ -15,7 +15,7 @@ then echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" echo "FCST :: Forecast hours, e.g.: 24 or 36, etc." echo "" - echo "24 hour forcast example:" + echo "24 hour forecast example:" echo "${0} GFS 1024002 2024010100 24" echo "${0} GFS 40962 2024010100 48" echo "" @@ -55,6 +55,10 @@ FCST=${4}; #FCST=24 # Local variables-------------------------------------- start_date=${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}_${YYYYMMDDHHi:8:2}:00:00 +yyyymmddi=${YYYYMMDDHHi:0:8} +hhi=${YYYYMMDDHHi:8:2} +yyyymmddhhf=$(date +"%Y%m%d%H" -d "${yyyymmddi} ${hhi}:00 ${FCST} hours" ) +final_date=${yyyymmddhhf:0:4}-${yyyymmddhhf:4:2}-${yyyymmddhhf:6:2}_${yyyymmddhhf:8:2}:00:00 export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRUN} #------------------------------------------------------- mkdir -p ${DATAIN}/${YYYYMMDDHHi} @@ -110,31 +114,40 @@ cp -f ${DATAIN}/fixed/x1.${RES}.static.nc ${DIRRUN} cp -f ${DATAIN}/fixed/Vtable.${EXP} ${DIRRUN}/Vtable cp -f ${EXECS}/ungrib.exe ${DIRRUN} cp -f ${SCRIPTS}/namelists/namelist.wps.TEMPLATE ${DIRRUN}/namelist.wps.TEMPLATE -cp -f ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} -cp -f ${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DIRRUN} +#cp -f ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} +#cp -f ${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DIRRUN} cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} cp -f ${SCRIPTS}/link_grib.csh ${DIRRUN} rm -f ${DIRRUN}/degrib.bash +if [[ $MODERUN == "R" ]]; then + echo "MODERUN=R. Degribbing GFS data for both initial and lateral boundary conditions..." + dt=$((LBCINT / 3600)) + hours=($(generate_hours_list "00" "$dt" "$FCST")) + for hour in "${hours[@]}"; do + echo "Temporarily copying GFS data: gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f0${hour}.${YYYYMMDDHHi}.grib2" + fhour=$(printf "%03d" ${hour}) + cp -f ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f${fhour}.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} + done + + if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] + then + sed -e "s,#JOBNAME#,${DEGRIB_jobname},g; + s,#NNODES#,${DEGRIB_nnodes},g; + s,#NCPUS#,${DEGRIB_ncpus},g; + s,#NTASKS#,${DEGRIB_ncores},g; + s,#NTASKSPNODE#,${DEGRIB_ncpn},g; + s,#NTHREADS#,${DEGRIB_nthreads},g; + s,#PARTITION#,${DEGRIB_QUEUE},g; + s,#WALLTIME#,${DEGRIB_walltime},g; + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e,g" \ + ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/degrib.bash + else + echo "#!/bin/bash " > ${DIRRUN}/degrib.bash + fi -if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] -then - sed -e "s,#JOBNAME#,${DEGRIB_jobname},g; - s,#NNODES#,${DEGRIB_nnodes},g; - s,#NCPUS#,${DEGRIB_ncpus},g; - s,#NTASKS#,${DEGRIB_ncores},g; - s,#NTASKSPNODE#,${DEGRIB_ncpn},g; - s,#NTHREADS#,${DEGRIB_nthreads},g; - s,#PARTITION#,${DEGRIB_QUEUE},g; - s,#WALLTIME#,${DEGRIB_walltime},g; - s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o,g; - s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e,g" \ - ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/degrib.bash -else - echo "#!/bin/bash " > ${DIRRUN}/degrib.bash -fi - -cat << EOF0 >> ${DIRRUN}/degrib.bash + cat << EOF0 >> ${DIRRUN}/degrib.bash ulimit -s unlimited ulimit -c unlimited @@ -154,12 +167,11 @@ ldd ungrib.exe rm -f GRIBFILE.* namelist.wps - -sed -e "s,#LABELI#,${start_date},g;s,#PREFIX#,GFS,g" \ +sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${final_date},g;s,#PREFIX#,GFS,g;s,#LBCINT#,${LBCINT},g;" \ ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps echo "" -./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 +./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/gfs.*.grib2 chmod 755 * echo "" @@ -168,10 +180,8 @@ echo "submetendo jobs ungrib" time mpirun -np 1 ./ungrib.exe - date - grep "Successful completion of program ungrib.exe" ${DIRRUN}/ungrib.log >& /dev/null if [ \$? -ne 0 ]; then @@ -193,10 +203,90 @@ fi echo "End of degrib Job" +EOF0 + +elif [[ $MODERUN == "G" ]]; then + echo "MODERUN=G. Degribbing GFS data only for initial conditions..." + cp -f ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} + + if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] + then + sed -e "s,#JOBNAME#,${DEGRIB_jobname},g; + s,#NNODES#,${DEGRIB_nnodes},g; + s,#NCPUS#,${DEGRIB_ncpus},g; + s,#NTASKS#,${DEGRIB_ncores},g; + s,#NTASKSPNODE#,${DEGRIB_ncpn},g; + s,#NTHREADS#,${DEGRIB_nthreads},g; + s,#PARTITION#,${DEGRIB_QUEUE},g; + s,#WALLTIME#,${DEGRIB_walltime},g; + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e,g" \ + ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/degrib.bash + else + echo "#!/bin/bash " > ${DIRRUN}/degrib.bash + fi + + cat << EOF0 > ${DIRRUN}/degrib.bash + +ulimit -s unlimited +ulimit -c unlimited +ulimit -v unlimited + +export PMIX_MCA_gds=hash + +export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${HOME}/local/lib64 + +cd ${DIRRUN} + +. ${SCRIPTS}/setenv.bash +echo "-- PBS_JOBID: \$PBS_JOBID" + +ldd ungrib.exe + +rm -f GRIBFILE.* namelist.wps + +sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${start_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,GFS,g" \ + +${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps + +./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 + +chmod 755 * +echo "" +date +echo "submetendo jobs ungrib" + +time mpirun -np 1 ./ungrib.exe + +date + +grep "Successful completion of program ungrib.exe" ${DIRRUN}/ungrib.log >& /dev/null +if [ \$? -ne 0 ]; then + echo " BUMMER: Ungrib generation failed for some yet unknown reason." + echo " " + tail -10 ${DIRRUN}/ungrib.log + echo " " + exit 21 +fi +# +# clean up and remove links +# + mv ungrib.log ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/ungrib.${start_date}.log + mv namelist.wps ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/namelist.${start_date}.wps + mv GFS\:${start_date:0:13} ${DATAOUT}/${YYYYMMDDHHi}/Pre + rm -fr ${DATAIN}/${YYYYMMDDHHi} +echo "End of degrib Job" EOF0 -chmod a+x ${DIRRUN}/degrib.bash +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} LBCs phase fails during degrib! Please select MODERUN=R or G so that degrib can be done appropriately.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi + +chmod a+x ${DIRRUN}/degrib.bash case "${SCHEDULER_SYSTEM}" in SLURM) diff --git a/scripts/make_initatmos.bash b/scripts/make_initatmos.bash index 186a8e7..b6caa4a 100755 --- a/scripts/make_initatmos.bash +++ b/scripts/make_initatmos.bash @@ -1,7 +1,6 @@ #!/bin/bash umask 022 - if [ $# -ne 4 ] then echo "" @@ -59,8 +58,6 @@ export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRU mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs - - if [ ! -s ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ] then if [ ! -s ${DATAIN}/fixed/x1.${RES}.graph.info ] @@ -91,8 +88,13 @@ do fi done +if [[ $MODERUN == "R" ]]; then + BLEND_BDY_TERRAIN=true +else + BLEND_BDY_TERRAIN=false +fi -sed -e "s,#LABELI#,${start_date},g;s,#GEODAT#,${GEODATA},g;s,#RES#,${RES},g" \ +sed -e "s,#LABELI#,${start_date},g;s,#GEODAT#,${GEODATA},g;s,#RES#,${RES},g;s,#BLEND_BDY_TERRAIN#,${BLEND_BDY_TERRAIN},g" \ ${SCRIPTS}/namelists/namelist.init_atmosphere.TEMPLATE > ${DIRRUN}/namelist.init_atmosphere sed -e "s,#RES#,${RES},g" \ diff --git a/scripts/make_lbcs.bash b/scripts/make_lbcs.bash new file mode 100755 index 0000000..730a136 --- /dev/null +++ b/scripts/make_lbcs.bash @@ -0,0 +1,188 @@ +#!/bin/bash + + +if [ $# -ne 4 ] +then + echo "" + echo "Instructions: execute the command below" + echo "" + echo "${0} EXP_NAME RESOLUTION LABELI FCST" + echo "" + echo "EXP_NAME :: Forcing: GFS or ERA5" + echo " :: Others options to be added later..." + echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" + echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" + echo "FCST :: Forecast hours, e.g.: 24 or 36, etc." + echo "" + echo "24 hour forcast example:" + echo "${0} GFS 1024002 2024010100 24" + echo "" + + exit +fi + +# Set environment variables exports: +echo "" +echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" +. setenv.bash + + +# Standart directories variables:--------------------------------------- +DIRHOMES=${DIR_SCRIPTS}/scripts_CD-CT; mkdir -p ${DIRHOMES} +DIRHOMED=${DIR_DADOS}/scripts_CD-CT; mkdir -p ${DIRHOMED} +SCRIPTS=${DIRHOMES}/scripts; mkdir -p ${SCRIPTS} +DATAIN=${DIRHOMED}/datain; mkdir -p ${DATAIN} +DATAOUT=${DIRHOMED}/dataout; mkdir -p ${DATAOUT} +SOURCES=${DIRHOMES}/sources; mkdir -p ${SOURCES} +EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} +#---------------------------------------------------------------------- + + +# Input variables:-------------------------------------- +EXP=${1}; #EXP=GFS +RES=${2}; #RES=1024002 +YYYYMMDDHHi=${3}; #YYYYMMDDHHi=2024012000 +FCST=${4}; #FCST=24 +#------------------------------------------------------- + +# Local variables-------------------------------------- +start_date=${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}_${YYYYMMDDHHi:8:2}:00:00 +yyyymmddi=${YYYYMMDDHHi:0:8} +hhi=${YYYYMMDDHHi:8:2} +yyyymmddhhf=$(date +"%Y%m%d%H" -d "${yyyymmddi} ${hhi}:00 ${FCST} hours" ) +final_date=${yyyymmddhhf:0:4}-${yyyymmddhhf:4:2}-${yyyymmddhhf:6:2}_${yyyymmddhhf:8:2}:00:00 +GEODATA=${DATAIN}/WPS_GEOG +cores=${INITATMOS_ncores} +export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRUN} +#------------------------------------------------------- +mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs + +if [ ! -s ${DATAIN}/fixed/${RES}.graph.info.part.${cores} ] +then + if [[ ${RES} == x1.* ]] + then + if [ ! -s ${DATAIN}/fixed/${RES}.graph.info ] + then + cd ${DATAIN}/fixed + echo -e "${GREEN}==>${NC} downloading meshes tgz files ... \n" + wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/${RES}.tar.gz + wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/${RES}_static.tar.gz + tar -xzvf ${RES}.tar.gz + tar -xzvf ${RES}_static.tar.gz + fi + echo -e "${GREEN}==>${NC} Creating ${RES}.graph.info.part.${cores} ... \n" + cd ${DATAIN}/fixed + gpmetis -minconn -contig -niter=200 ${RES}.graph.info ${cores} + rm -fr ${RES}.tar.gz ${RES}_static.tar.gz + else + echo -e "${GREEN}==>${NC} Creating ${RES}.graph.info.part.${cores} ... \n" + cd ${DATAIN}/fixed + gpmetis -minconn -contig -niter=200 ${RES}.graph.info ${cores} + fi +fi + +files_needed=("${SCRIPTS}/namelists/namelist.init_atmosphere.LBCS" "${SCRIPTS}/namelists/streams.init_atmosphere.LBCS" "${DATAIN}/fixed/${RES}.graph.info.part.${cores}" "${DATAOUT}/${YYYYMMDDHHi}/Pre/${RES}.init.nc" "${EXECS}/init_atmosphere_model") +for file in "${files_needed[@]}" +do + if [ ! -s "${file}" ] + then + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} [${0}] At least the file ${file} was not generated. \n" + exit -1 + fi +done + + +sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${final_date},g;s,#GEODAT#,${GEODATA},g;s,#LBCINT#,${LBCINT},g;s,#RES#,${RES},g;s,#EXP#,${EXP},g" \ + ${SCRIPTS}/namelists/namelist.init_atmosphere.LBCS > ${DIRRUN}/namelist.init_atmosphere + +sed -e "s,#RES#,${RES},g;s,#LBCINT#,${LBCINT},g" \ + ${SCRIPTS}/namelists/streams.init_atmosphere.LBCS > ${DIRRUN}/streams.init_atmosphere + + +cp -f ${DATAIN}/fixed/${RES}.graph.info.part.${cores} ${DIRRUN} +cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/${RES}.init.nc ${DIRRUN} +cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/${EXP}\:* ${DIRRUN} +cp -f ${EXECS}/init_atmosphere_model ${DIRRUN} + + +cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} +rm -f ${DIRRUN}/lbcs.bash + +if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] +then + sed -e "s,#JOBNAME#,${DEGRIB_jobname},g; + s,#NNODES#,${LBCS_nnodes},g; + s,#NCPUS#,${LBCS_ncpus},g; + s,#NTASKS#,${LBCS_ncores},g; + s,#NTASKSPNODE#,${LBCS_ncpn},g; + s,#NTHREADS#,${LBCS_nthreads},g; + s,#PARTITION#,${LBCS_QUEUE},g; + s,#WALLTIME#,${LBCS_walltime},g; + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e,g" \ + ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/lbcs.bash +else + echo "#!/bin/bash " > ${DIRRUN}/lbcs.bash +fi + +cat << EOF0 > ${DIRRUN}/lbcs.bash + +export executable=init_atmosphere_model + +ulimit -c unlimited +ulimit -v unlimited +ulimit -s unlimited + + +. $(pwd)/setenv.bash + +cd ${DIRRUN} + + +date +time mpirun -np \${SLURM_NTASKS} ./\${executable} +date + +mv ${DIRRUN}/log.init_atmosphere.0000.out ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/log.init_atmosphere.0000.${RES}.lbcs.nc.${YYYYMMDDHHi}.out +mv ${DIRRUN}/namelist.init_atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/namelist.init_atmosphere.lbcs +mv ${DIRRUN}/streams.init_atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/streams.init_atmosphere.lbcs +mv ${DIRRUN}/${RES}.init.nc ${DATAOUT}/${YYYYMMDDHHi}/Pre +mv ${DIRRUN}/lbc*.nc ${DATAOUT}/${YYYYMMDDHHi}/Pre + +EOF0 +chmod a+x ${DIRRUN}/lbcs.bash + +case "${SCHEDULER_SYSTEM}" in + SLURM) + echo -e "${GREEN}==>${NC} Sbatch lbcs.bash...\n" + cd ${DIRRUN} + sbatch --wait ${DIRRUN}/lbcs.bash + ;; + PBS) + echo -e "${GREEN}==>${NC} qsub lbcs.bash...\n" + cd ${DIRRUN} + qsub -W block=true ${DIRRUN}/lbcs.bash + ;; +# GENERIC) +# echo "Nenhum gerenciador detectado" +# cd ${DIRRUN} +# ${DIRRUN}/lbcs.bash +# ;; +esac + +echo -e "${GREEN}==>${NC} Executing sbatch lbcs.bash...\n" +cd ${DIRRUN} + +mv ${DIRRUN}/lbcs.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs + +if [ -z "$(ls ${DATAOUT}/${YYYYMMDDHHi}/Pre/lbc* 2>/dev/null)" ] +then + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} LBC phase fails! Check logs at ${DATAOUT}/logs/lbcs.* .\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi +chmod 775 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* + +rm -fr ${DIRRUN} diff --git a/scripts/make_template.bash b/scripts/make_template.bash index 2d6abf4..73ae529 100755 --- a/scripts/make_template.bash +++ b/scripts/make_template.bash @@ -8,10 +8,10 @@ umask 022 # # Performs the following tasks: # -# o VCheck all input files before -# o Creates the submition script +# o Check all input files before +# o Creates the submission script # o Submit the post -# o Veriffy all files generated +# o Verify all files generated # # #-----------------------------------------------------------------------------# @@ -90,7 +90,28 @@ IFS=":" read -r h m s <<< "${t_strout}" printf -v t_strout "%02d:%02d:%02d" "$h" "$m" "$s" # Calculating default parameters for different resolutions -if [ $RES -eq 1024002 ]; then #24Km +if [ $RES -eq 40962 ]; then #120Km + NLAT=150 #180/1.2 + NLON=300 #360/1.2 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 +elif [ $RES -eq 163842 ]; then #60Km + NLAT=301 #180/0.6 + NLON=601 #360/0.6 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 +elif [ $RES -eq 655362 ]; then #30Km + NLAT=601 #180/0.3 + NLON=1201 #360/0.3 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 +elif [ $RES -eq 1024002 ]; then #24Km NLAT=721 #180/0.25 NLON=1441 #360/0.25 STARTLAT=-90.0 @@ -104,9 +125,23 @@ elif [ $RES -eq 2621442 ]; then #15Km STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 -elif [ $RES -eq 40962 ]; then #120Km - NLAT=150 #180/1.2 - NLON=300 #360/1.2 +elif [ $RES -eq 5898242 ]; then #10Km + NLAT=1801 #180/0.10 (+1) + NLON=3601 #360/0.10 (+1) + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 +elif [ $RES -eq 23592962 ]; then #5Km + NLAT=3601 #180/0.05 + NLON=7201 #360/0.05 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 +elif [ $RES -eq 65536002 ]; then #3Km + NLAT=6001 #180/0.03 + NLON=12001 #360/0.03 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 diff --git a/scripts/namelists/namelist.atmosphere.TEMPLATE b/scripts/namelists/namelist.atmosphere.TEMPLATE index d234253..c4f103d 100755 --- a/scripts/namelists/namelist.atmosphere.TEMPLATE +++ b/scripts/namelists/namelist.atmosphere.TEMPLATE @@ -34,7 +34,7 @@ config_xnutr = 0.2 / &limited_area - config_apply_lbcs = false + config_apply_lbcs = #APPLY_LBCS# / &io config_pio_num_iotasks = 0 diff --git a/scripts/namelists/namelist.init_atmosphere.LBCS b/scripts/namelists/namelist.init_atmosphere.LBCS new file mode 100755 index 0000000..2622af6 --- /dev/null +++ b/scripts/namelists/namelist.init_atmosphere.LBCS @@ -0,0 +1,48 @@ +&nhyd_model + config_init_case = 9 + config_start_time = '#LABELI#' + config_stop_time = '#LABELF#' + config_theta_adv_order = 3 + config_coef_3rd_order = 0.25 +/ +&dimensions + config_nvertlevels = 55 + config_nsoillevels = 4 + config_nfglevels = 35 + config_nfgsoillevels = 4 +/ +&data_sources + config_geog_data_path = '#GEODAT#' + config_met_prefix = '#EXP#' + config_sfc_prefix = 'SST' + config_fg_interval = #LBCINT# + config_landuse_data = 'MODIFIED_IGBP_MODIS_NOAH' + config_topo_data = 'GMTED2010' + config_use_spechumd = true +/ +&vertical_grid + config_ztop = 30000.0 + config_nsmterrain = 1 + config_smooth_surfaces = true + config_dzmin = 0.3 + config_nsm = 30 + config_tc_vertical_grid = true +/ +&interpolation_control + config_extrap_airtemp = 'linear' +/ +&preproc_stages + config_static_interp = false + config_native_gwd_static = false + config_vertical_grid = true + config_met_interp = true + config_input_sst = false + config_frac_seaice = true +/ +&io + config_pio_num_iotasks = 0 + config_pio_stride = 1 +/ +&decomposition + config_block_decomp_file_prefix = '#RES#.graph.info.part.' +/ diff --git a/scripts/namelists/namelist.init_atmosphere.TEMPLATE b/scripts/namelists/namelist.init_atmosphere.TEMPLATE index 2b560a1..18bf2b2 100755 --- a/scripts/namelists/namelist.init_atmosphere.TEMPLATE +++ b/scripts/namelists/namelist.init_atmosphere.TEMPLATE @@ -13,7 +13,7 @@ / &data_sources config_geog_data_path = '#GEODAT#' - config_met_prefix = 'GFS' + config_met_prefix = '#EXP#' config_sfc_prefix = 'SST' config_fg_interval = 86400 config_landuse_data = 'MODIFIED_IGBP_MODIS_NOAH' @@ -27,6 +27,7 @@ config_dzmin = 0.3 config_nsm = 30 config_tc_vertical_grid = true + config_blend_bdy_terrain = #BLEND_BDY_TERRAIN# / &interpolation_control config_extrap_airtemp = 'linear' diff --git a/scripts/namelists/namelist.wps.TEMPLATE b/scripts/namelists/namelist.wps.TEMPLATE index 2aaff90..9694f11 100755 --- a/scripts/namelists/namelist.wps.TEMPLATE +++ b/scripts/namelists/namelist.wps.TEMPLATE @@ -2,8 +2,8 @@ wrf_core = 'ARW', max_dom = 1, start_date = '#LABELI#', - end_date = '#LABELI#', - interval_seconds = 10800, + end_date = '#LABELF#', + interval_seconds = #LBCINT#, io_form_geogrid = 2, debug_level = 0, / diff --git a/scripts/namelists/streams.atmosphere.TEMPLATE b/scripts/namelists/streams.atmosphere.TEMPLATE index 04def1c..d6c28bc 100755 --- a/scripts/namelists/streams.atmosphere.TEMPLATE +++ b/scripts/namelists/streams.atmosphere.TEMPLATE @@ -45,4 +45,11 @@ packages="iau" input_interval="initial_only" /> + + diff --git a/scripts/namelists/streams.init_atmosphere.LBCS b/scripts/namelists/streams.init_atmosphere.LBCS new file mode 100755 index 0000000..e073431 --- /dev/null +++ b/scripts/namelists/streams.init_atmosphere.LBCS @@ -0,0 +1,20 @@ + + + + + + + diff --git a/scripts/setenv.bash b/scripts/setenv.bash index fa2f731..e17fcf3 100755 --- a/scripts/setenv.bash +++ b/scripts/setenv.bash @@ -1,6 +1,10 @@ #!/bin/bash umask 022 +# Choose the simulation mode: +MODERUN=R # R=Regional simulation | G=Global simulation. +LBCINT=21600 # Interval (seconds) for updating lateral boundary conditions (when regional) + # Choose your compiler here (only on Jaci; on Egeon the compiler is fixed to ‘gnu’): export COMPILER=intel #export COMPILER=gnu diff --git a/scripts/stools/setenv_PBS_ian_intel.bash b/scripts/stools/setenv_PBS_ian_intel.bash index 22a7c5e..61203c2 100755 --- a/scripts/stools/setenv_PBS_ian_intel.bash +++ b/scripts/stools/setenv_PBS_ian_intel.bash @@ -27,7 +27,6 @@ export STATIC_nthreads=1 export STATIC_jobname="Pre.static" export STATIC_walltime="02:00:00" - # PRE-Degrib phase: export DEGRIB_QUEUE="pesqextra" export DEGRIB_ncores=1 @@ -38,7 +37,6 @@ export DEGRIB_nthreads=1 export DEGRIB_jobname="Pre.degrib" export DEGRIB_walltime="02:00:00" - # PRE-Init Atmosphere phase: export INITATMOS_QUEUE="pesqextra" export INITATMOS_ncores=512 @@ -49,6 +47,11 @@ export INITATMOS_nthreads=1 export INITATMOS_jobname="Pre.InitAtmos" export INITATMOS_walltime="02:00:00" +# PRE-LBCs phase: +export LBCS_QUEUE="pesqextra" +export LBCS_ncores=64 +export LBCS_nnodes=1 +export LBCS_jobname="Pre.LBCS" # Model phase: export MODEL_QUEUE="pesqextra" From 8dc64ed73ac7ad95bb723f042cc9a934fd68aa5c Mon Sep 17 00:00:00 2001 From: Joao Messias Date: Tue, 16 Jun 2026 18:11:56 +0000 Subject: [PATCH 2/5] fixed regional feature --- scripts/3.run_model.bash | 9 ++ scripts/4.run_post.bash | 29 +++- scripts/make_degrib_GFS.bash | 26 ++-- scripts/make_initatmos.bash | 4 +- scripts/make_lbcs.bash | 63 ++++---- scripts/make_template.bash | 138 +++++++++++------- .../namelists/namelist.init_atmosphere.LBCS | 2 +- .../namelists/streams.init_atmosphere.LBCS | 2 +- scripts/setenv.bash | 4 +- scripts/stools/setenv_PBS_ian_intel.bash | 8 +- 10 files changed, 172 insertions(+), 113 deletions(-) diff --git a/scripts/3.run_model.bash b/scripts/3.run_model.bash index 7f5ae8c..81a0d13 100755 --- a/scripts/3.run_model.bash +++ b/scripts/3.run_model.bash @@ -98,6 +98,9 @@ elif [ $RES -eq 163842 ]; then #60Km elif [ $RES -eq 655362 ]; then #30Km CONFIG_DT=150.0 CONFIG_CONV_INTERVAL="00:15:00" +elif [[ "$RES" == "655362.REG.AMS_CAR" ]]; then #30 km (AMS + Caribe) + CONFIG_DT=150.0 + CONFIG_CONV_INTERVAL="00:15:00" elif [ $RES -eq 1024002 ]; then #24Km CONFIG_DT=150.0 CONFIG_CONV_INTERVAL="00:15:00" @@ -107,9 +110,15 @@ elif [ $RES -eq 2621442 ]; then #15Km elif [ $RES -eq 5898242 ]; then #10Km CONFIG_DT=60.0 CONFIG_CONV_INTERVAL="00:15:00" +elif [[ "$RES" == "5898242.REG.AMS_CAR" ]]; then #10 km (AMS + Caribe) + CONFIG_DT=60.0 + CONFIG_CONV_INTERVAL="00:15:00" elif [ $RES -eq 23592962 ]; then #5km CONFIG_DT=30.0 CONFIG_CONV_INTERVAL="00:15:00" +elif [[ "$RES" == "23592962.REG.AMS_CAR" ]]; then #5 km (AMS + Caribe) + CONFIG_DT=30.0 + CONFIG_CONV_INTERVAL="00:15:00" elif [ $RES -eq 65536002 ]; then #3Km CONFIG_DT=18.0 CONFIG_CONV_INTERVAL="00:15:00" diff --git a/scripts/4.run_post.bash b/scripts/4.run_post.bash index 85eda74..9a8d4f3 100755 --- a/scripts/4.run_post.bash +++ b/scripts/4.run_post.bash @@ -89,8 +89,8 @@ printf -v t_strout "%02d:%02d:%02d" "$h" "$m" "$s" # Calculating default parameters for different resolutions if [ $RES -eq 40962 ]; then #120Km - NLAT=150 #180/1.2 - NLON=300 #360/1.2 + NLAT=151 #180/1.2 + NLON=301 #360/1.2 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 @@ -109,6 +109,13 @@ elif [ $RES -eq 655362 ]; then #30Km STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 +elif [[ $RES == "655362.REG.AMS_CAR" ]]; then #30 km (AMS + Caribe) + NLAT=368 #110/0.3 +1 + NLON=334 #100/0.3 +1 + STARTLAT=-70.0 + ENDLAT=40 + STARTLON=240.0 + ENDLON=340.0 elif [ $RES -eq 1024002 ]; then #24Km NLAT=721 #180/0.25 NLON=1441 #360/0.25 @@ -124,12 +131,19 @@ elif [ $RES -eq 2621442 ]; then #15Km ENDLAT=90.0 ENDLON=360.0 elif [ $RES -eq 5898242 ]; then #10Km - NLAT=1801 #180/0.10 (+1) - NLON=3601 #360/0.10 (+1) + NLAT=1801 #180/0.10 + NLON=3601 #360/0.10 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 +elif [[ $RES == "5898242.REG.AMS_CAR" ]]; then #10 km (AMS + Caribe) + NLAT=1101 #110/0.1 +1 + NLON=1001 #100/0.1 +1 + STARTLAT=-70.0 + ENDLAT=40.0 + STARTLON=240.0 + ENDLON=340.0 elif [ $RES -eq 23592962 ]; then #5Km NLAT=3601 #180/0.05 NLON=7201 #360/0.05 @@ -137,6 +151,13 @@ elif [ $RES -eq 23592962 ]; then #5Km STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 +elif [[ $RES == "23592962.REG.AMS_CAR" ]]; then #5 km (AMS + Caribe) + NLAT=2201 #110/0.05 +1 + NLON=2001 #100/0.05 +1 + STARTLAT=-70.0 + ENDLAT=40.0 + STARTLON=240.0 + ENDLON=340.0 elif [ $RES -eq 65536002 ]; then #3Km NLAT=6001 #180/0.03 NLON=12001 #360/0.03 diff --git a/scripts/make_degrib_GFS.bash b/scripts/make_degrib_GFS.bash index feb3243..b9533b3 100755 --- a/scripts/make_degrib_GFS.bash +++ b/scripts/make_degrib_GFS.bash @@ -51,8 +51,6 @@ FCST=${4}; #FCST=24 #------------------------------------------------------- - - # Local variables-------------------------------------- start_date=${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}_${YYYYMMDDHHi:8:2}:00:00 yyyymmddi=${YYYYMMDDHHi:0:8} @@ -123,11 +121,11 @@ rm -f ${DIRRUN}/degrib.bash if [[ $MODERUN == "R" ]]; then echo "MODERUN=R. Degribbing GFS data for both initial and lateral boundary conditions..." dt=$((LBCINT / 3600)) - hours=($(generate_hours_list "00" "$dt" "$FCST")) - for hour in "${hours[@]}"; do - echo "Temporarily copying GFS data: gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f0${hour}.${YYYYMMDDHHi}.grib2" - fhour=$(printf "%03d" ${hour}) - cp -f ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f${fhour}.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} + + for ((hour=0; hour<=FCST; hour+=dt)); do + hour_fmt=$(printf "%03d" "$hour") + echo "Temporarily copying GFS data: gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f${hour_fmt}.${YYYYMMDDHHi}.grib2" + cp -f ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f${hour_fmt}.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} done if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] @@ -167,8 +165,8 @@ ldd ungrib.exe rm -f GRIBFILE.* namelist.wps -sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${final_date},g;s,#PREFIX#,GFS,g;s,#LBCINT#,${LBCINT},g;" \ - ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps +sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${final_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,GFS,g" \ + ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps echo "" ./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/gfs.*.grib2 @@ -197,8 +195,7 @@ fi # mv ungrib.log ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/ungrib.${start_date}.log mv namelist.wps ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/namelist.${start_date}.wps - mv GFS\:${start_date:0:13} ${DATAOUT}/${YYYYMMDDHHi}/Pre - + mv GFS* ${DATAOUT}/${YYYYMMDDHHi}/Pre rm -fr ${DATAIN}/${YYYYMMDDHHi} echo "End of degrib Job" @@ -226,7 +223,7 @@ elif [[ $MODERUN == "G" ]]; then echo "#!/bin/bash " > ${DIRRUN}/degrib.bash fi - cat << EOF0 > ${DIRRUN}/degrib.bash + cat << EOF0 >> ${DIRRUN}/degrib.bash ulimit -s unlimited ulimit -c unlimited @@ -247,8 +244,7 @@ ldd ungrib.exe rm -f GRIBFILE.* namelist.wps sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${start_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,GFS,g" \ - -${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps + ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps ./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 @@ -277,6 +273,7 @@ fi mv GFS\:${start_date:0:13} ${DATAOUT}/${YYYYMMDDHHi}/Pre rm -fr ${DATAIN}/${YYYYMMDDHHi} echo "End of degrib Job" + EOF0 else @@ -327,5 +324,4 @@ mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o ${DATAOUT}/${YYYYMMDDHHi}/Pre/log mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e.${JOBID} chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o.${JOBID} chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e.${JOBID} - rm -fr ${DIRRUN} diff --git a/scripts/make_initatmos.bash b/scripts/make_initatmos.bash index b6caa4a..2228f0b 100755 --- a/scripts/make_initatmos.bash +++ b/scripts/make_initatmos.bash @@ -94,8 +94,8 @@ else BLEND_BDY_TERRAIN=false fi -sed -e "s,#LABELI#,${start_date},g;s,#GEODAT#,${GEODATA},g;s,#RES#,${RES},g;s,#BLEND_BDY_TERRAIN#,${BLEND_BDY_TERRAIN},g" \ - ${SCRIPTS}/namelists/namelist.init_atmosphere.TEMPLATE > ${DIRRUN}/namelist.init_atmosphere +sed -e "s,#LABELI#,${start_date},g;s,#GEODAT#,${GEODATA},g;s,#RES#,${RES},g;s,#EXP#,${EXP},g;s,#BLEND_BDY_TERRAIN#,${BLEND_BDY_TERRAIN},g" \ + ${SCRIPTS}/namelists/namelist.init_atmosphere.TEMPLATE > ${DIRRUN}/namelist.init_atmosphere sed -e "s,#RES#,${RES},g" \ ${SCRIPTS}/namelists/streams.init_atmosphere.TEMPLATE > ${DIRRUN}/streams.init_atmosphere diff --git a/scripts/make_lbcs.bash b/scripts/make_lbcs.bash index 730a136..37de28f 100755 --- a/scripts/make_lbcs.bash +++ b/scripts/make_lbcs.bash @@ -52,36 +52,30 @@ hhi=${YYYYMMDDHHi:8:2} yyyymmddhhf=$(date +"%Y%m%d%H" -d "${yyyymmddi} ${hhi}:00 ${FCST} hours" ) final_date=${yyyymmddhhf:0:4}-${yyyymmddhhf:4:2}-${yyyymmddhhf:6:2}_${yyyymmddhhf:8:2}:00:00 GEODATA=${DATAIN}/WPS_GEOG -cores=${INITATMOS_ncores} +cores=${LBCS_ncores} export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRUN} #------------------------------------------------------- mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs -if [ ! -s ${DATAIN}/fixed/${RES}.graph.info.part.${cores} ] +if [ ! -s ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ] then - if [[ ${RES} == x1.* ]] + if [ ! -s ${DATAIN}/fixed/x1.${RES}.graph.info ] then - if [ ! -s ${DATAIN}/fixed/${RES}.graph.info ] - then - cd ${DATAIN}/fixed - echo -e "${GREEN}==>${NC} downloading meshes tgz files ... \n" - wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/${RES}.tar.gz - wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/${RES}_static.tar.gz - tar -xzvf ${RES}.tar.gz - tar -xzvf ${RES}_static.tar.gz - fi - echo -e "${GREEN}==>${NC} Creating ${RES}.graph.info.part.${cores} ... \n" cd ${DATAIN}/fixed - gpmetis -minconn -contig -niter=200 ${RES}.graph.info ${cores} - rm -fr ${RES}.tar.gz ${RES}_static.tar.gz - else - echo -e "${GREEN}==>${NC} Creating ${RES}.graph.info.part.${cores} ... \n" + echo -e "${GREEN}==>${NC} downloading meshes tgz files ... \n" cd ${DATAIN}/fixed - gpmetis -minconn -contig -niter=200 ${RES}.graph.info ${cores} + wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}.tar.gz + wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}_static.tar.gz + tar -xzvf x1.${RES}.tar.gz + tar -xzvf x1.${RES}_static.tar.gz fi + echo -e "${GREEN}==>${NC} Creating x1.${RES}.graph.info.part.${cores} ... \n" + cd ${DATAIN}/fixed + gpmetis -minconn -contig -niter=200 x1.${RES}.graph.info ${cores} + rm -fr x1.${RES}.tar.gz x1.${RES}_static.tar.gz fi -files_needed=("${SCRIPTS}/namelists/namelist.init_atmosphere.LBCS" "${SCRIPTS}/namelists/streams.init_atmosphere.LBCS" "${DATAIN}/fixed/${RES}.graph.info.part.${cores}" "${DATAOUT}/${YYYYMMDDHHi}/Pre/${RES}.init.nc" "${EXECS}/init_atmosphere_model") +files_needed=("${SCRIPTS}/namelists/namelist.init_atmosphere.LBCS" "${SCRIPTS}/namelists/streams.init_atmosphere.LBCS" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc" "${EXECS}/init_atmosphere_model") for file in "${files_needed[@]}" do if [ ! -s "${file}" ] @@ -100,8 +94,8 @@ sed -e "s,#RES#,${RES},g;s,#LBCINT#,${LBCINT},g" \ ${SCRIPTS}/namelists/streams.init_atmosphere.LBCS > ${DIRRUN}/streams.init_atmosphere -cp -f ${DATAIN}/fixed/${RES}.graph.info.part.${cores} ${DIRRUN} -cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/${RES}.init.nc ${DIRRUN} +cp -f ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ${DIRRUN} +cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ${DIRRUN} cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/${EXP}\:* ${DIRRUN} cp -f ${EXECS}/init_atmosphere_model ${DIRRUN} @@ -111,7 +105,7 @@ rm -f ${DIRRUN}/lbcs.bash if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] then - sed -e "s,#JOBNAME#,${DEGRIB_jobname},g; + sed -e "s,#JOBNAME#,${LBCS_jobname},g; s,#NNODES#,${LBCS_nnodes},g; s,#NCPUS#,${LBCS_ncpus},g; s,#NTASKS#,${LBCS_ncores},g; @@ -119,14 +113,14 @@ then s,#NTHREADS#,${LBCS_nthreads},g; s,#PARTITION#,${LBCS_QUEUE},g; s,#WALLTIME#,${LBCS_walltime},g; - s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o,g; - s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e,g" \ + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.e,g" \ ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/lbcs.bash else echo "#!/bin/bash " > ${DIRRUN}/lbcs.bash fi -cat << EOF0 > ${DIRRUN}/lbcs.bash +cat << EOF0 >> ${DIRRUN}/lbcs.bash export executable=init_atmosphere_model @@ -134,20 +128,24 @@ ulimit -c unlimited ulimit -v unlimited ulimit -s unlimited - -. $(pwd)/setenv.bash +. ${SCRIPTS}/setenv.bash cd ${DIRRUN} +if [ "$HOSTNAME" = "egeon" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" + time mpirun -np ${LBCS_ncores} ./\${executable} +else + echo "-- PBS_JOBID: \$PBS_JOBID" + time mpirun --ppn ${LBCS_ncpn} -np ${LBCS_ncores} --depth=${LBCS_nthreads} --cpu-bind depth ./\${executable} +fi -date -time mpirun -np \${SLURM_NTASKS} ./\${executable} date mv ${DIRRUN}/log.init_atmosphere.0000.out ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/log.init_atmosphere.0000.${RES}.lbcs.nc.${YYYYMMDDHHi}.out mv ${DIRRUN}/namelist.init_atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/namelist.init_atmosphere.lbcs mv ${DIRRUN}/streams.init_atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/streams.init_atmosphere.lbcs -mv ${DIRRUN}/${RES}.init.nc ${DATAOUT}/${YYYYMMDDHHi}/Pre +mv ${DIRRUN}/x1.${RES}.init.nc ${DATAOUT}/${YYYYMMDDHHi}/Pre mv ${DIRRUN}/lbc*.nc ${DATAOUT}/${YYYYMMDDHHi}/Pre EOF0 @@ -185,4 +183,9 @@ then fi chmod 775 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* +JOBID=$(sed -n '4p' ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.o | awk '{print $3}' | sed "s/.pbs-ha//g") +mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.o ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.o.${JOBID} +mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.e ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.e.${JOBID} +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.o.${JOBID} +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.e.${JOBID} rm -fr ${DIRRUN} diff --git a/scripts/make_template.bash b/scripts/make_template.bash index 73ae529..b1983ec 100755 --- a/scripts/make_template.bash +++ b/scripts/make_template.bash @@ -90,63 +90,89 @@ IFS=":" read -r h m s <<< "${t_strout}" printf -v t_strout "%02d:%02d:%02d" "$h" "$m" "$s" # Calculating default parameters for different resolutions -if [ $RES -eq 40962 ]; then #120Km - NLAT=150 #180/1.2 - NLON=300 #360/1.2 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 163842 ]; then #60Km - NLAT=301 #180/0.6 - NLON=601 #360/0.6 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 655362 ]; then #30Km - NLAT=601 #180/0.3 - NLON=1201 #360/0.3 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 1024002 ]; then #24Km - NLAT=721 #180/0.25 - NLON=1441 #360/0.25 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 2621442 ]; then #15Km - NLAT=1201 #180/0.15 - NLON=2401 #360/0.15 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 5898242 ]; then #10Km - NLAT=1801 #180/0.10 (+1) - NLON=3601 #360/0.10 (+1) - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 23592962 ]; then #5Km - NLAT=3601 #180/0.05 - NLON=7201 #360/0.05 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 65536002 ]; then #3Km - NLAT=6001 #180/0.03 - NLON=12001 #360/0.03 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 +if [[ $MODERUN == "G" ]]; then + if [ $RES -eq 40962 ]; then #120Km + NLAT=151 #180/1.2 + NLON=301 #360/1.2 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 + elif [ $RES -eq 163842 ]; then #60Km + NLAT=301 #180/0.6 + NLON=601 #360/0.6 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 + elif [ $RES -eq 655362 ]; then #30Km + NLAT=601 #180/0.3 + NLON=1201 #360/0.3 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 + elif [ $RES -eq 1024002 ]; then #24Km + NLAT=721 #180/0.25 + NLON=1441 #360/0.25 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 + elif [ $RES -eq 2621442 ]; then #15Km + NLAT=1201 #180/0.15 + NLON=2401 #360/0.15 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 + elif [ $RES -eq 5898242 ]; then #10Km + NLAT=1801 #180/0.10 (+1) + NLON=3601 #360/0.10 (+1) + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 + elif [ $RES -eq 23592962 ]; then #5Km + NLAT=3601 #180/0.05 + NLON=7201 #360/0.05 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 + elif [ $RES -eq 65536002 ]; then #3Km + NLAT=6001 #180/0.03 + NLON=12001 #360/0.03 + STARTLAT=-90.0 + STARTLON=0.0 + ENDLAT=90.0 + ENDLON=360.0 + fi +elif [[ $MODERUN == "R" ]]; then + if [[ "$RES" == "655362.REG.AMS_CAR" ]]; then #30 km (AMS + Caribe) + NLAT=368 #110/0.3 +1 + NLON=334 #100/0.3 +1 + STARTLAT=-65.0 + ENDLAT=40 + STARTLON=240.0 + ENDLON=340.0 + elif [[ $RES == "5898242.REG.AMS_CAR" ]]; then #10 km (AMS + Caribe) + NLAT=1101 #110/0.1 + 1 + NLON=1001 #100/0.1 + 1 + STARTLAT=-70.0 + ENDLAT=40.0 + STARTLON=240.0 + ENDLON=340.0 + elif [[ $RES == "23592962.REG.AMS_CAR" ]]; then #5 km (AMS + Caribe) + NLAT=2201 #110/0.05 + 1 + NLON=2001 #100/0.05 + 1 + STARTLAT=-70.0 + ENDLAT=40.0 + STARTLON=240.0 + ENDLON=340.0 + fi fi + #------------------------------------------------------- # NLEVS get from t_iso_levels in Registry_isobaric.xml: diff --git a/scripts/namelists/namelist.init_atmosphere.LBCS b/scripts/namelists/namelist.init_atmosphere.LBCS index 2622af6..8e4ba81 100755 --- a/scripts/namelists/namelist.init_atmosphere.LBCS +++ b/scripts/namelists/namelist.init_atmosphere.LBCS @@ -44,5 +44,5 @@ config_pio_stride = 1 / &decomposition - config_block_decomp_file_prefix = '#RES#.graph.info.part.' + config_block_decomp_file_prefix = 'x1.#RES#.graph.info.part.' / diff --git a/scripts/namelists/streams.init_atmosphere.LBCS b/scripts/namelists/streams.init_atmosphere.LBCS index e073431..234cd40 100755 --- a/scripts/namelists/streams.init_atmosphere.LBCS +++ b/scripts/namelists/streams.init_atmosphere.LBCS @@ -1,7 +1,7 @@ Date: Wed, 1 Jul 2026 01:32:08 +0000 Subject: [PATCH 3/5] fixed regional feature and ERA5 - issue #1001 #956 --- scripts/0.run_all.bash | 7 +- scripts/1.install_monan.bash | 6 - scripts/2.pre_processing.bash | 6 +- scripts/3.run_model.bash | 46 +- scripts/4.run_post.bash | 78 +- scripts/make_degrib_ERA5.bash | 218 +++--- scripts/make_degrib_GFS.bash | 89 ++- scripts/make_initatmos.bash | 4 +- scripts/make_lbcs.bash | 4 +- scripts/make_static.bash | 4 +- scripts/make_template.bash | 103 +-- scripts/namelists/include_fields.diag | 72 -- scripts/namelists/include_fields.diag.CD-CT | 695 ------------------ scripts/namelists/include_fields.diag.GCC | 72 -- .../stream_list.atmosphere.diagnostics | 72 -- .../stream_list.atmosphere.diagnostics.CD-CT | 695 ------------------ .../stream_list.atmosphere.diagnostics.GCC | 72 -- scripts/namelists/streams.atmosphere.TEMPLATE | 4 +- scripts/stools/setenv_PBS_ian_cray.bash | 11 +- scripts/stools/setenv_PBS_ian_gnu.bash | 12 +- scripts/stools/setenv_PBS_ian_intel.bash | 5 +- 21 files changed, 288 insertions(+), 1987 deletions(-) delete mode 100755 scripts/namelists/include_fields.diag delete mode 100755 scripts/namelists/include_fields.diag.CD-CT delete mode 100755 scripts/namelists/include_fields.diag.GCC delete mode 100755 scripts/namelists/stream_list.atmosphere.diagnostics delete mode 100755 scripts/namelists/stream_list.atmosphere.diagnostics.CD-CT delete mode 100755 scripts/namelists/stream_list.atmosphere.diagnostics.GCC diff --git a/scripts/0.run_all.bash b/scripts/0.run_all.bash index 4fa50e4..b7159ad 100755 --- a/scripts/0.run_all.bash +++ b/scripts/0.run_all.bash @@ -41,9 +41,10 @@ EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} github_link="https://github.com/monanadmin/MONAN-Model.git" monan_branch=1.4.3-rc convertmpas_branch=1.2.0 -EXP=GFS -RES=1024002 #Options: 40962=120km;163842=60km;655362=30Km;1024002=24km;2621442=15Km;5898242=10Km -YYYYMMDDHHi=2026012000 +EXP=GFS #Options - GFS or ERA +RES=1024002 #Options - Global: 40962=120km; 163842=60km; 655362=30Km; 1024002=24km; 2621442=15Km; 5898242=10Km + #Options - Regional: 655362.REG.AMS_CAR=30km; 5898242.REG.AMS_CAR=10km; 23592962.REG.AMS_CAR=5km +YYYYMMDDHHi=2026012000 #Check dates disponible for the initial condition (CI) using ERA5 FCST=24 #---------------------------------------------------------------------- diff --git a/scripts/1.install_monan.bash b/scripts/1.install_monan.bash index a797ca1..fb1fc61 100755 --- a/scripts/1.install_monan.bash +++ b/scripts/1.install_monan.bash @@ -219,9 +219,6 @@ MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.atmosphere" make clean CORE=atmosphere make -j 8 ${MAKE_TARG} CORE=atmosphere OPENMP=true USE_PIO2=false PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} -#make -j 8 ${MAKE_TARG} CORE=atmosphere OPENMP=true USE_PIO2=true PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} - -#make -j 8 intel-xd2000 CORE=atmosphere OPENMP=true USE_PIO2=false PRECISION=single OPTIMIZATION_LEVEL=O1 FFLAGS_OPT=-O1 CFLAGS_OPT=-O1 CXXFLAGS_OPT=-O1 2>&1 | tee \${MAKE_OUT_FILE} #CR: TODO: put verify here if executable was created ok @@ -235,9 +232,6 @@ MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.init_atmosphere" make clean CORE=init_atmosphere make -j 8 ${MAKE_TARG2} CORE=init_atmosphere OPENMP=true USE_PIO2=false PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} -#make -j 8 ${MAKE_TARG2} CORE=init_atmosphere OPENMP=true USE_PIO2=true PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} - -#make -j 8 intel-xd2000 CORE=init_atmosphere OPENMP=true USE_PIO2=false PRECISION=single OPTIMIZATION_LEVEL=O1 FFLAGS_OPT=-O1 CFLAGS_OPT=-O1 CXXFLAGS_OPT=-O1 2>&1 | tee \${MAKE_OUT_FILE} mv ${MONANDIR}/init_atmosphere_model ${EXECS} diff --git a/scripts/2.pre_processing.bash b/scripts/2.pre_processing.bash index 9cc8a0b..2420911 100755 --- a/scripts/2.pre_processing.bash +++ b/scripts/2.pre_processing.bash @@ -94,7 +94,7 @@ then fi # Creating the x1.${RES}.static.nc file once, if does not exist yet:--------------- -if [[ $EXP == "GFS" || $EXP == "ERA5" ]]; then +if [[ ${EXP} == "GFS" || ${EXP} == "ERA5" || ${EXP} == "ERA" ]]; then if [ ! -s ${DATAIN}/fixed/x1.${RES}.static.nc ] then echo -e "${GREEN}==>${NC} Creating static.bash for submiting init_atmosphere to create x1.${RES}.static.nc...\n" @@ -116,7 +116,7 @@ if [[ ${EXP} == "GFS" ]] then echo -e "${GREEN}==>${NC} Submitting Degrib for GFS data...\n" time ./make_degrib_GFS.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} -elif [[ ${EXP} == "ERA5" ]] +elif [[ ${EXP} == "ERA5" || ${EXP} == "ERA" ]] then echo -e "${GREEN}==>${NC} Submitting Degrib for ERA5 data...\n" time ./make_degrib_ERA5.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} @@ -129,7 +129,7 @@ fi #---------------------------------------------------------------------------------- # Init Atmosphere phase:------------------------------------------------------------ -if [[ $EXP == "GFS" || $EXP == "ERA5" ]]; then +if [[ ${EXP} == "GFS" || ${EXP} == "ERA5" || ${EXP} == "ERA" ]]; then echo -e "${GREEN}==>${NC} Submitting Init Atmosphere for real case...\n" time ./make_initatmos.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} else diff --git a/scripts/3.run_model.bash b/scripts/3.run_model.bash index 81a0d13..0b3961d 100755 --- a/scripts/3.run_model.bash +++ b/scripts/3.run_model.bash @@ -89,39 +89,41 @@ printf -v t_strout "%02d:%02d:%02d" "$h" "$m" "$s" # From now on, CONFI_LEN_DISP becames cte = 0.0, pickin up this value from static file. # Calculating default parameters for different resolutions -if [ $RES -eq 40962 ]; then #120Km +# global mesh +if [[ "$RES" == "40962" ]]; then #120Km CONFIG_DT=600.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 163842 ]; then #60Km +elif [[ "$RES" == "163842" ]]; then #60Km CONFIG_DT=300.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 655362 ]; then #30Km +elif [[ "$RES" == "655362" ]]; then #30Km CONFIG_DT=150.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [[ "$RES" == "655362.REG.AMS_CAR" ]]; then #30 km (AMS + Caribe) - CONFIG_DT=150.0 - CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 1024002 ]; then #24Km +elif [[ "$RES" == "1024002" ]]; then #24Km CONFIG_DT=150.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 2621442 ]; then #15Km +elif [[ "$RES" == "2621442" ]]; then #15Km CONFIG_DT=90.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 5898242 ]; then #10Km +elif [[ "$RES" == "5898242" ]]; then #10Km CONFIG_DT=60.0 CONFIG_CONV_INTERVAL="00:15:00" +elif [[ "$RES" == "23592962" ]]; then #5km + CONFIG_DT=30.0 + CONFIG_CONV_INTERVAL="00:15:00" +elif [[ "$RES" == "65536002" ]]; then #3Km + CONFIG_DT=18.0 + CONFIG_CONV_INTERVAL="00:15:00" +# regional mesh +elif [[ "$RES" == "655362.REG.AMS_CAR" ]]; then #30 km (AMS + Caribe) + CONFIG_DT=150.0 + CONFIG_CONV_INTERVAL="00:15:00" elif [[ "$RES" == "5898242.REG.AMS_CAR" ]]; then #10 km (AMS + Caribe) CONFIG_DT=60.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 23592962 ]; then #5km - CONFIG_DT=30.0 - CONFIG_CONV_INTERVAL="00:15:00" elif [[ "$RES" == "23592962.REG.AMS_CAR" ]]; then #5 km (AMS + Caribe) CONFIG_DT=30.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 65536002 ]; then #3Km - CONFIG_DT=18.0 - CONFIG_CONV_INTERVAL="00:15:00" else echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" echo -e "${RED}==>${NC} [${0}] Simulation parameters for resolution $RES have not been set! Edit them in '3.run_model.bash'.\n" @@ -129,11 +131,13 @@ else fi #------------------------------------------------------- -# Setting configuration to apply or not lateral boundary conditions +# Setting configuration to apply or not lateral boundary conditions and output filename if [[ $MODERUN == "R" ]]; then APPLY_LBCS=true + RORG=R elif [[ $MODERUN == "G" ]]; then APPLY_LBCS=false + RORG=G else echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" echo -e "${RED}==>${NC} Atmosphere phase fails! Please select MODERUN=R (Regional) or MODERUN=G (Global) in 'setenv.bash' so that MONAN knows whether to read or not lateral boundary conditions.\n" @@ -156,14 +160,12 @@ then cd ${DATAIN}/fixed echo -e "${GREEN}==>${NC} downloading meshes tgz files ... \n" wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}.tar.gz - wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}_static.tar.gz tar -xzvf x1.${RES}.tar.gz - tar -xzvf x1.${RES}_static.tar.gz fi echo -e "${GREEN}==>${NC} Creating x1.${RES}.graph.info.part.${cores} ... \n" cd ${DATAIN}/fixed gpmetis -minconn -contig -niter=200 x1.${RES}.graph.info ${cores} - rm -fr x1.${RES}.tar.gz x1.${RES}_static.tar.gz + rm -fr x1.${RES}.tar.gz fi @@ -190,13 +192,13 @@ cp -f ${DATAIN}/fixed/Vtable.${EXP} ${DIRRUN} if [[ $MODERUN == "R" ]]; then cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/lbc*.nc ${DIRRUN} fi -if [[ ${EXP} == "GFS" || ${EXP} == "ERA5" ]] +if [[ ${EXP} == "GFS" || ${EXP} == "ERA5" || ${EXP} == "ERA" ]] then sed -e "s,#LABELI#,${start_date},g;s,#FCSTS#,${DD_HHMMSS_forecast},g;s,#RES#,${RES},g; s,#CONFIG_DT#,${CONFIG_DT},g;s,#CONFIG_LEN_DISP#,${CONFIG_LEN_DISP},g;s,#CONFIG_CONV_INTERVAL#,${CONFIG_CONV_INTERVAL},g;s,#APPLY_LBCS#,${APPLY_LBCS},g" \ ${SCRIPTS}/namelists/namelist.atmosphere.TEMPLATE > ${DIRRUN}/namelist.atmosphere - sed -e "s,#RES#,${RES},g;s,#LBCINT#,${LBCINT},g;s,#CIORIG#,${EXP},g;s,#LABELI#,${YYYYMMDDHHi},g;s,#NLEV#,${NLEV},g" \ + sed -e "s,#RES#,${RES},g;s,#RORG#,${RORG},g;s,#LBCINT#,${LBCINT},g;s,#CIORIG#,${EXP},g;s,#LABELI#,${YYYYMMDDHHi},g;s,#NLEV#,${NLEV},g" \ ${SCRIPTS}/namelists/streams.atmosphere.TEMPLATE > ${DIRRUN}/streams.atmosphere fi cp -f ${SCRIPTS}/namelists/stream_list.atmosphere.output ${DIRRUN} @@ -301,7 +303,7 @@ do i=$(printf "%04d" ${ii}) hh=${YYYYMMDDHHi:8:2} currentdate=$(date -d "${YYYYMMDDHHi:0:8} ${hh}:00:00 $(echo "(${i}-1)*${t_strout:0:2}" | bc) hours $(echo "(${i}-1)*${t_strout:3:2}" | bc) minutes $(echo "(${i}-1)*${t_strout:6:2}" | bc) seconds" +"%Y%m%d%H.%M.%S") - file=MONAN_DIAG_G_MOD_${EXP}_${YYYYMMDDHHi}_${currentdate}.x${RES}L${NLEV}.nc + file=MONAN_DIAG_${RORG}_MOD_${EXP}_${YYYYMMDDHHi}_${currentdate}.x${RES}L${NLEV}.nc if [ ! -s ${DATAOUT}/${YYYYMMDDHHi}/Model/${file} ] then diff --git a/scripts/4.run_post.bash b/scripts/4.run_post.bash index 9a8d4f3..72abdc9 100755 --- a/scripts/4.run_post.bash +++ b/scripts/4.run_post.bash @@ -83,88 +83,104 @@ t_stroutsec=$(echo ${t_strout} | awk -F: '{print ($1 * 3600) + ($2 * 60) + $3}') t_strouthor=$(echo "scale=4; (${t_stroutsec}/60)/60" | bc) #------------------------------------------------------------------------------------ +# Definindo G ou R no MONAN_DIAG +if [[ $MODERUN == "R" ]]; then + RORG=R +elif [[ $MODERUN == "G" ]]; then + RORG=G +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} Post fails! Please select MODERUN=R (Regional) or MODERUN=G (Global) in 'setenv.bash'.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi +#------------------------------------------------------------------------------------ + + # Format to HH:MM:SS t_strout (output_interval) IFS=":" read -r h m s <<< "${t_strout}" printf -v t_strout "%02d:%02d:%02d" "$h" "$m" "$s" # Calculating default parameters for different resolutions -if [ $RES -eq 40962 ]; then #120Km +# global mesh +if [[ "$RES" == "40962" ]]; then #120Km NLAT=151 #180/1.2 NLON=301 #360/1.2 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 -elif [ $RES -eq 163842 ]; then #60Km +elif [[ "$RES" == "163842" ]]; then #60Km NLAT=301 #180/0.6 NLON=601 #360/0.6 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 -elif [ $RES -eq 655362 ]; then #30Km +elif [[ "$RES" == "655362" ]]; then #30Km NLAT=601 #180/0.3 NLON=1201 #360/0.3 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 -elif [[ $RES == "655362.REG.AMS_CAR" ]]; then #30 km (AMS + Caribe) - NLAT=368 #110/0.3 +1 - NLON=334 #100/0.3 +1 - STARTLAT=-70.0 - ENDLAT=40 - STARTLON=240.0 - ENDLON=340.0 -elif [ $RES -eq 1024002 ]; then #24Km +elif [[ "$RES" == "1024002" ]]; then #24Km NLAT=721 #180/0.25 NLON=1441 #360/0.25 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 -elif [ $RES -eq 2621442 ]; then #15Km +elif [[ "$RES" == "2621442" ]]; then #15Km NLAT=1201 #180/0.15 NLON=2401 #360/0.15 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 -elif [ $RES -eq 5898242 ]; then #10Km +elif [[ "$RES" == "5898242" ]]; then #10Km NLAT=1801 #180/0.10 NLON=3601 #360/0.10 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 -elif [[ $RES == "5898242.REG.AMS_CAR" ]]; then #10 km (AMS + Caribe) - NLAT=1101 #110/0.1 +1 - NLON=1001 #100/0.1 +1 - STARTLAT=-70.0 - ENDLAT=40.0 - STARTLON=240.0 - ENDLON=340.0 -elif [ $RES -eq 23592962 ]; then #5Km +elif [[ "$RES" == "23592962" ]]; then #5Km NLAT=3601 #180/0.05 NLON=7201 #360/0.05 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 -elif [[ $RES == "23592962.REG.AMS_CAR" ]]; then #5 km (AMS + Caribe) - NLAT=2201 #110/0.05 +1 - NLON=2001 #100/0.05 +1 - STARTLAT=-70.0 - ENDLAT=40.0 - STARTLON=240.0 - ENDLON=340.0 -elif [ $RES -eq 65536002 ]; then #3Km +elif [[ "$RES" == "65536002" ]]; then #3Km NLAT=6001 #180/0.03 NLON=12001 #360/0.03 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 +# regional mesh +elif [[ "$RES" == "655362.REG.AMS_CAR" ]]; then #30 km (AMS + Caribe) + NLAT=354 #106/0.3 +1 + NLON=301 #90/0.3 +1 + STARTLAT=-64.0 + ENDLAT=42 + STARTLON=254.0 + ENDLON=344.0 +elif [[ "$RES" == "5898242.REG.AMS_CAR" ]]; then #10 km (AMS + Caribe) + NLAT=1061 #106/0.1 +1 + NLON=901 #90/0.1 +1 + STARTLAT=-64.0 + ENDLAT=42.0 + STARTLON=254.0 + ENDLON=344.0 +elif [[ "$RES" == "23592962.REG.AMS_CAR" ]]; then #5 km (AMS + Caribe) + NLAT=2121 #106/0.05 +1 + NLON=1801 #90/0.05 +1 + STARTLAT=-64.0 + ENDLAT=42.0 + STARTLON=254.0 + ENDLON=344.0 fi #------------------------------------------------------- @@ -270,7 +286,7 @@ do chmod 755 * hh=${YYYYMMDDHHi:8:2} currentdate=\$(date -d "${YYYYMMDDHHi:0:8} \${hh}:00:00 \$(echo "(\${i}-1)*${t_strout:0:2}" | bc) hours \$(echo "(\${i}-1)*${t_strout:3:2}" | bc) minutes \$(echo "(\${i}-1)*${t_strout:6:2}" | bc) seconds" +"%Y%m%d%H.%M.%S") - diag_name=MONAN_DIAG_G_MOD_${EXP}_${YYYYMMDDHHi}_\${currentdate}.x${RES}L${N_MODEL_LEV}.nc + diag_name=MONAN_DIAG_${RORG}_MOD_${EXP}_${YYYYMMDDHHi}_\${currentdate}.x${RES}L${N_MODEL_LEV}.nc echo "" echo "executando convert mpas" chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Model/* @@ -286,7 +302,7 @@ do i=\$(printf "%04d" \${ii}) hh=${YYYYMMDDHHi:8:2} currentdate=\$(date -d "${YYYYMMDDHHi:0:8} \${hh}:00:00 \$(echo "(\${i}-1)*${t_strout:0:2}" | bc) hours \$(echo "(\${i}-1)*${t_strout:3:2}" | bc) minutes \$(echo "(\${i}-1)*${t_strout:6:2}" | bc) seconds" +"%Y%m%d%H.%M.%S") - diag_name_post=MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_\${currentdate}.x${RES}L${N_MODEL_LEV}.nc + diag_name_post=MONAN_DIAG_${RORG}_POS_${EXP}_${YYYYMMDDHHi}_\${currentdate}.x${RES}L${N_MODEL_LEV}.nc cd ${DIRRUN}/dir.\${i} chmod 755 * diff --git a/scripts/make_degrib_ERA5.bash b/scripts/make_degrib_ERA5.bash index 37c8849..25a92f4 100755 --- a/scripts/make_degrib_ERA5.bash +++ b/scripts/make_degrib_ERA5.bash @@ -1,13 +1,14 @@ #!/bin/bash +umask 022 -if [ $# -ne 6 ] +if [ $# -ne 4 ] then echo "" echo "Instructions: execute the command below" echo "" echo "${0} EXP_NAME RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS" + echo "EXP_NAME :: Forcing: GFS or ERA5" echo " :: Others options to be added later..." echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" @@ -26,6 +27,9 @@ echo "" echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" . setenv.bash +echo "" +echo "---- Make Degrib ${EXP} ----" +echo "" # Standart directories variables:--------------------------------------- DIRHOMES=${DIR_SCRIPTS}/scripts_CD-CT; mkdir -p ${DIRHOMES} @@ -39,54 +43,46 @@ EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} # Input variables:-------------------------------------- -EXP=${1}; #EXP=GFS -MESH=${2}; #MESH +EXP=${1}; #EXP=ERA5 +RES=${2}; #RES=1024002 YYYYMMDDHHi=${3}; #YYYYMMDDHHi=2024012000 FCST=${4}; #FCST=24 -REGIONAL=${5}; #REGIONAL=Y -LBCINT=${6}; #LBCINT=21600 #------------------------------------------------------- -source utils.bash - # Local variables-------------------------------------- start_date=${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}_${YYYYMMDDHHi:8:2}:00:00 -YYYYMMDDHHf=$(add_hours "$YYYYMMDDHHi" "$FCST") -final_date=${YYYYMMDDHHf:0:4}-${YYYYMMDDHHf:4:2}-${YYYYMMDDHHf:6:2}_${YYYYMMDDHHf:8:2}:00:00 -## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -## !!!!!!!!!!! ATENCAO: AQUI ESTA SENDO ASSUMIDO QUE TODOS OS DADOS DO ERA5 NECESSARIOS PARA O !!!!!!!!!!! -## !!!!!!!!!!! EXPERIMENTO ESTAO NO SEGUINTE DIRETORIO: !!!!!!!!!!! -## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -ERA5_DATA=/pesq/share/monan/curso_OMM_INPE_2025/CGFD-USP_Cases/MPAS-BR/met_data/ERA5/DATA -## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -BNDDIR=${ERA5_DATA} +yyyymmddi=${YYYYMMDDHHi:0:8} +hhi=${YYYYMMDDHHi:8:2} +yyyymmddhhf=$(date +"%Y%m%d%H" -d "${yyyymmddi} ${hhi}:00 ${FCST} hours" ) +final_date=${yyyymmddhhf:0:4}-${yyyymmddhhf:4:2}-${yyyymmddhhf:6:2}_${yyyymmddhhf:8:2}:00:00 export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRUN} #------------------------------------------------------- mkdir -p ${DATAIN}/${YYYYMMDDHHi} mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs -mkdir -p ${HOME}/local/lib64 -cp -f /usr/lib64/libjasper.so* ${HOME}/local/lib64 -cp -f /usr/lib64/libjpeg.so* ${HOME}/local/lib64 +if [ "$HOSTNAME" = "egeon" ]; then + mkdir -p ${HOME}/local/lib64 + cp -f /usr/lib64/libjasper.so* ${HOME}/local/lib64 + cp -f /usr/lib64/libjpeg.so* ${HOME}/local/lib64 +fi +BNDDIR=${GCCCIS}/${EXP}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi} -# Se nao existir CI no diretorio ERA5_data, aborta! +# Se nao existir CI no diretorio do GCC MONAN dir /beegfs/monan/CIs (Egeon), /p/projetos/monan_adm/monan/CIs (Jaci) busca em datain/EXP, se não aborta! if [ ! -s ${BNDDIR}/era5.pl.${YYYYMMDDHHi}.grib ] || [ ! -s ${BNDDIR}/era5.sl.${YYYYMMDDHHi}.grib ] then - echo -e "${RED}==>${NC}Condicao de contorno inexistente !" - echo -e "${RED}==>${NC}Check ${BNDDIR} or." - echo -e "${RED}==>${NC}Check ${GCCCIS}" - exit 1 + if [ -s ${DATAIN}/${EXP}/${YYYYMMDDHHi}/era5.pl.${YYYYMMDDHHi}.grib ] || [ ! -s ${DATAIN}/${EXP}/${YYYYMMDDHHi}/era5.sl.${YYYYMMDDHHi}.grib ] + then + echo -e "${RED}==>${NC}Condicao de contorno inexistente! - ${EXP}" + echo -e "${RED}==>${NC}Ciheck ${BNDDIR} or" + echo -e "${RED}==>${NC}Check ${DATAIN}/${EXP}." + exit 1 + else + BNDDIR=${DATAIN}/${EXP}/${YYYYMMDDHHi} + fi fi -## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -## !!!!!!!!!!! ATENCAO: AQUI ESTA SENDO ASSUMIDO QUE A TABELA Vtable.ECMWF EXISTE NESSE DIRETORIO !!!!!!!! -## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -# Copiar Vtable do ERA5 -cp /pesq/share/monan/curso_OMM_INPE_2025/CGFD-USP_Cases/WPS/ungrib/Variable_Tables/Vtable.ECMWF ${DATAIN}/fixed -## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -files_needed=("${DATAIN}/fixed/${MESH}.static.nc" "${DATAIN}/fixed/Vtable.ECMWF" "${EXECS}/ungrib.exe" "${BNDDIR}/era5.pl.${YYYYMMDDHHi}.grib" "${BNDDIR}/era5.sl.${YYYYMMDDHHi}.grib") +files_needed=("${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/Vtable.${EXP}" "${EXECS}/ungrib.exe" "${BNDDIR}/era5.pl.${YYYYMMDDHHi}.grib" "${BNDDIR}/era5.sl.${YYYYMMDDHHi}.grib") for file in "${files_needed[@]}" do if [ ! -s "${file}" ] @@ -98,30 +94,42 @@ do done # Copia arquivos necessarios para diretorio DIRRUN -cp -f ${DATAIN}/fixed/${MESH}.static.nc ${DIRRUN} -cp -f ${DATAIN}/fixed/Vtable.ECMWF ${DIRRUN}/Vtable +cp -f ${DATAIN}/fixed/x1.${RES}.static.nc ${DIRRUN} +cp -f ${DATAIN}/fixed/Vtable.${EXP} ${DIRRUN}/Vtable cp -f ${EXECS}/ungrib.exe ${DIRRUN} cp -f ${SCRIPTS}/namelists/namelist.wps.TEMPLATE ${DIRRUN}/namelist.wps.TEMPLATE - cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} cp -f ${SCRIPTS}/link_grib.csh ${DIRRUN} -rm -f ${DIRRUN}/degrib.bash - -if [[ $REGIONAL == "Y" ]]; then - echo "REGIONAL=Y. Degribbing ERA5 data for both initial and lateral boundary conditions..." - cp -f ${BNDDIR}/era5.pl.*.grib ${DATAIN}/${YYYYMMDDHHi} - cp -f ${BNDDIR}/era5.sl.*.grib ${DATAIN}/${YYYYMMDDHHi} - cat << EOF0 > ${DIRRUN}/degrib.bash -#!/bin/bash -x -#SBATCH --job-name=${DEGRIB_jobname} -#SBATCH --nodes=${DEGRIB_nnodes} -#SBATCH --partition=${DEGRIB_QUEUE} -#SBATCH --ntasks=${DEGRIB_ncores} -#SBATCH --tasks-per-node=${DEGRIB_ncpn} # ic for benchmark -#SBATCH --time=${STATIC_walltime} -#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e%j # File name for standard error output -# +rm -f ${DIRRUN}/degrib_${EXP}.bash + +if [[ $MODERUN == "R" ]]; then + echo "MODERUN=R. Degribbing ERA5 data for both initial and lateral boundary conditions..." + dt=$((LBCINT / 3600)) + for ((hour=0; hour<=FCST; hour+=dt)); do + valid_date=$(date -u -d "${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2} ${YYYYMMDDHHi:8:2}:00:00 UTC ${hour} hour" +"%Y%m%d%H") + echo "Temporarily copying ERA5 data: era5.pl|sl.${valid_date}.grib" + cp -f ${BNDDIR}/era5.pl.${valid_date}.grib ${DATAIN}/${YYYYMMDDHHi} + cp -f ${BNDDIR}/era5.sl.${valid_date}.grib ${DATAIN}/${YYYYMMDDHHi} + done + + if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] + then + sed -e "s,#JOBNAME#,${DEGRIB_jobname},g; + s,#NNODES#,${DEGRIB_nnodes},g; + s,#NCPUS#,${DEGRIB_ncpus},g; + s,#NTASKS#,${DEGRIB_ncores},g; + s,#NTASKSPNODE#,${DEGRIB_ncpn},g; + s,#NTHREADS#,${DEGRIB_nthreads},g; + s,#PARTITION#,${DEGRIB_QUEUE},g; + s,#WALLTIME#,${DEGRIB_walltime},g; + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e,g" \ + ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/degrib_${EXP}.bash + else + echo "#!/bin/bash " > ${DIRRUN}/degrib_${EXP}.bash + fi + + cat << EOF0 >> ${DIRRUN}/degrib_${EXP}.bash ulimit -s unlimited ulimit -c unlimited @@ -129,26 +137,30 @@ ulimit -v unlimited export PMIX_MCA_gds=hash - export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${HOME}/local/lib64 cd ${DIRRUN} -. setenv.bash +. ${SCRIPTS}/setenv.bash + +echo "-- PBS_JOBID: \$PBS_JOBID" ldd ungrib.exe rm -f GRIBFILE.* namelist.wps - -sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${final_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,ERA5,g" \ +sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${final_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,${EXP},g" \ ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps ./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/era5.*.grib +chmod 755 * +echo "" date +echo "submetendo jobs ungrib" + time mpirun -np 1 ./ungrib.exe -date +date grep "Successful completion of program ungrib.exe" ${DIRRUN}/ungrib.log >& /dev/null @@ -165,8 +177,7 @@ fi # mv ungrib.log ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/ungrib.${start_date}.log mv namelist.wps ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/namelist.${start_date}.wps - mv ERA5* ${DATAOUT}/${YYYYMMDDHHi}/Pre - + mv ${EXP}* ${DATAOUT}/${YYYYMMDDHHi}/Pre rm -fr ${DATAIN}/${YYYYMMDDHHi} echo "End of degrib Job" @@ -174,22 +185,29 @@ echo "End of degrib Job" EOF0 - -elif [[ $REGIONAL == "N" ]]; then - echo "REGIONAL=N. Degribbing ERA5 data only for initial conditions..." +elif [[ ${MODERUN} == "G" ]]; then + echo "MODERUN=G. Degribbing ERA5 data only for initial conditions..." cp -f ${BNDDIR}/era5.pl.${YYYYMMDDHHi}.grib ${DATAIN}/${YYYYMMDDHHi} cp -f ${BNDDIR}/era5.sl.${YYYYMMDDHHi}.grib ${DATAIN}/${YYYYMMDDHHi} - cat << EOF0 > ${DIRRUN}/degrib.bash -#!/bin/bash -x -#SBATCH --job-name=${DEGRIB_jobname} -#SBATCH --nodes=${DEGRIB_nnodes} -#SBATCH --partition=${DEGRIB_QUEUE} -#SBATCH --ntasks=${DEGRIB_ncores} -#SBATCH --tasks-per-node=${DEGRIB_ncpn} # ic for benchmark -#SBATCH --time=${STATIC_walltime} -#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e%j # File name for standard error output -# + + if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] + then + sed -e "s,#JOBNAME#,${DEGRIB_jobname},g; + s,#NNODES#,${DEGRIB_nnodes},g; + s,#NCPUS#,${DEGRIB_ncpus},g; + s,#NTASKS#,${DEGRIB_ncores},g; + s,#NTASKSPNODE#,${DEGRIB_ncpn},g; + s,#NTHREADS#,${DEGRIB_nthreads},g; + s,#PARTITION#,${DEGRIB_QUEUE},g; + s,#WALLTIME#,${DEGRIB_walltime},g; + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e,g" \ + ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/degrib_${EXP}.bash + else + echo "#!/bin/bash " > ${DIRRUN}/degrib_${EXP}.bash + fi + + cat << EOF0 >> ${DIRRUN}/degrib_${EXP}.bash ulimit -s unlimited ulimit -c unlimited @@ -197,26 +215,30 @@ ulimit -v unlimited export PMIX_MCA_gds=hash - export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${HOME}/local/lib64 cd ${DIRRUN} . setenv.bash +echo "-- PBS_JOBID: \$PBS_JOBID" + ldd ungrib.exe rm -f GRIBFILE.* namelist.wps - -sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${start_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,ERA5,g" \ +sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${start_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,${EXP},g" \ ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps ./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/era5.*.${YYYYMMDDHHi}.grib +chmod 755 * +echo "" date +echo "submetendo jobs ungrib" + time mpirun -np 1 ./ungrib.exe -date +date grep "Successful completion of program ungrib.exe" ${DIRRUN}/ungrib.log >& /dev/null @@ -233,8 +255,7 @@ fi # mv ungrib.log ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/ungrib.${start_date}.log mv namelist.wps ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/namelist.${start_date}.wps - mv ERA5\:${start_date:0:13} ${DATAOUT}/${YYYYMMDDHHi}/Pre - + mv ${EXP}\:${start_date:0:13} ${DATAOUT}/${YYYYMMDDHHi}/Pre rm -fr ${DATAIN}/${YYYYMMDDHHi} echo "End of degrib Job" @@ -244,19 +265,29 @@ EOF0 else echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" - echo -e "${RED}==>${NC} LBCs phase fails during degrib! Please select REGIONAL=Y or REGIONAL=N so that degrib can be done appropriately.\n" + echo -e "${RED}==>${NC} Make degrib phase fails during degrib! Please select REGIONAL=Y or REGIONAL=N so that degrib can be done appropriately.\n" echo -e "${RED}==>${NC} Exiting script. \n" exit -1 fi - -chmod a+x ${DIRRUN}/degrib.bash - -echo -e "${GREEN}==>${NC} Executing sbatch degrib.bash...\n" -cd ${DIRRUN} -sbatch --wait ${DIRRUN}/degrib.bash - - +chmod a+x ${DIRRUN}/degrib_${EXP}.bash + +case "${SCHEDULER_SYSTEM}" in + SLURM) + echo -e "${GREEN}==>${NC} Sbatch degrib_${EXP}.bash...\n" + cd ${DIRRUN} + sbatch --wait ${DIRRUN}/degrib_${EXP}.bash + ;; + PBS) + echo -e "${GREEN}==>${NC} Qsub degrib_${EXP}.bash...\n" + cd ${DIRRUN} + qsub -W block=true ${DIRRUN}/degrib_${EXP}.bash + ;; +# GENERIC) +# echo "Nenhum gerenciador detectado" +# ${DIRRUN}/degrib_${EXP}.bash +# ;; +esac files_ungrib=("${EXP}:${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}_${YYYYMMDDHHi:8:2}") for file in "${files_ungrib[@]}" @@ -271,5 +302,12 @@ do fi done -mv ${DIRRUN}/degrib.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs +mv ${DIRRUN}/degrib_${EXP}.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs +chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* + +JOBID=$(sed -n '4p' ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o | awk '{print $3}' | sed "s/.pbs-ha//g") +mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o.${JOBID} +mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e.${JOBID} +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o.${JOBID} +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e.${JOBID} rm -fr ${DIRRUN} diff --git a/scripts/make_degrib_GFS.bash b/scripts/make_degrib_GFS.bash index b9533b3..abe6f9c 100755 --- a/scripts/make_degrib_GFS.bash +++ b/scripts/make_degrib_GFS.bash @@ -9,7 +9,7 @@ then echo "" echo "${0} EXP_NAME RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS" + echo "EXP_NAME :: Forcing: GFS or ERA5" echo " :: Others options to be added later..." echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" @@ -29,7 +29,7 @@ echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" . setenv.bash echo "" -echo "---- Make Degrib ----" +echo "---- Make Degrib ${EXP} ----" echo "" # Standart directories variables:--------------------------------------- @@ -42,7 +42,6 @@ SOURCES=${DIRHOMES}/sources; mkdir -p ${SOURCES} EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} #---------------------------------------------------------------------- - # Input variables:-------------------------------------- EXP=${1}; #EXP=GFS RES=${2}; #RES=1024002 @@ -50,7 +49,6 @@ YYYYMMDDHHi=${3}; #YYYYMMDDHHi=2024012000 FCST=${4}; #FCST=24 #------------------------------------------------------- - # Local variables-------------------------------------- start_date=${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}_${YYYYMMDDHHi:8:2}:00:00 yyyymmddi=${YYYYMMDDHHi:0:8} @@ -68,34 +66,31 @@ if [ "$HOSTNAME" = "egeon" ]; then cp -f /usr/lib64/libjpeg.so* ${HOME}/local/lib64 fi -#Se nao existir CI no diretorio do IO, -# busca no nosso dir /beegfs/monan/CIs, se nao existir tbm, aborta! -#CR: BNDDIR should be setted just for EGEON machine -#CR: some local variables were mobed into the SLURM section, particularly for egeon - OPERDIREXP=${OPERDIR}/${EXP} BNDDIR=${OPERDIREXP}/0p25/brutos/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi:4:2}/${YYYYMMDDHHi:6:2}/${YYYYMMDDHHi:8:2} - -# Se nao existir CI no diretorio do IO, -# busca no nosso dir /beegfs/monan/CIs (Egeon) , /p/monan/CIs (xd2000) se nao existir tbm, aborta! +# Se nao existir CI no diretorio do IO, busca no GCC MONAN dir /beegfs/monan/CIs (Egeon), /p/projetos/monan_adm/monan/CIs +# Se nao existir tambem no GCC MONAN, busca em datain/EXP, se não aborta! #CR: maybe this if should belong to the SLURM kind of running... if [ ! -s ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ] then if [ ! -s ${GCCCIS}/${EXP}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ] then - echo -e "${RED}==>${NC}Condicao de contorno inexistente !" - echo -e "${RED}==>${NC}Check ${BNDDIR} or." - echo -e "${RED}==>${NC}Check ${GCCCIS}/${EXP}" - exit 1 - else + if [ -s ${DATAIN}/${EXP}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ] + then + echo -e "${RED}==>${NC}Condicao de contorno inexistente! - ${EXP}" + echo -e "${RED}==>${NC}Check ${BNDDIR} or" + echo -e "${RED}==>${NC}Check ${GCCCIS}/${EXP} or" + echo -e "${RED}==>${NC}Check ${DATAIN}/${EXP}." + exit 1 + else + BNDDIR=${DATAIN}/${EXP}/${YYYYMMDDHHi} + fi + else BNDDIR=${GCCCIS}/${EXP}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi} fi fi - -#files_needed=("${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/Vtable.${EXP}" "${EXECS}/ungrib.exe" "${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2") - files_needed=("${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/Vtable.${EXP}" "${EXECS}/ungrib.exe" "${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2") for file in "${files_needed[@]}" @@ -112,11 +107,9 @@ cp -f ${DATAIN}/fixed/x1.${RES}.static.nc ${DIRRUN} cp -f ${DATAIN}/fixed/Vtable.${EXP} ${DIRRUN}/Vtable cp -f ${EXECS}/ungrib.exe ${DIRRUN} cp -f ${SCRIPTS}/namelists/namelist.wps.TEMPLATE ${DIRRUN}/namelist.wps.TEMPLATE -#cp -f ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} -#cp -f ${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DIRRUN} cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} cp -f ${SCRIPTS}/link_grib.csh ${DIRRUN} -rm -f ${DIRRUN}/degrib.bash +rm -f ${DIRRUN}/degrib_${EXP}.bash if [[ $MODERUN == "R" ]]; then echo "MODERUN=R. Degribbing GFS data for both initial and lateral boundary conditions..." @@ -138,14 +131,14 @@ if [[ $MODERUN == "R" ]]; then s,#NTHREADS#,${DEGRIB_nthreads},g; s,#PARTITION#,${DEGRIB_QUEUE},g; s,#WALLTIME#,${DEGRIB_walltime},g; - s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o,g; - s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e,g" \ - ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/degrib.bash + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e,g" \ + ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/degrib_${EXP}.bash else - echo "#!/bin/bash " > ${DIRRUN}/degrib.bash + echo "#!/bin/bash " > ${DIRRUN}/degrib_${EXP}.bash fi - cat << EOF0 >> ${DIRRUN}/degrib.bash + cat << EOF0 >> ${DIRRUN}/degrib_${EXP}.bash ulimit -s unlimited ulimit -c unlimited @@ -165,7 +158,7 @@ ldd ungrib.exe rm -f GRIBFILE.* namelist.wps -sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${final_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,GFS,g" \ +sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${final_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,${EXP},g" \ ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps echo "" @@ -216,14 +209,14 @@ elif [[ $MODERUN == "G" ]]; then s,#NTHREADS#,${DEGRIB_nthreads},g; s,#PARTITION#,${DEGRIB_QUEUE},g; s,#WALLTIME#,${DEGRIB_walltime},g; - s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o,g; - s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e,g" \ - ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/degrib.bash + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e,g" \ + ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/degrib_${EXP}.bash else - echo "#!/bin/bash " > ${DIRRUN}/degrib.bash + echo "#!/bin/bash " > ${DIRRUN}/degrib_${EXP}.bash fi - cat << EOF0 >> ${DIRRUN}/degrib.bash + cat << EOF0 >> ${DIRRUN}/degrib_${EXP}.bash ulimit -s unlimited ulimit -c unlimited @@ -243,7 +236,7 @@ ldd ungrib.exe rm -f GRIBFILE.* namelist.wps -sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${start_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,GFS,g" \ +sed -e "s,#LABELI#,${start_date},g;s,#LABELF#,${start_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,${EXP},g" \ ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps ./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 @@ -278,27 +271,27 @@ EOF0 else echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" - echo -e "${RED}==>${NC} LBCs phase fails during degrib! Please select MODERUN=R or G so that degrib can be done appropriately.\n" + echo -e "${RED}==>${NC} Make degrib phase fails during degrib! Please select MODERUN=R or G so that degrib can be done appropriately.\n" echo -e "${RED}==>${NC} Exiting script. \n" exit -1 fi -chmod a+x ${DIRRUN}/degrib.bash +chmod a+x ${DIRRUN}/degrib_${EXP}.bash case "${SCHEDULER_SYSTEM}" in SLURM) - echo -e "${GREEN}==>${NC} Sbatch degrib.bash...\n" + echo -e "${GREEN}==>${NC} Sbatch degrib_${EXP}.bash...\n" cd ${DIRRUN} - sbatch --wait ${DIRRUN}/degrib.bash + sbatch --wait ${DIRRUN}/degrib_${EXP}.bash ;; PBS) - echo -e "${GREEN}==>${NC} qsub degrib.bash...\n" + echo -e "${GREEN}==>${NC} Qsub degrib_${EXP}.bash...\n" cd ${DIRRUN} - qsub -W block=true ${DIRRUN}/degrib.bash + qsub -W block=true ${DIRRUN}/degrib_${EXP}.bash ;; # GENERIC) # echo "Nenhum gerenciador detectado" -# ${DIRRUN}/degrib.bash +# ${DIRRUN}/degrib_${EXP}.bash # ;; esac @@ -316,12 +309,12 @@ do fi done -mv ${DIRRUN}/degrib.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs +mv ${DIRRUN}/degrib_GFS.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* -JOBID=$(sed -n '4p' ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o | awk '{print $3}' | sed "s/.pbs-ha//g") -mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o.${JOBID} -mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e.${JOBID} -chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o.${JOBID} -chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e.${JOBID} +JOBID=$(sed -n '4p' ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o | awk '{print $3}' | sed "s/.pbs-ha//g") +mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o.${JOBID} +mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e.${JOBID} +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o.${JOBID} +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e.${JOBID} rm -fr ${DIRRUN} diff --git a/scripts/make_initatmos.bash b/scripts/make_initatmos.bash index 2228f0b..a321301 100755 --- a/scripts/make_initatmos.bash +++ b/scripts/make_initatmos.bash @@ -66,14 +66,12 @@ then echo -e "${GREEN}==>${NC} downloading meshes tgz files ... \n" cd ${DATAIN}/fixed wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}.tar.gz - wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}_static.tar.gz tar -xzvf x1.${RES}.tar.gz - tar -xzvf x1.${RES}_static.tar.gz fi echo -e "${GREEN}==>${NC} Creating x1.${RES}.graph.info.part.${cores} ... \n" cd ${DATAIN}/fixed gpmetis -minconn -contig -niter=200 x1.${RES}.graph.info ${cores} - rm -fr x1.${RES}.tar.gz x1.${RES}_static.tar.gz + rm -fr x1.${RES}.tar.gz fi diff --git a/scripts/make_lbcs.bash b/scripts/make_lbcs.bash index 37de28f..939da66 100755 --- a/scripts/make_lbcs.bash +++ b/scripts/make_lbcs.bash @@ -65,14 +65,12 @@ then echo -e "${GREEN}==>${NC} downloading meshes tgz files ... \n" cd ${DATAIN}/fixed wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}.tar.gz - wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}_static.tar.gz tar -xzvf x1.${RES}.tar.gz - tar -xzvf x1.${RES}_static.tar.gz fi echo -e "${GREEN}==>${NC} Creating x1.${RES}.graph.info.part.${cores} ... \n" cd ${DATAIN}/fixed gpmetis -minconn -contig -niter=200 x1.${RES}.graph.info ${cores} - rm -fr x1.${RES}.tar.gz x1.${RES}_static.tar.gz + rm -fr x1.${RES}.tar.gz fi files_needed=("${SCRIPTS}/namelists/namelist.init_atmosphere.LBCS" "${SCRIPTS}/namelists/streams.init_atmosphere.LBCS" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc" "${EXECS}/init_atmosphere_model") diff --git a/scripts/make_static.bash b/scripts/make_static.bash index e38061a..c59eba8 100755 --- a/scripts/make_static.bash +++ b/scripts/make_static.bash @@ -67,16 +67,14 @@ then cd ${DATAIN}/fixed echo -e "${GREEN}==>${NC} downloading meshes tgz files ... \n" wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}.tar.gz - wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}_static.tar.gz tar -xzvf x1.${RES}.tar.gz - tar -xzvf x1.${RES}_static.tar.gz chmod 755 * fi echo -e "${GREEN}==>${NC} Creating x1.${RES}.graph.info.part.${cores} ... \n" cd ${DATAIN}/fixed gpmetis -minconn -contig -niter=200 x1.${RES}.graph.info ${cores} - rm -fr x1.${RES}.tar.gz x1.${RES}_static.tar.gz chmod 755 * + rm -fr x1.${RES}.tar.gz fi files_needed=("${EXECS}/init_atmosphere_model" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAIN}/fixed/x1.${RES}.grid.nc" "${SCRIPTS}/namelists/namelist.init_atmosphere.STATIC" "${SCRIPTS}/namelists/streams.init_atmosphere.STATIC") diff --git a/scripts/make_template.bash b/scripts/make_template.bash index b1983ec..c95c821 100755 --- a/scripts/make_template.bash +++ b/scripts/make_template.bash @@ -23,7 +23,7 @@ then echo "" echo "${0} ]EXP_NAME/OP] RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS" + echo "EXP_NAME :: Forcing: GFS or ERA5" echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" echo "FCST :: Forecast hours, e.g.: 24 or 36, etc." @@ -89,92 +89,6 @@ cd ${DIRRUN} IFS=":" read -r h m s <<< "${t_strout}" printf -v t_strout "%02d:%02d:%02d" "$h" "$m" "$s" -# Calculating default parameters for different resolutions -if [[ $MODERUN == "G" ]]; then - if [ $RES -eq 40962 ]; then #120Km - NLAT=151 #180/1.2 - NLON=301 #360/1.2 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 - elif [ $RES -eq 163842 ]; then #60Km - NLAT=301 #180/0.6 - NLON=601 #360/0.6 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 - elif [ $RES -eq 655362 ]; then #30Km - NLAT=601 #180/0.3 - NLON=1201 #360/0.3 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 - elif [ $RES -eq 1024002 ]; then #24Km - NLAT=721 #180/0.25 - NLON=1441 #360/0.25 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 - elif [ $RES -eq 2621442 ]; then #15Km - NLAT=1201 #180/0.15 - NLON=2401 #360/0.15 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 - elif [ $RES -eq 5898242 ]; then #10Km - NLAT=1801 #180/0.10 (+1) - NLON=3601 #360/0.10 (+1) - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 - elif [ $RES -eq 23592962 ]; then #5Km - NLAT=3601 #180/0.05 - NLON=7201 #360/0.05 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 - elif [ $RES -eq 65536002 ]; then #3Km - NLAT=6001 #180/0.03 - NLON=12001 #360/0.03 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 - fi -elif [[ $MODERUN == "R" ]]; then - if [[ "$RES" == "655362.REG.AMS_CAR" ]]; then #30 km (AMS + Caribe) - NLAT=368 #110/0.3 +1 - NLON=334 #100/0.3 +1 - STARTLAT=-65.0 - ENDLAT=40 - STARTLON=240.0 - ENDLON=340.0 - elif [[ $RES == "5898242.REG.AMS_CAR" ]]; then #10 km (AMS + Caribe) - NLAT=1101 #110/0.1 + 1 - NLON=1001 #100/0.1 + 1 - STARTLAT=-70.0 - ENDLAT=40.0 - STARTLON=240.0 - ENDLON=340.0 - elif [[ $RES == "23592962.REG.AMS_CAR" ]]; then #5 km (AMS + Caribe) - NLAT=2201 #110/0.05 + 1 - NLON=2001 #100/0.05 + 1 - STARTLAT=-70.0 - ENDLAT=40.0 - STARTLON=240.0 - ENDLON=340.0 - fi -fi - -#------------------------------------------------------- - # NLEVS get from t_iso_levels in Registry_isobaric.xml: if [ -s ${MONANDIR}/src/core_atmosphere/diagnostics/Registry_isobaric.xml ] then @@ -186,9 +100,20 @@ fi output_interval=${t_strouthor} nfiles=$(echo "$FCST/$output_interval + 1" | bc) -diag_name_post=MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_${YYYYMMDDHHi}.00.00.x${RES}L${N_MODEL_LEV}.nc -diag_name_templ=MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_%y4%m2%d2%h2.%n2.00.x${RES}L${N_MODEL_LEV}.nc +# Definindo G ou R no MONAN_DIAG +if [[ $MODERUN == "R" ]]; then + RORG=R +elif [[ $MODERUN == "G" ]]; then + RORG=G +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} Make post template phase fails! Please select MODERUN=R (Regional) or MODERUN=G (Global) in 'setenv.bash'.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi +diag_name_post=MONAN_DIAG_${RORG}_POS_${EXP}_${YYYYMMDDHHi}_${YYYYMMDDHHi}.00.00.x${RES}L${N_MODEL_LEV}.nc +diag_name_templ=MONAN_DIAG_${RORG}_POS_${EXP}_${YYYYMMDDHHi}_%y4%m2%d2%h2.%n2.00.x${RES}L${N_MODEL_LEV}.nc rm -fr ${DIRRUN}/qctlinfo.gs diff --git a/scripts/namelists/include_fields.diag b/scripts/namelists/include_fields.diag deleted file mode 100755 index b39754f..0000000 --- a/scripts/namelists/include_fields.diag +++ /dev/null @@ -1,72 +0,0 @@ -initial_time -xtime -Time -t_iso_levels -zgeo_isobaric -cldfrac_isobaric -temperature_isobaric -dewpoint_isobaric -relhum_isobaric -w_isobaric -uzonal_isobaric -umeridional_isobaric -vorticity_isobaric -height_isobaric -spechum_isobaric -omega_isobaric -rqvblten_isobaric -rthblten_isobaric -rqvcuten_isobaric -rthcuten_isobaric -rthratenlw_isobaric -rthratensw_isobaric -rucuten_isobaric -rvcuten_isobaric -rvblten_isobaric -rublten_isobaric -kzq_isobaric -kzh_isobaric -kzm_isobaric -ni_isobaric -nr_isobaric -qr_isobaric -qs_isobaric -qv_isobaric -qc_isobaric -qg_isobaric -qi_isobaric -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb diff --git a/scripts/namelists/include_fields.diag.CD-CT b/scripts/namelists/include_fields.diag.CD-CT deleted file mode 100755 index 3de9759..0000000 --- a/scripts/namelists/include_fields.diag.CD-CT +++ /dev/null @@ -1,695 +0,0 @@ -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -relhum_15hPa -relhum_20hPa -relhum_30hPa -relhum_50hPa -relhum_70hPa -relhum_100hPa -relhum_150hPa -relhum_200hPa -relhum_250hPa -relhum_300hPa -relhum_400hPa -relhum_500hPa -relhum_600hPa -relhum_700hPa -relhum_825hPa -relhum_850hPa -relhum_875hPa -relhum_900hPa -relhum_925hPa -relhum_950hPa -relhum_975hPa -relhum_1000hPa -geoph_15hPa -geoph_20hPa -geoph_30hPa -geoph_50hPa -geoph_70hPa -geoph_100hPa -geoph_150hPa -geoph_200hPa -geoph_250hPa -geoph_300hPa -geoph_400hPa -geoph_500hPa -geoph_600hPa -geoph_700hPa -geoph_825hPa -geoph_850hPa -geoph_875hPa -geoph_900hPa -geoph_925hPa -geoph_950hPa -geoph_975hPa -geoph_1000hPa -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb -w_15hPa -w_20hPa -w_30hPa -w_50hPa -w_70hPa -w_100hPa -w_150hPa -w_200hPa -w_250hPa -w_300hPa -w_400hPa -w_500hPa -w_600hPa -w_700hPa -w_825hPa -w_850hPa -w_875hPa -w_900hPa -w_925hPa -w_950hPa -w_975hPa -w_1000hPa -uzonal_15hPa -uzonal_20hPa -uzonal_30hPa -uzonal_50hPa -uzonal_70hPa -uzonal_100hPa -uzonal_150hPa -uzonal_200hPa -uzonal_250hPa -uzonal_300hPa -uzonal_400hPa -uzonal_500hPa -uzonal_600hPa -uzonal_700hPa -uzonal_825hPa -uzonal_850hPa -uzonal_875hPa -uzonal_900hPa -uzonal_925hPa -uzonal_950hPa -uzonal_975hPa -uzonal_1000hPa -umeridional_15hPa -umeridional_20hPa -umeridional_30hPa -umeridional_50hPa -umeridional_70hPa -umeridional_100hPa -umeridional_150hPa -umeridional_200hPa -umeridional_250hPa -umeridional_300hPa -umeridional_400hPa -umeridional_500hPa -umeridional_600hPa -umeridional_700hPa -umeridional_825hPa -umeridional_850hPa -umeridional_875hPa -umeridional_900hPa -umeridional_925hPa -umeridional_950hPa -umeridional_975hPa -umeridional_1000hPa -temperature_15hPa -temperature_20hPa -temperature_30hPa -temperature_50hPa -temperature_70hPa -temperature_100hPa -temperature_150hPa -temperature_200hPa -temperature_250hPa -temperature_300hPa -temperature_400hPa -temperature_500hPa -temperature_600hPa -temperature_700hPa -temperature_825hPa -temperature_850hPa -temperature_875hPa -temperature_900hPa -temperature_925hPa -temperature_950hPa -temperature_975hPa -temperature_1000hPa -spechum_15hPa -spechum_20hPa -spechum_30hPa -spechum_50hPa -spechum_70hPa -spechum_100hPa -spechum_150hPa -spechum_200hPa -spechum_250hPa -spechum_300hPa -spechum_400hPa -spechum_500hPa -spechum_600hPa -spechum_700hPa -spechum_825hPa -spechum_850hPa -spechum_875hPa -spechum_900hPa -spechum_925hPa -spechum_950hPa -spechum_975hPa -spechum_1000hPa -rthratenlw_15hPa -rthratenlw_20hPa -rthratenlw_30hPa -rthratenlw_50hPa -rthratenlw_70hPa -rthratenlw_100hPa -rthratenlw_150hPa -rthratenlw_200hPa -rthratenlw_250hPa -rthratenlw_300hPa -rthratenlw_400hPa -rthratenlw_500hPa -rthratenlw_600hPa -rthratenlw_700hPa -rthratenlw_825hPa -rthratenlw_850hPa -rthratenlw_875hPa -rthratenlw_900hPa -rthratenlw_925hPa -rthratenlw_950hPa -rthratenlw_975hPa -rthratenlw_1000hPa -rqvcuten_15hPa -rqvcuten_20hPa -rqvcuten_30hPa -rqvcuten_50hPa -rqvcuten_70hPa -rqvcuten_100hPa -rqvcuten_150hPa -rqvcuten_200hPa -rqvcuten_250hPa -rqvcuten_300hPa -rqvcuten_400hPa -rqvcuten_500hPa -rqvcuten_600hPa -rqvcuten_700hPa -rqvcuten_825hPa -rqvcuten_850hPa -rqvcuten_875hPa -rqvcuten_900hPa -rqvcuten_925hPa -rqvcuten_950hPa -rqvcuten_975hPa -rqvcuten_1000hPa -rqvblten_15hPa -rqvblten_20hPa -rqvblten_30hPa -rqvblten_50hPa -rqvblten_70hPa -rqvblten_100hPa -rqvblten_150hPa -rqvblten_200hPa -rqvblten_250hPa -rqvblten_300hPa -rqvblten_400hPa -rqvblten_500hPa -rqvblten_600hPa -rqvblten_700hPa -rqvblten_825hPa -rqvblten_850hPa -rqvblten_875hPa -rqvblten_900hPa -rqvblten_925hPa -rqvblten_950hPa -rqvblten_975hPa -rqvblten_1000hPa -kzh_15hPa -kzh_20hPa -kzh_30hPa -kzh_50hPa -kzh_70hPa -kzh_100hPa -kzh_150hPa -kzh_200hPa -kzh_250hPa -kzh_300hPa -kzh_400hPa -kzh_500hPa -kzh_600hPa -kzh_700hPa -kzh_825hPa -kzh_850hPa -kzh_875hPa -kzh_900hPa -kzh_925hPa -kzh_950hPa -kzh_975hPa -kzh_1000hPa -kzm_15hPa -kzm_20hPa -kzm_30hPa -kzm_50hPa -kzm_70hPa -kzm_100hPa -kzm_150hPa -kzm_200hPa -kzm_250hPa -kzm_300hPa -kzm_400hPa -kzm_500hPa -kzm_600hPa -kzm_700hPa -kzm_825hPa -kzm_850hPa -kzm_875hPa -kzm_900hPa -kzm_925hPa -kzm_950hPa -kzm_975hPa -kzm_1000hPa -kzq_15hPa -kzq_20hPa -kzq_30hPa -kzq_50hPa -kzq_70hPa -kzq_100hPa -kzq_150hPa -kzq_200hPa -kzq_250hPa -kzq_300hPa -kzq_400hPa -kzq_500hPa -kzq_600hPa -kzq_700hPa -kzq_825hPa -kzq_850hPa -kzq_875hPa -kzq_900hPa -kzq_925hPa -kzq_950hPa -kzq_975hPa -kzq_1000hPa -height_15hPa -height_20hPa -height_30hPa -height_50hPa -height_70hPa -height_100hPa -height_150hPa -height_200hPa -height_250hPa -height_300hPa -height_400hPa -height_500hPa -height_600hPa -height_700hPa -height_825hPa -height_850hPa -height_875hPa -height_900hPa -height_925hPa -height_950hPa -height_975hPa -height_1000hPa -qc_15hPa -qc_20hPa -qc_30hPa -qc_50hPa -qc_70hPa -qc_100hPa -qc_150hPa -qc_200hPa -qc_250hPa -qc_300hPa -qc_400hPa -qc_500hPa -qc_600hPa -qc_700hPa -qc_825hPa -qc_850hPa -qc_875hPa -qc_900hPa -qc_925hPa -qc_950hPa -qc_975hPa -qc_1000hPa -qg_15hPa -qg_20hPa -qg_30hPa -qg_50hPa -qg_70hPa -qg_100hPa -qg_150hPa -qg_200hPa -qg_250hPa -qg_300hPa -qg_400hPa -qg_500hPa -qg_600hPa -qg_700hPa -qg_825hPa -qg_850hPa -qg_875hPa -qg_900hPa -qg_925hPa -qg_950hPa -qg_975hPa -qg_1000hPa -qi_15hPa -qi_20hPa -qi_30hPa -qi_50hPa -qi_70hPa -qi_100hPa -qi_150hPa -qi_200hPa -qi_250hPa -qi_300hPa -qi_400hPa -qi_500hPa -qi_600hPa -qi_700hPa -qi_825hPa -qi_850hPa -qi_875hPa -qi_900hPa -qi_925hPa -qi_950hPa -qi_975hPa -qi_1000hPa -qv_15hPa -qv_20hPa -qv_30hPa -qv_50hPa -qv_70hPa -qv_100hPa -qv_150hPa -qv_200hPa -qv_250hPa -qv_300hPa -qv_400hPa -qv_500hPa -qv_600hPa -qv_700hPa -qv_825hPa -qv_850hPa -qv_875hPa -qv_900hPa -qv_925hPa -qv_950hPa -qv_975hPa -qv_1000hPa -qr_15hPa -qr_20hPa -qr_30hPa -qr_50hPa -qr_70hPa -qr_100hPa -qr_150hPa -qr_200hPa -qr_250hPa -qr_300hPa -qr_400hPa -qr_500hPa -qr_600hPa -qr_700hPa -qr_825hPa -qr_850hPa -qr_875hPa -qr_900hPa -qr_925hPa -qr_950hPa -qr_975hPa -qr_1000hPa -qs_15hPa -qs_20hPa -qs_30hPa -qs_50hPa -qs_70hPa -qs_100hPa -qs_150hPa -qs_200hPa -qs_250hPa -qs_300hPa -qs_400hPa -qs_500hPa -qs_600hPa -qs_700hPa -qs_825hPa -qs_850hPa -qs_875hPa -qs_900hPa -qs_925hPa -qs_950hPa -qs_975hPa -qs_1000hPa -ni_15hPa -ni_20hPa -ni_30hPa -ni_50hPa -ni_70hPa -ni_100hPa -ni_150hPa -ni_200hPa -ni_250hPa -ni_300hPa -ni_400hPa -ni_500hPa -ni_600hPa -ni_700hPa -ni_825hPa -ni_850hPa -ni_875hPa -ni_900hPa -ni_925hPa -ni_950hPa -ni_975hPa -ni_1000hPa -nr_15hPa -nr_20hPa -nr_30hPa -nr_50hPa -nr_70hPa -nr_100hPa -nr_150hPa -nr_200hPa -nr_250hPa -nr_300hPa -nr_400hPa -nr_500hPa -nr_600hPa -nr_700hPa -nr_825hPa -nr_850hPa -nr_875hPa -nr_900hPa -nr_925hPa -nr_950hPa -nr_975hPa -nr_1000hPa -rucuten_15hPa -rucuten_20hPa -rucuten_30hPa -rucuten_50hPa -rucuten_70hPa -rucuten_100hPa -rucuten_150hPa -rucuten_200hPa -rucuten_250hPa -rucuten_300hPa -rucuten_400hPa -rucuten_500hPa -rucuten_600hPa -rucuten_700hPa -rucuten_825hPa -rucuten_850hPa -rucuten_875hPa -rucuten_900hPa -rucuten_925hPa -rucuten_950hPa -rucuten_975hPa -rucuten_1000hPa -rvcuten_15hPa -rvcuten_20hPa -rvcuten_30hPa -rvcuten_50hPa -rvcuten_70hPa -rvcuten_100hPa -rvcuten_150hPa -rvcuten_200hPa -rvcuten_250hPa -rvcuten_300hPa -rvcuten_400hPa -rvcuten_500hPa -rvcuten_600hPa -rvcuten_700hPa -rvcuten_825hPa -rvcuten_850hPa -rvcuten_875hPa -rvcuten_900hPa -rvcuten_925hPa -rvcuten_950hPa -rvcuten_975hPa -rvcuten_1000hPa -rvblten_15hPa -rvblten_20hPa -rvblten_30hPa -rvblten_50hPa -rvblten_70hPa -rvblten_100hPa -rvblten_150hPa -rvblten_200hPa -rvblten_250hPa -rvblten_300hPa -rvblten_400hPa -rvblten_500hPa -rvblten_600hPa -rvblten_700hPa -rvblten_825hPa -rvblten_850hPa -rvblten_875hPa -rvblten_900hPa -rvblten_925hPa -rvblten_950hPa -rvblten_975hPa -rvblten_1000hPa -cldfrac_15hPa -cldfrac_20hPa -cldfrac_30hPa -cldfrac_50hPa -cldfrac_70hPa -cldfrac_100hPa -cldfrac_150hPa -cldfrac_200hPa -cldfrac_250hPa -cldfrac_300hPa -cldfrac_400hPa -cldfrac_500hPa -cldfrac_600hPa -cldfrac_700hPa -cldfrac_825hPa -cldfrac_850hPa -cldfrac_875hPa -cldfrac_900hPa -cldfrac_925hPa -cldfrac_950hPa -cldfrac_975hPa -cldfrac_1000hPa -rublten_15hPa -rublten_20hPa -rublten_30hPa -rublten_50hPa -rublten_70hPa -rublten_100hPa -rublten_150hPa -rublten_200hPa -rublten_250hPa -rublten_300hPa -rublten_400hPa -rublten_500hPa -rublten_600hPa -rublten_700hPa -rublten_825hPa -rublten_850hPa -rublten_875hPa -rublten_900hPa -rublten_925hPa -rublten_950hPa -rublten_975hPa -rublten_1000hPa -rthratensw_15hPa -rthratensw_20hPa -rthratensw_30hPa -rthratensw_50hPa -rthratensw_70hPa -rthratensw_100hPa -rthratensw_150hPa -rthratensw_200hPa -rthratensw_250hPa -rthratensw_300hPa -rthratensw_400hPa -rthratensw_500hPa -rthratensw_600hPa -rthratensw_700hPa -rthratensw_825hPa -rthratensw_850hPa -rthratensw_875hPa -rthratensw_900hPa -rthratensw_925hPa -rthratensw_950hPa -rthratensw_975hPa -rthratensw_1000hPa -omega_15hPa -omega_20hPa -omega_30hPa -omega_50hPa -omega_70hPa -omega_100hPa -omega_150hPa -omega_200hPa -omega_250hPa -omega_300hPa -omega_400hPa -omega_500hPa -omega_600hPa -omega_700hPa -omega_825hPa -omega_850hPa -omega_875hPa -omega_900hPa -omega_925hPa -omega_950hPa -omega_975hPa -omega_1000hPa -zgeo_15hPa -zgeo_20hPa -zgeo_30hPa -zgeo_50hPa -zgeo_70hPa -zgeo_100hPa -zgeo_150hPa -zgeo_200hPa -zgeo_250hPa -zgeo_300hPa -zgeo_400hPa -zgeo_500hPa -zgeo_600hPa -zgeo_700hPa -zgeo_825hPa -zgeo_850hPa -zgeo_875hPa -zgeo_900hPa -zgeo_925hPa -zgeo_950hPa -zgeo_975hPa -zgeo_1000hPa diff --git a/scripts/namelists/include_fields.diag.GCC b/scripts/namelists/include_fields.diag.GCC deleted file mode 100755 index b39754f..0000000 --- a/scripts/namelists/include_fields.diag.GCC +++ /dev/null @@ -1,72 +0,0 @@ -initial_time -xtime -Time -t_iso_levels -zgeo_isobaric -cldfrac_isobaric -temperature_isobaric -dewpoint_isobaric -relhum_isobaric -w_isobaric -uzonal_isobaric -umeridional_isobaric -vorticity_isobaric -height_isobaric -spechum_isobaric -omega_isobaric -rqvblten_isobaric -rthblten_isobaric -rqvcuten_isobaric -rthcuten_isobaric -rthratenlw_isobaric -rthratensw_isobaric -rucuten_isobaric -rvcuten_isobaric -rvblten_isobaric -rublten_isobaric -kzq_isobaric -kzh_isobaric -kzm_isobaric -ni_isobaric -nr_isobaric -qr_isobaric -qs_isobaric -qv_isobaric -qc_isobaric -qg_isobaric -qi_isobaric -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb diff --git a/scripts/namelists/stream_list.atmosphere.diagnostics b/scripts/namelists/stream_list.atmosphere.diagnostics deleted file mode 100755 index b39754f..0000000 --- a/scripts/namelists/stream_list.atmosphere.diagnostics +++ /dev/null @@ -1,72 +0,0 @@ -initial_time -xtime -Time -t_iso_levels -zgeo_isobaric -cldfrac_isobaric -temperature_isobaric -dewpoint_isobaric -relhum_isobaric -w_isobaric -uzonal_isobaric -umeridional_isobaric -vorticity_isobaric -height_isobaric -spechum_isobaric -omega_isobaric -rqvblten_isobaric -rthblten_isobaric -rqvcuten_isobaric -rthcuten_isobaric -rthratenlw_isobaric -rthratensw_isobaric -rucuten_isobaric -rvcuten_isobaric -rvblten_isobaric -rublten_isobaric -kzq_isobaric -kzh_isobaric -kzm_isobaric -ni_isobaric -nr_isobaric -qr_isobaric -qs_isobaric -qv_isobaric -qc_isobaric -qg_isobaric -qi_isobaric -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb diff --git a/scripts/namelists/stream_list.atmosphere.diagnostics.CD-CT b/scripts/namelists/stream_list.atmosphere.diagnostics.CD-CT deleted file mode 100755 index 3de9759..0000000 --- a/scripts/namelists/stream_list.atmosphere.diagnostics.CD-CT +++ /dev/null @@ -1,695 +0,0 @@ -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -relhum_15hPa -relhum_20hPa -relhum_30hPa -relhum_50hPa -relhum_70hPa -relhum_100hPa -relhum_150hPa -relhum_200hPa -relhum_250hPa -relhum_300hPa -relhum_400hPa -relhum_500hPa -relhum_600hPa -relhum_700hPa -relhum_825hPa -relhum_850hPa -relhum_875hPa -relhum_900hPa -relhum_925hPa -relhum_950hPa -relhum_975hPa -relhum_1000hPa -geoph_15hPa -geoph_20hPa -geoph_30hPa -geoph_50hPa -geoph_70hPa -geoph_100hPa -geoph_150hPa -geoph_200hPa -geoph_250hPa -geoph_300hPa -geoph_400hPa -geoph_500hPa -geoph_600hPa -geoph_700hPa -geoph_825hPa -geoph_850hPa -geoph_875hPa -geoph_900hPa -geoph_925hPa -geoph_950hPa -geoph_975hPa -geoph_1000hPa -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb -w_15hPa -w_20hPa -w_30hPa -w_50hPa -w_70hPa -w_100hPa -w_150hPa -w_200hPa -w_250hPa -w_300hPa -w_400hPa -w_500hPa -w_600hPa -w_700hPa -w_825hPa -w_850hPa -w_875hPa -w_900hPa -w_925hPa -w_950hPa -w_975hPa -w_1000hPa -uzonal_15hPa -uzonal_20hPa -uzonal_30hPa -uzonal_50hPa -uzonal_70hPa -uzonal_100hPa -uzonal_150hPa -uzonal_200hPa -uzonal_250hPa -uzonal_300hPa -uzonal_400hPa -uzonal_500hPa -uzonal_600hPa -uzonal_700hPa -uzonal_825hPa -uzonal_850hPa -uzonal_875hPa -uzonal_900hPa -uzonal_925hPa -uzonal_950hPa -uzonal_975hPa -uzonal_1000hPa -umeridional_15hPa -umeridional_20hPa -umeridional_30hPa -umeridional_50hPa -umeridional_70hPa -umeridional_100hPa -umeridional_150hPa -umeridional_200hPa -umeridional_250hPa -umeridional_300hPa -umeridional_400hPa -umeridional_500hPa -umeridional_600hPa -umeridional_700hPa -umeridional_825hPa -umeridional_850hPa -umeridional_875hPa -umeridional_900hPa -umeridional_925hPa -umeridional_950hPa -umeridional_975hPa -umeridional_1000hPa -temperature_15hPa -temperature_20hPa -temperature_30hPa -temperature_50hPa -temperature_70hPa -temperature_100hPa -temperature_150hPa -temperature_200hPa -temperature_250hPa -temperature_300hPa -temperature_400hPa -temperature_500hPa -temperature_600hPa -temperature_700hPa -temperature_825hPa -temperature_850hPa -temperature_875hPa -temperature_900hPa -temperature_925hPa -temperature_950hPa -temperature_975hPa -temperature_1000hPa -spechum_15hPa -spechum_20hPa -spechum_30hPa -spechum_50hPa -spechum_70hPa -spechum_100hPa -spechum_150hPa -spechum_200hPa -spechum_250hPa -spechum_300hPa -spechum_400hPa -spechum_500hPa -spechum_600hPa -spechum_700hPa -spechum_825hPa -spechum_850hPa -spechum_875hPa -spechum_900hPa -spechum_925hPa -spechum_950hPa -spechum_975hPa -spechum_1000hPa -rthratenlw_15hPa -rthratenlw_20hPa -rthratenlw_30hPa -rthratenlw_50hPa -rthratenlw_70hPa -rthratenlw_100hPa -rthratenlw_150hPa -rthratenlw_200hPa -rthratenlw_250hPa -rthratenlw_300hPa -rthratenlw_400hPa -rthratenlw_500hPa -rthratenlw_600hPa -rthratenlw_700hPa -rthratenlw_825hPa -rthratenlw_850hPa -rthratenlw_875hPa -rthratenlw_900hPa -rthratenlw_925hPa -rthratenlw_950hPa -rthratenlw_975hPa -rthratenlw_1000hPa -rqvcuten_15hPa -rqvcuten_20hPa -rqvcuten_30hPa -rqvcuten_50hPa -rqvcuten_70hPa -rqvcuten_100hPa -rqvcuten_150hPa -rqvcuten_200hPa -rqvcuten_250hPa -rqvcuten_300hPa -rqvcuten_400hPa -rqvcuten_500hPa -rqvcuten_600hPa -rqvcuten_700hPa -rqvcuten_825hPa -rqvcuten_850hPa -rqvcuten_875hPa -rqvcuten_900hPa -rqvcuten_925hPa -rqvcuten_950hPa -rqvcuten_975hPa -rqvcuten_1000hPa -rqvblten_15hPa -rqvblten_20hPa -rqvblten_30hPa -rqvblten_50hPa -rqvblten_70hPa -rqvblten_100hPa -rqvblten_150hPa -rqvblten_200hPa -rqvblten_250hPa -rqvblten_300hPa -rqvblten_400hPa -rqvblten_500hPa -rqvblten_600hPa -rqvblten_700hPa -rqvblten_825hPa -rqvblten_850hPa -rqvblten_875hPa -rqvblten_900hPa -rqvblten_925hPa -rqvblten_950hPa -rqvblten_975hPa -rqvblten_1000hPa -kzh_15hPa -kzh_20hPa -kzh_30hPa -kzh_50hPa -kzh_70hPa -kzh_100hPa -kzh_150hPa -kzh_200hPa -kzh_250hPa -kzh_300hPa -kzh_400hPa -kzh_500hPa -kzh_600hPa -kzh_700hPa -kzh_825hPa -kzh_850hPa -kzh_875hPa -kzh_900hPa -kzh_925hPa -kzh_950hPa -kzh_975hPa -kzh_1000hPa -kzm_15hPa -kzm_20hPa -kzm_30hPa -kzm_50hPa -kzm_70hPa -kzm_100hPa -kzm_150hPa -kzm_200hPa -kzm_250hPa -kzm_300hPa -kzm_400hPa -kzm_500hPa -kzm_600hPa -kzm_700hPa -kzm_825hPa -kzm_850hPa -kzm_875hPa -kzm_900hPa -kzm_925hPa -kzm_950hPa -kzm_975hPa -kzm_1000hPa -kzq_15hPa -kzq_20hPa -kzq_30hPa -kzq_50hPa -kzq_70hPa -kzq_100hPa -kzq_150hPa -kzq_200hPa -kzq_250hPa -kzq_300hPa -kzq_400hPa -kzq_500hPa -kzq_600hPa -kzq_700hPa -kzq_825hPa -kzq_850hPa -kzq_875hPa -kzq_900hPa -kzq_925hPa -kzq_950hPa -kzq_975hPa -kzq_1000hPa -height_15hPa -height_20hPa -height_30hPa -height_50hPa -height_70hPa -height_100hPa -height_150hPa -height_200hPa -height_250hPa -height_300hPa -height_400hPa -height_500hPa -height_600hPa -height_700hPa -height_825hPa -height_850hPa -height_875hPa -height_900hPa -height_925hPa -height_950hPa -height_975hPa -height_1000hPa -qc_15hPa -qc_20hPa -qc_30hPa -qc_50hPa -qc_70hPa -qc_100hPa -qc_150hPa -qc_200hPa -qc_250hPa -qc_300hPa -qc_400hPa -qc_500hPa -qc_600hPa -qc_700hPa -qc_825hPa -qc_850hPa -qc_875hPa -qc_900hPa -qc_925hPa -qc_950hPa -qc_975hPa -qc_1000hPa -qg_15hPa -qg_20hPa -qg_30hPa -qg_50hPa -qg_70hPa -qg_100hPa -qg_150hPa -qg_200hPa -qg_250hPa -qg_300hPa -qg_400hPa -qg_500hPa -qg_600hPa -qg_700hPa -qg_825hPa -qg_850hPa -qg_875hPa -qg_900hPa -qg_925hPa -qg_950hPa -qg_975hPa -qg_1000hPa -qi_15hPa -qi_20hPa -qi_30hPa -qi_50hPa -qi_70hPa -qi_100hPa -qi_150hPa -qi_200hPa -qi_250hPa -qi_300hPa -qi_400hPa -qi_500hPa -qi_600hPa -qi_700hPa -qi_825hPa -qi_850hPa -qi_875hPa -qi_900hPa -qi_925hPa -qi_950hPa -qi_975hPa -qi_1000hPa -qv_15hPa -qv_20hPa -qv_30hPa -qv_50hPa -qv_70hPa -qv_100hPa -qv_150hPa -qv_200hPa -qv_250hPa -qv_300hPa -qv_400hPa -qv_500hPa -qv_600hPa -qv_700hPa -qv_825hPa -qv_850hPa -qv_875hPa -qv_900hPa -qv_925hPa -qv_950hPa -qv_975hPa -qv_1000hPa -qr_15hPa -qr_20hPa -qr_30hPa -qr_50hPa -qr_70hPa -qr_100hPa -qr_150hPa -qr_200hPa -qr_250hPa -qr_300hPa -qr_400hPa -qr_500hPa -qr_600hPa -qr_700hPa -qr_825hPa -qr_850hPa -qr_875hPa -qr_900hPa -qr_925hPa -qr_950hPa -qr_975hPa -qr_1000hPa -qs_15hPa -qs_20hPa -qs_30hPa -qs_50hPa -qs_70hPa -qs_100hPa -qs_150hPa -qs_200hPa -qs_250hPa -qs_300hPa -qs_400hPa -qs_500hPa -qs_600hPa -qs_700hPa -qs_825hPa -qs_850hPa -qs_875hPa -qs_900hPa -qs_925hPa -qs_950hPa -qs_975hPa -qs_1000hPa -ni_15hPa -ni_20hPa -ni_30hPa -ni_50hPa -ni_70hPa -ni_100hPa -ni_150hPa -ni_200hPa -ni_250hPa -ni_300hPa -ni_400hPa -ni_500hPa -ni_600hPa -ni_700hPa -ni_825hPa -ni_850hPa -ni_875hPa -ni_900hPa -ni_925hPa -ni_950hPa -ni_975hPa -ni_1000hPa -nr_15hPa -nr_20hPa -nr_30hPa -nr_50hPa -nr_70hPa -nr_100hPa -nr_150hPa -nr_200hPa -nr_250hPa -nr_300hPa -nr_400hPa -nr_500hPa -nr_600hPa -nr_700hPa -nr_825hPa -nr_850hPa -nr_875hPa -nr_900hPa -nr_925hPa -nr_950hPa -nr_975hPa -nr_1000hPa -rucuten_15hPa -rucuten_20hPa -rucuten_30hPa -rucuten_50hPa -rucuten_70hPa -rucuten_100hPa -rucuten_150hPa -rucuten_200hPa -rucuten_250hPa -rucuten_300hPa -rucuten_400hPa -rucuten_500hPa -rucuten_600hPa -rucuten_700hPa -rucuten_825hPa -rucuten_850hPa -rucuten_875hPa -rucuten_900hPa -rucuten_925hPa -rucuten_950hPa -rucuten_975hPa -rucuten_1000hPa -rvcuten_15hPa -rvcuten_20hPa -rvcuten_30hPa -rvcuten_50hPa -rvcuten_70hPa -rvcuten_100hPa -rvcuten_150hPa -rvcuten_200hPa -rvcuten_250hPa -rvcuten_300hPa -rvcuten_400hPa -rvcuten_500hPa -rvcuten_600hPa -rvcuten_700hPa -rvcuten_825hPa -rvcuten_850hPa -rvcuten_875hPa -rvcuten_900hPa -rvcuten_925hPa -rvcuten_950hPa -rvcuten_975hPa -rvcuten_1000hPa -rvblten_15hPa -rvblten_20hPa -rvblten_30hPa -rvblten_50hPa -rvblten_70hPa -rvblten_100hPa -rvblten_150hPa -rvblten_200hPa -rvblten_250hPa -rvblten_300hPa -rvblten_400hPa -rvblten_500hPa -rvblten_600hPa -rvblten_700hPa -rvblten_825hPa -rvblten_850hPa -rvblten_875hPa -rvblten_900hPa -rvblten_925hPa -rvblten_950hPa -rvblten_975hPa -rvblten_1000hPa -cldfrac_15hPa -cldfrac_20hPa -cldfrac_30hPa -cldfrac_50hPa -cldfrac_70hPa -cldfrac_100hPa -cldfrac_150hPa -cldfrac_200hPa -cldfrac_250hPa -cldfrac_300hPa -cldfrac_400hPa -cldfrac_500hPa -cldfrac_600hPa -cldfrac_700hPa -cldfrac_825hPa -cldfrac_850hPa -cldfrac_875hPa -cldfrac_900hPa -cldfrac_925hPa -cldfrac_950hPa -cldfrac_975hPa -cldfrac_1000hPa -rublten_15hPa -rublten_20hPa -rublten_30hPa -rublten_50hPa -rublten_70hPa -rublten_100hPa -rublten_150hPa -rublten_200hPa -rublten_250hPa -rublten_300hPa -rublten_400hPa -rublten_500hPa -rublten_600hPa -rublten_700hPa -rublten_825hPa -rublten_850hPa -rublten_875hPa -rublten_900hPa -rublten_925hPa -rublten_950hPa -rublten_975hPa -rublten_1000hPa -rthratensw_15hPa -rthratensw_20hPa -rthratensw_30hPa -rthratensw_50hPa -rthratensw_70hPa -rthratensw_100hPa -rthratensw_150hPa -rthratensw_200hPa -rthratensw_250hPa -rthratensw_300hPa -rthratensw_400hPa -rthratensw_500hPa -rthratensw_600hPa -rthratensw_700hPa -rthratensw_825hPa -rthratensw_850hPa -rthratensw_875hPa -rthratensw_900hPa -rthratensw_925hPa -rthratensw_950hPa -rthratensw_975hPa -rthratensw_1000hPa -omega_15hPa -omega_20hPa -omega_30hPa -omega_50hPa -omega_70hPa -omega_100hPa -omega_150hPa -omega_200hPa -omega_250hPa -omega_300hPa -omega_400hPa -omega_500hPa -omega_600hPa -omega_700hPa -omega_825hPa -omega_850hPa -omega_875hPa -omega_900hPa -omega_925hPa -omega_950hPa -omega_975hPa -omega_1000hPa -zgeo_15hPa -zgeo_20hPa -zgeo_30hPa -zgeo_50hPa -zgeo_70hPa -zgeo_100hPa -zgeo_150hPa -zgeo_200hPa -zgeo_250hPa -zgeo_300hPa -zgeo_400hPa -zgeo_500hPa -zgeo_600hPa -zgeo_700hPa -zgeo_825hPa -zgeo_850hPa -zgeo_875hPa -zgeo_900hPa -zgeo_925hPa -zgeo_950hPa -zgeo_975hPa -zgeo_1000hPa diff --git a/scripts/namelists/stream_list.atmosphere.diagnostics.GCC b/scripts/namelists/stream_list.atmosphere.diagnostics.GCC deleted file mode 100755 index b39754f..0000000 --- a/scripts/namelists/stream_list.atmosphere.diagnostics.GCC +++ /dev/null @@ -1,72 +0,0 @@ -initial_time -xtime -Time -t_iso_levels -zgeo_isobaric -cldfrac_isobaric -temperature_isobaric -dewpoint_isobaric -relhum_isobaric -w_isobaric -uzonal_isobaric -umeridional_isobaric -vorticity_isobaric -height_isobaric -spechum_isobaric -omega_isobaric -rqvblten_isobaric -rthblten_isobaric -rqvcuten_isobaric -rthcuten_isobaric -rthratenlw_isobaric -rthratensw_isobaric -rucuten_isobaric -rvcuten_isobaric -rvblten_isobaric -rublten_isobaric -kzq_isobaric -kzh_isobaric -kzm_isobaric -ni_isobaric -nr_isobaric -qr_isobaric -qs_isobaric -qv_isobaric -qc_isobaric -qg_isobaric -qi_isobaric -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb diff --git a/scripts/namelists/streams.atmosphere.TEMPLATE b/scripts/namelists/streams.atmosphere.TEMPLATE index d6c28bc..9e9ff6a 100755 --- a/scripts/namelists/streams.atmosphere.TEMPLATE +++ b/scripts/namelists/streams.atmosphere.TEMPLATE @@ -14,7 +14,7 @@ @@ -23,7 +23,7 @@ diff --git a/scripts/stools/setenv_PBS_ian_cray.bash b/scripts/stools/setenv_PBS_ian_cray.bash index 0280b15..97bf3b3 100755 --- a/scripts/stools/setenv_PBS_ian_cray.bash +++ b/scripts/stools/setenv_PBS_ian_cray.bash @@ -27,7 +27,6 @@ export STATIC_nthreads=1 export STATIC_jobname="Pre.static" export STATIC_walltime="02:00:00" - # PRE-Degrib phase: export DEGRIB_QUEUE="pesqextra" export DEGRIB_ncores=1 @@ -48,6 +47,16 @@ export INITATMOS_nthreads=1 export INITATMOS_jobname="Pre.InitAtmos" export INITATMOS_walltime="02:00:00" +# PRE-LBCs phase: +export LBCS_QUEUE="pesqextra" +export LBCS_ncores=64 +export LBCS_nnodes=1 +export LBCS_ncpus=64 +export LBCS_ncpn=64 +export LBCS_nthreads=1 +export LBCS_jobname="Pre.LBCS" +export LBCS_walltime="02:00:00" + # Model phase: export MODEL_QUEUE="pesqextra" export MODEL_ncores=2048 diff --git a/scripts/stools/setenv_PBS_ian_gnu.bash b/scripts/stools/setenv_PBS_ian_gnu.bash index a2cf615..2e64a54 100755 --- a/scripts/stools/setenv_PBS_ian_gnu.bash +++ b/scripts/stools/setenv_PBS_ian_gnu.bash @@ -27,7 +27,6 @@ export STATIC_nthreads=1 export STATIC_jobname="Pre.static" export STATIC_walltime="02:00:00" - # PRE-Degrib phase: export DEGRIB_QUEUE="pesqextra" export DEGRIB_ncores=1 @@ -48,6 +47,16 @@ export INITATMOS_nthreads=1 export INITATMOS_jobname="Pre.InitAtmos" export INITATMOS_walltime="02:00:00" +# PRE-LBCs phase: +export LBCS_QUEUE="pesqextra" +export LBCS_ncores=64 +export LBCS_nnodes=1 +export LBCS_ncpus=64 +export LBCS_ncpn=64 +export LBCS_nthreads=1 +export LBCS_jobname="Pre.LBCS" +export LBCS_walltime="02:00:00" + # Model phase: export MODEL_QUEUE="pesqextra" export MODEL_ncores=2048 @@ -86,7 +95,6 @@ export GCCCIS=/p/projetos/monan_adm/monan/CIs export PIO= export LD_LIBRARY_PATH=$NETCDF/lib:$PNETCDF/lib:$PIO/lib64:$LD_LIBRARY_PATH - # --- Others Variables --- # HPE Slingshot/Libfabric: export FI_CXI_REQ_BUF_SIZE=25165824 diff --git a/scripts/stools/setenv_PBS_ian_intel.bash b/scripts/stools/setenv_PBS_ian_intel.bash index 5f0ae81..02cdc33 100755 --- a/scripts/stools/setenv_PBS_ian_intel.bash +++ b/scripts/stools/setenv_PBS_ian_intel.bash @@ -59,8 +59,8 @@ export LBCS_walltime="02:00:00" # Model phase: export MODEL_QUEUE="pesqextra" -export MODEL_ncores=4096 -export MODEL_nnodes=16 +export MODEL_ncores=2048 +export MODEL_nnodes=8 export MODEL_ncpus=256 export MODEL_ncpn=256 export MODEL_nthreads=1 @@ -95,7 +95,6 @@ export GCCCIS=/p/projetos/monan_adm/monan/CIs export PIO= export LD_LIBRARY_PATH=$NETCDF/lib:$PNETCDF/lib:$PIO/lib64:$LD_LIBRARY_PATH - # --- Others Variables --- # HPE Slingshot/Libfabric: export FI_CXI_REQ_BUF_SIZE=25165824 From 3ceb8b85db899dbc87bb1cc4fb41e945659d51b7 Mon Sep 17 00:00:00 2001 From: Joao Messias Date: Wed, 1 Jul 2026 01:54:29 +0000 Subject: [PATCH 4/5] restore make_degrib.bash to make_degrib_GFS.bash --- scripts/make_degrib_GFS.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/make_degrib_GFS.bash b/scripts/make_degrib_GFS.bash index abe6f9c..0d48f0d 100755 --- a/scripts/make_degrib_GFS.bash +++ b/scripts/make_degrib_GFS.bash @@ -86,7 +86,7 @@ then else BNDDIR=${DATAIN}/${EXP}/${YYYYMMDDHHi} fi - else + else BNDDIR=${GCCCIS}/${EXP}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi} fi fi @@ -309,7 +309,7 @@ do fi done -mv ${DIRRUN}/degrib_GFS.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs +mv ${DIRRUN}/degrib_${EXP}.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* JOBID=$(sed -n '4p' ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o | awk '{print $3}' | sed "s/.pbs-ha//g") From 9e500927751c39330592e54ad8651ef1af6dee83 Mon Sep 17 00:00:00 2001 From: Joao Messias Date: Thu, 2 Jul 2026 01:11:32 +0000 Subject: [PATCH 5/5] Rename ERA5 to ERA due to a convert_mpas restriction in filename - Time_Label --- scripts/0.run_all.bash | 2 +- scripts/2.pre_processing.bash | 8 ++++---- scripts/3.run_model.bash | 4 ++-- scripts/4.run_post.bash | 2 +- scripts/make_degrib_ERA5.bash | 4 ++-- scripts/make_degrib_GFS.bash | 2 +- scripts/make_lbcs.bash | 2 +- scripts/make_template.bash | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/scripts/0.run_all.bash b/scripts/0.run_all.bash index b7159ad..f33cf3c 100755 --- a/scripts/0.run_all.bash +++ b/scripts/0.run_all.bash @@ -44,7 +44,7 @@ convertmpas_branch=1.2.0 EXP=GFS #Options - GFS or ERA RES=1024002 #Options - Global: 40962=120km; 163842=60km; 655362=30Km; 1024002=24km; 2621442=15Km; 5898242=10Km #Options - Regional: 655362.REG.AMS_CAR=30km; 5898242.REG.AMS_CAR=10km; 23592962.REG.AMS_CAR=5km -YYYYMMDDHHi=2026012000 #Check dates disponible for the initial condition (CI) using ERA5 +YYYYMMDDHHi=2026070100 #Check dates disponible for the initial condition (CI) using ERA5 FCST=24 #---------------------------------------------------------------------- diff --git a/scripts/2.pre_processing.bash b/scripts/2.pre_processing.bash index 2420911..ad04764 100755 --- a/scripts/2.pre_processing.bash +++ b/scripts/2.pre_processing.bash @@ -25,7 +25,7 @@ then echo "" echo "${0} EXP_NAME/OP RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS or ERA5" + echo "EXP_NAME :: Forcing: GFS or ERA" echo " :: Others options to be added later..." echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo " 40962 (120 km)" @@ -94,7 +94,7 @@ then fi # Creating the x1.${RES}.static.nc file once, if does not exist yet:--------------- -if [[ ${EXP} == "GFS" || ${EXP} == "ERA5" || ${EXP} == "ERA" ]]; then +if [[ ${EXP} == "GFS" || ${EXP} == "ERA" ]]; then if [ ! -s ${DATAIN}/fixed/x1.${RES}.static.nc ] then echo -e "${GREEN}==>${NC} Creating static.bash for submiting init_atmosphere to create x1.${RES}.static.nc...\n" @@ -116,7 +116,7 @@ if [[ ${EXP} == "GFS" ]] then echo -e "${GREEN}==>${NC} Submitting Degrib for GFS data...\n" time ./make_degrib_GFS.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} -elif [[ ${EXP} == "ERA5" || ${EXP} == "ERA" ]] +elif [[ ${EXP} == "ERA" ]] then echo -e "${GREEN}==>${NC} Submitting Degrib for ERA5 data...\n" time ./make_degrib_ERA5.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} @@ -129,7 +129,7 @@ fi #---------------------------------------------------------------------------------- # Init Atmosphere phase:------------------------------------------------------------ -if [[ ${EXP} == "GFS" || ${EXP} == "ERA5" || ${EXP} == "ERA" ]]; then +if [[ ${EXP} == "GFS" || ${EXP} == "ERA" ]]; then echo -e "${GREEN}==>${NC} Submitting Init Atmosphere for real case...\n" time ./make_initatmos.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} else diff --git a/scripts/3.run_model.bash b/scripts/3.run_model.bash index 0b3961d..a527d03 100755 --- a/scripts/3.run_model.bash +++ b/scripts/3.run_model.bash @@ -23,7 +23,7 @@ then echo "" echo "${0} [EXP_NAME/OP] RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS or ERA5" + echo "EXP_NAME :: Forcing: GFS or ERA" echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" echo "FCST :: Forecast hours, e.g.: 24 or 36, etc." @@ -192,7 +192,7 @@ cp -f ${DATAIN}/fixed/Vtable.${EXP} ${DIRRUN} if [[ $MODERUN == "R" ]]; then cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/lbc*.nc ${DIRRUN} fi -if [[ ${EXP} == "GFS" || ${EXP} == "ERA5" || ${EXP} == "ERA" ]] +if [[ ${EXP} == "GFS" || ${EXP} == "ERA" ]] then sed -e "s,#LABELI#,${start_date},g;s,#FCSTS#,${DD_HHMMSS_forecast},g;s,#RES#,${RES},g; s,#CONFIG_DT#,${CONFIG_DT},g;s,#CONFIG_LEN_DISP#,${CONFIG_LEN_DISP},g;s,#CONFIG_CONV_INTERVAL#,${CONFIG_CONV_INTERVAL},g;s,#APPLY_LBCS#,${APPLY_LBCS},g" \ diff --git a/scripts/4.run_post.bash b/scripts/4.run_post.bash index 72abdc9..4bca3aa 100755 --- a/scripts/4.run_post.bash +++ b/scripts/4.run_post.bash @@ -23,7 +23,7 @@ then echo "" echo "${0} ]EXP_NAME/OP] RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS" + echo "EXP_NAME :: Forcing: GFS or ERA" echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" echo "FCST :: Forecast hours, e.g.: 24 or 36, etc." diff --git a/scripts/make_degrib_ERA5.bash b/scripts/make_degrib_ERA5.bash index 25a92f4..279fd34 100755 --- a/scripts/make_degrib_ERA5.bash +++ b/scripts/make_degrib_ERA5.bash @@ -8,7 +8,7 @@ then echo "" echo "${0} EXP_NAME RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS or ERA5" + echo "EXP_NAME :: Forcing: GFS or ERA" echo " :: Others options to be added later..." echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" @@ -43,7 +43,7 @@ EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} # Input variables:-------------------------------------- -EXP=${1}; #EXP=ERA5 +EXP=${1}; #EXP=ERA RES=${2}; #RES=1024002 YYYYMMDDHHi=${3}; #YYYYMMDDHHi=2024012000 FCST=${4}; #FCST=24 diff --git a/scripts/make_degrib_GFS.bash b/scripts/make_degrib_GFS.bash index 0d48f0d..479d69e 100755 --- a/scripts/make_degrib_GFS.bash +++ b/scripts/make_degrib_GFS.bash @@ -9,7 +9,7 @@ then echo "" echo "${0} EXP_NAME RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS or ERA5" + echo "EXP_NAME :: Forcing: GFS or ERA" echo " :: Others options to be added later..." echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" diff --git a/scripts/make_lbcs.bash b/scripts/make_lbcs.bash index 939da66..b6e3648 100755 --- a/scripts/make_lbcs.bash +++ b/scripts/make_lbcs.bash @@ -8,7 +8,7 @@ then echo "" echo "${0} EXP_NAME RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS or ERA5" + echo "EXP_NAME :: Forcing: GFS or ERA" echo " :: Others options to be added later..." echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" diff --git a/scripts/make_template.bash b/scripts/make_template.bash index c95c821..eff9107 100755 --- a/scripts/make_template.bash +++ b/scripts/make_template.bash @@ -23,7 +23,7 @@ then echo "" echo "${0} ]EXP_NAME/OP] RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS or ERA5" + echo "EXP_NAME :: Forcing: GFS or ERA" echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" echo "FCST :: Forecast hours, e.g.: 24 or 36, etc."