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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
7 changes: 4 additions & 3 deletions scripts/0.run_all.bash
Original file line number Diff line number Diff line change
Expand Up @@ -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=2026070100 #Check dates disponible for the initial condition (CI) using ERA5
FCST=24
#----------------------------------------------------------------------

Expand Down
6 changes: 0 additions & 6 deletions scripts/1.install_monan.bash
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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}
Expand Down
72 changes: 51 additions & 21 deletions scripts/2.pre_processing.bash
Original file line number Diff line number Diff line change
Expand Up @@ -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 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)"
Expand All @@ -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}
Expand Down Expand Up @@ -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

Expand All @@ -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} == "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"
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} == "ERA" ]]
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} == "ERA" ]]; 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
#----------------------------------------------------------------------------------

80 changes: 56 additions & 24 deletions scripts/3.run_model.bash
Original file line number Diff line number Diff line change
Expand Up @@ -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
#
#
#-----------------------------------------------------------------------------#
Expand All @@ -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."
Expand Down Expand Up @@ -89,30 +89,62 @@ 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
# global mesh
if [[ "$RES" == "40962" ]]; then #120Km
CONFIG_DT=600.0
CONFIG_CONV_INTERVAL="00:15:00"
elif [[ "$RES" == "163842" ]]; then #60Km
CONFIG_DT=300.0
CONFIG_CONV_INTERVAL="00:15:00"
elif [[ "$RES" == "655362" ]]; then #30Km
CONFIG_DT=150.0
CONFIG_CONV_INTERVAL="00:15:00"
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 40962 ]; then #120Km
CONFIG_DT=600.0
elif [[ "$RES" == "5898242" ]]; then #10Km
CONFIG_DT=60.0
CONFIG_CONV_INTERVAL="00:15:00"
elif [ $RES -eq 163842 ]; then #60Km
CONFIG_DT=300.0
elif [[ "$RES" == "23592962" ]]; then #5km
CONFIG_DT=30.0
CONFIG_CONV_INTERVAL="00:15:00"
elif [ $RES -eq 655362 ]; then #30Km
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 -eq 5898242 ]; then #10Km
elif [[ "$RES" == "5898242.REG.AMS_CAR" ]]; then #10 km (AMS + Caribe)
CONFIG_DT=60.0
CONFIG_CONV_INTERVAL="00:15:00"
elif [ $RES -eq 65536002 ]; then #3Km
CONFIG_DT=18.0
elif [[ "$RES" == "23592962.REG.AMS_CAR" ]]; then #5 km (AMS + Caribe)
CONFIG_DT=30.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 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"
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) :
Expand All @@ -128,18 +160,16 @@ 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


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}" ]
Expand All @@ -157,16 +187,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} == "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,#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,#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}
Expand Down Expand Up @@ -271,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
Expand Down
Loading