diff --git a/README.md b/README.md index ea64e84..c66cd8f 100755 --- a/README.md +++ b/README.md @@ -1,10 +1,15 @@ -# MONAN - Model for Ocean-laNd-Atmosphere PredictioN +# Scripts CD-CT (Continuos Deployment & Continuous Testing) for MONAN (Model for Ocean-laNd-Atmosphere PredictioN) -### *Continuous Deployment & Continuous Testing (CD-CT) for MONAN at Egeon* +## History -This folder aims to create a version for testing MONAN with GFS at Egeon. +**Develop** -## History: ## +- 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). **1.3.0** - This version was created to work in operational runs. @@ -62,7 +67,7 @@ This folder aims to create a version for testing MONAN with GFS at Egeon. - Grouping all variables with one pressure level to only one variable with all levels. - Defined default version of MONAN-Model (0.5.0) and convert_mpas (0.1.0) in the installation step. -### Implementation at Egeon: +## Get Started **Getting the scritps:** @@ -91,8 +96,8 @@ You will need to execute only 6 steps scripts, so you can run the Atmospheric MO Default values: ~~~ - = "1.0.0" - = "1.0.0" + = "1.4.3-rc" + = "1.2.0" ~~~ - This first step will create a standart diretories structures for work: @@ -114,7 +119,6 @@ Where: - `dataout\Pre\` will contain all the output files from the pre-processing phase, mostly are all the initial condition for run the MONAN; - `dataout\Model\` will contain all the output files from the MONAN model; - `dataout\Post\` will contain all the output files from the post-processing phase of the MONAN; - - `dataout\Prods\` will contain all the output files from the products generated, graphics, derivated variables, peace of domain, etc. After running the first step, it will clone the MONAN model from your fork repo in a `source` diretory. diff --git a/VERSION.txt b/VERSION.txt old mode 100644 new mode 100755 index f0bb29e..88c5fb8 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -1.3.0 +1.4.0 diff --git a/scripts.pomerode/0.run_all_first_time.bash b/scripts.pomerode/0.run_all_first_time.bash deleted file mode 100755 index ea1a1fa..0000000 --- a/scripts.pomerode/0.run_all_first_time.bash +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash - - -#if [ $# -ne 5 ] -#then -# echo "" -# echo "Instructions: execute the command below" -# echo "" -# echo "${0} GitHubUserRepo EXP_NAME RESOLUTION LABELI FCST" -# echo "" -# echo "GitHubUserRepo :: GitHub link for your personal fork, eg: https://github.com/MYUSER/MONAN-Model.git" -# echo "EXP_NAME :: Forcing: GFS" -# 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} https://github.com/MYUSER/MONAN-Model.git 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:----------------------------------------------------- -github_link="https://github.com/monanadmin/MONAN-Model.git" -monan_branch=release/1.1.0 -convertmpas_branch= -EXP=GFS -RES=1024002 -YYYYMMDDHHi=2024042000 -FCST=240 -#---------------------------------------------------------------------- - - -# STEP 1: Installing and compiling the A-MONAN model and utility programs: -time 1.install_monan.bash ${github_link} ${monan_branch} - -# STEP 2: Executing the pre-processing fase. Preparing all CI/CC files needed: -time 2.pre_processing.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} - -# STEP 3: Executing the Model run: -time 3.run_model.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} - -# STEP 4: Executing the Post of Model run: -time 4.run_post.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} - -exit diff --git a/scripts.pomerode/1.install_monan.bash b/scripts.pomerode/1.install_monan.bash deleted file mode 100755 index 8e542bf..0000000 --- a/scripts.pomerode/1.install_monan.bash +++ /dev/null @@ -1,292 +0,0 @@ -#!/bin/bash - -#-----------------------------------------------------------------------------# -# !SCRIPT: install_monan -# -# !DESCRIPTION: -# Script to install the MONAN model and convert_MPAS. -# -# Performs the following tasks: -# -# o Clone the Monan model github repository in a local directory -# o Make the script make-all.sh that compiles the Atmosphere Model and the Init Atmosphere Model -# o As alternative for advanced users, this script creates a simple compile script that just compile the Atmosphere Model -# o Clone the Convert_mpas tool from the monanadmin repository for convert the output model files in lat-lon grid. -# o Compile the convert_mpas -# -#-----------------------------------------------------------------------------# - -#Fixed parameters ------------------------------------------------------------# -github_link_CONVERT_MPAS="https://github.com/monanadmin/convert_mpas.git" -#-----------------------------------------------------------------------------# - -#Functions -------------------------------------------------------------------# -function checkout_system() { - local source_dir=$1 - local github_link=$2 - local tag_or_branch_name=$3 - if [ -d "${source_dir}" ]; then - echo -e "${GREEN}==>${NC} Source dir already exists, updating it ...\n" - else - echo -e "${GREEN}==>${NC} Cloning your fork repository...\n" - git clone ${github_link} ${source_dir} - if [ ! -d "${source_dir}" ]; then - echo -e "${RED}==>${NC} An error occurred while cloning your fork. Possible causes: wrong URL, user or password.\n" - exit -1 - fi - fi - - cd ${source_dir} - if git checkout "${tag_or_branch_name}" 2>/dev/null; then - git pull - echo -e "${GREEN}==>${NC} Successfully checked out and updated: ${BLUE}${tag_or_branch_name}" - else - echo -e "${RED}==>${NC} Failed to check out branch: ${BLUE}${tag_or_branch_name}" - echo -e "${RED}==>${NC} Please check if you have this branch. Exiting ..." - exit -1 - fi - git log -1 --name-only -} -#-----------------------------------------------------------------------------# - - -if [ $# -lt 1 ] -then - echo "" - echo "Instructions: execute the command below" - echo "" - echo "${0} [G] [M] [C]" - echo "" - echo "G :: MONAN GitHub link of your personal fork, eg: https://github.com/MYUSER/MONAN-Model.git" - echo "M :: MONAN tag or branch name of your personal fork. (will be used 'develop' if not informed)" - echo "C :: Convert_MPAS tag from ${github_link_CONVERT_MPAS} (will be used 'develop' if not informed)" - 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} -DATAOUTCRON=${DATAOUT}/cron; mkdir -p ${DATAOUTCRON} -SOURCES=${DIRHOMES}/sources; mkdir -p ${SOURCES} -EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} -#---------------------------------------------------------------------- - - -# Input variables:----------------------------------------------------- -github_link_MONAN=${1}; #github_link=https://github.com/monanadmin/MONAN-Model.git -tag_or_branch_name_MONAN=${2} -tag_or_branch_name_MONAN=${tag_or_branch_name_MONAN:="1.0.0"} -echo "MONAN branch name in use: ${tag_or_branch_name_MONAN}" - -tag_or_branch_name_CONVERT_MPAS=${3} -tag_or_branch_name_CONVERT_MPAS=${tag_or_branch_name_CONVERT_MPAS:="1.0.0"} -echo "convert_mpas branch name in use: ${tag_or_branch_name_CONVERT_MPAS}" -#---------------------------------------------------------------------- - - -# Local variables:----------------------------------------------------- -MONANDIR=${SOURCES}/MONAN-Model_${tag_or_branch_name_MONAN} -CONVERT_MPAS_DIR=${SOURCES}/convert_mpas_${tag_or_branch_name_CONVERT_MPAS} -$(sed -i "s;MONANDIR=.*$;MONANDIR=$MONANDIR;" setenv.bash) -#---------------------------------------------------------------------- - -checkout_system ${MONANDIR} ${github_link_MONAN} ${tag_or_branch_name_MONAN} -checkout_system ${CONVERT_MPAS_DIR} ${github_link_CONVERT_MPAS} ${tag_or_branch_name_CONVERT_MPAS} - -rm -rf $MONANDIR/default_inputs/ -rm -f $MONANDIR/stream_list.* $MONANDIR/streams.* $MONANDIR/namelist.* -rm -f $MONANDIR/make*.output.atmosphere $MONANDIR/make*.output.init_atmosphere $MONANDIR/make.sh $MONANDIR/make-all.sh - - -#CR: TODO: maybe later move this make script to main scripts directory. -echo "" -echo -e "${GREEN}==>${NC} Making compile script...\n" - -cd $MONANDIR - -cat << EOF > make-all.sh -#!/bin/bash -#Usage: make target CORE=[core] [options] -#Example targets: -# ifort -# gfortran -# xlf -# pgi -#Availabe Cores: -# atmosphere -# init_atmosphere -# landice -# ocean -# seaice -# sw -# test -#Available Options: -# DEBUG=true - builds debug version. Default is optimized version. -# USE_PAPI=true - builds version using PAPI for timers. Default is off. -# TAU=true - builds version using TAU hooks for profiling. Default is off. -# AUTOCLEAN=true - forces a clean of infrastructure prior to build new core. -# GEN_F90=true - Generates intermediate .f90 files through CPP, and builds with them. -# TIMER_LIB=opt - Selects the timer library interface to be used for profiling the model. Options are: -# TIMER_LIB=native - Uses native built-in timers in MPAS -# TIMER_LIB=gptl - Uses gptl for the timer interface instead of the native interface -# TIMER_LIB=tau - Uses TAU for the timer interface instead of the native interface -# OPENMP=true - builds and links with OpenMP flags. Default is to not use OpenMP. -# OPENACC=true - builds and links with OpenACC flags. Default is to not use OpenACC. -# USE_PIO2=true - links with the PIO 2 library. Default is to use the PIO 1.x library. -# PRECISION=single - builds with default single-precision real kind. Default is to use double-precision. -# SHAREDLIB=true - generate position-independent code suitable for use in a shared library. Default is false. - - -. ${SCRIPTS}/setenv.bash -rm -fr ${MONANDIR}/stream* ${MONANDIR}/namelist.* ${MONANDIR}/make_*output.atmosphere ${MONANDIR}/default_inputs -DATE_TIME_NOW=\$(date +"%Y%m%d%H%M%S") - -sed -i "s/DMPAS_USE_MPI_F08/DMPAS_USE_MPI_H/" ${MONANDIR}/Makefile -sed -i "s,framework.*$,framework -I../../../../external/esmf_time_f90," ${MONANDIR}/src/core_atmosphere/physics/physics_noahmp/src/Makefile - -echo "NETCDF: $NETCDF" -echo "NETCDFF: $NETCDFF" -echo "PNETCDF: $PNETCDF" -echo "HDF5: $HDF5" -echo "PIO: $PIO" -echo "" -echo "" -echo "" - -MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.atmosphere" -make clean CORE=atmosphere -make -j 8 nvhpc CORE=atmosphere USE_PIO=true OPENACC=true PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} - -#CR: TODO: put verify here if executable was created ok -mv ${MONANDIR}/atmosphere_model ${EXECS} -mv ${MONANDIR}/build_tables ${EXECS} -cp ${MONANDIR}/VERSION.txt ${EXECS} -cp ${MONANDIR}/GF_ConvPar_nml ${SCRIPTS} -make clean CORE=atmosphere - -MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.init_atmosphere" -make clean CORE=init_atmosphere -make -j 8 nvhpc CORE=init_atmosphere USE_PIO=true OPENACC=true PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} - -mv ${MONANDIR}/init_atmosphere_model ${EXECS} -make clean CORE=init_atmosphere - - -if [ -s "${EXECS}/init_atmosphere_model" ] && [ -e "${EXECS}/atmosphere_model" ]; then - echo "" - echo -e "${GREEN}==>${NC} Files init_atmosphere_model and atmosphere_model generated Successfully in ${EXECS} !" - echo -else - echo -e "${RED}==>${NC} !!! An error occurred during build. Check output" - exit -1 -fi - -EOF -chmod a+x make-all.sh - - -cat << EOF > make.sh -#!/bin/bash -#Usage: make target CORE=[core] [options] -#Example targets: -# ifort -# gfortran -# xlf -# pgi -#Availabe Cores: -# atmosphere -# init_atmosphere -# landice -# ocean -# seaice -# sw -# test -#Available Options: -# DEBUG=true - builds debug version. Default is optimized version. -# USE_PAPI=true - builds version using PAPI for timers. Default is off. -# TAU=true - builds version using TAU hooks for profiling. Default is off. -# AUTOCLEAN=true - forces a clean of infrastructure prior to build new core. -# GEN_F90=true - Generates intermediate .f90 files through CPP, and builds with them. -# TIMER_LIB=opt - Selects the timer library interface to be used for profiling the model. Options are: -# TIMER_LIB=native - Uses native built-in timers in MPAS -# TIMER_LIB=gptl - Uses gptl for the timer interface instead of the native interface -# TIMER_LIB=tau - Uses TAU for the timer interface instead of the native interface -# OPENMP=true - builds and links with OpenMP flags. Default is to not use OpenMP. -# OPENACC=true - builds and links with OpenACC flags. Default is to not use OpenACC. -# USE_PIO2=true - links with the PIO 2 library. Default is to use the PIO 1.x library. -# PRECISION=single - builds with default single-precision real kind. Default is to use double-precision. -# SHAREDLIB=true - generate position-independent code suitable for use in a shared library. Default is false. - -. ${SCRIPTS}/setenv.bash -rm -fr ${MONANDIR}/stream* ${MONANDIR}/namelist.* ${MONANDIR}/make_*output.atmosphere ${MONANDIR}/default_inputs -DATE_TIME_NOW=\$(date +"%Y%m%d%H%M%S") - -sed -i "s/DMPAS_USE_MPI_F08/DMPAS_USE_MPI_H/" ${MONANDIR}/Makefile -sed -i "s,framework.*$,framework -I../../../../external/esmf_time_f90," ${MONANDIR}/src/core_atmosphere/physics/physics_noahmp/src/Makefile - -MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.atmosphere" -make clean CORE=atmosphere -make -j 8 nvhpc CORE=atmosphere USE_PIO=true OPENACC=true PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} - -#CR: TODO: put verify here if executable was created ok -mv ${MONANDIR}/atmosphere_model ${EXECS} -mv ${MONANDIR}/build_tables ${EXECS} -make clean CORE=atmosphere - -if [ -e "${EXECS}/atmosphere_model" ]; then - echo "" - echo -e "${GREEN}==>${NC} Files init_atmosphere_model and atmosphere_model generated Successfully in ${EXECS} !" - echo -else - echo -e "${RED}==>${NC} !!! An error occurred during build. Check output" - exit -1 -fi - -EOF -chmod a+x make.sh - - -echo "" -echo -e "${GREEN}==>${NC} Installing init_atmosphere_model and atmosphere_model...\n" -echo "" - -#CR: TODO: maybe at this point we should put our registry-file et all. -#CR: make-all.sh compile all for the first time -#CR: make.sh just compile the A-model -. ${MONANDIR}/make-all.sh - - -# install convert_mpas -echo "" -echo -e "${GREEN}==>${NC} Moduling environment for convert_mpas...\n" -module load monan_nvhpc-24.9 -module list - -cd ${CONVERT_MPAS_DIR} -echo "" -echo -e "${GREEN}==>${NC} Installing convert_mpas...\n" -make clean -make 2>&1 | tee make.convert.output - -#CR: TODO: put verify here if executable was created ok -mv ${CONVERT_MPAS_DIR}/convert_mpas ${EXECS}/ - -if [ -s "${EXECS}/convert_mpas" ] ; then - echo "" - echo -e "${GREEN}==>${NC} File convert_mpas generated Sucessfully in ${CONVERT_MPAS_DIR} and copied to ${EXECS} !" - echo -else - echo -e "${RED}==>${NC} !!! An error occurred during convert_mpas build. Check output" - exit -1 -fi - diff --git a/scripts.pomerode/2.pre_processing.bash b/scripts.pomerode/2.pre_processing.bash deleted file mode 100755 index 485bed6..0000000 --- a/scripts.pomerode/2.pre_processing.bash +++ /dev/null @@ -1,137 +0,0 @@ -#!/bin/bash -#-----------------------------------------------------------------------------# -# !SCRIPT: pre_processing -# -# !DESCRIPTION: -# Script to prepare boundary and initials conditions for MONAN model. -# -# Performs the following tasks: -# -# o Creates topography, land use and static variables -# o Ungrib GFS data -# o Interpolates to model the grid -# o Creates initial and boundary conditions -# o Creates scripts to run the model and post-processing (CR: to be modified to phase 3 and 4) -# o Integrates the MONAN model ((CR: to be modified to phase 3) -# o Post-processing (netcdf for grib2, latlon regrid, crop) (CR: to be modified to phase 4) -# -#-----------------------------------------------------------------------------# - -if [ $# -ne 4 -a $# -ne 1 ] -then - echo "" - echo "Instructions: execute the command below" - echo "" - echo "${0} EXP_NAME/OP RESOLUTION LABELI FCST" - echo "" - echo "EXP_NAME :: Forcing: GFS" - echo "OP :: clean: remove all temporary files createed in the last run." - 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)" - echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" - echo "FCST :: Forecast hours, e.g.: 24 or 36, etc." - echo "" - echo "24 hour forecast example for 24km:" - echo "${0} GFS 1024002 2024010100 24" - echo "48 hour forecast example for 120km:" - echo "${0} GFS 40962 2024010100 48" - echo "Cleannig temp files example:" - echo "${0} clean" - echo "" - - exit -fi - -# Set environment variables exports: -echo "" -echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" -. setenv.bash - -if [ $# -eq 1 ] -then - op=$(echo "${1}" | tr '[A-Z]' '[a-z]') - if [ ${op} = "clean" ] - then - clean_pre_tmp_files - exit - else - echo "Should type just \"clean\" for cleanning." - echo "${0} clean" - echo "" - exit - fi -fi - - -# 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-------------------------------------- -# Calculating CIs and final forecast dates in model namelist format: -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 -#------------------------------------------------------- - - -echo -e "${GREEN}==>${NC} Scripts_CD-CT last commit: \n" -git log -1 --name-only -git branch | head -1 - - -# Untar the fixed files: -# x1.${RES}.graph.info.part. files can be found in datain/fixed -# *.TBL files also can be found in datain/fixed -# x1.${RES}.grid.nc also can be found in datain/fixed - -echo -e "${GREEN}==>${NC} copying and linking fixed input data... \n" -mkdir -p ${DATAIN} -rsync -rv --chmod=ugo=rw ${DIRDADOS}/MONAN_datain/datain/fixed ${DATAIN} -rsync -rv --chmod=ugo=rwx ${DIRDADOS}/MONAN_datain/execs ${DIRHOMED} -ln -sf ${DIRDADOS}/MONAN_datain/datain/WPS_GEOG ${DATAIN} - -# 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} -else - echo -e "${GREEN}==>${NC} File x1.${RES}.static.nc already exist in ${DATAIN}/fixed.\n" -fi -#---------------------------------------------------------------------------------- - - - -# Degrib phase:--------------------------------------------------------------------- -echo -e "${GREEN}==>${NC} Submiting Degrib...\n" -time ./make_degrib.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} -#---------------------------------------------------------------------------------- - - - -# Init Atmosphere phase:------------------------------------------------------------ -echo -e "${GREEN}==>${NC} Submiting Init Atmosphere...\n" -time ./make_initatmos.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} -#---------------------------------------------------------------------------------- - - - - diff --git a/scripts.pomerode/3.run_model.bash b/scripts.pomerode/3.run_model.bash deleted file mode 100755 index 9b2b9e0..0000000 --- a/scripts.pomerode/3.run_model.bash +++ /dev/null @@ -1,248 +0,0 @@ -#!/bin/bash -#-----------------------------------------------------------------------------# -# !SCRIPT: run_model -# -# !DESCRIPTION: -# Script to run the MONAN model over the forecast horizon. -# -# Performs the following tasks: -# -# o VCheck all input files before -# o Creates the submition script -# o Submit the model -# o Veriffy all files generated -# -# -#-----------------------------------------------------------------------------# - -if [ $# -ne 4 -a $# -ne 1 ] -then - echo "" - echo "Instructions: execute the command below" - echo "" - echo "${0} [EXP_NAME/OP] RESOLUTION LABELI FCST" - echo "" - echo "EXP_NAME :: Forcing: GFS" - echo "OP :: clean: remove all temporary files createed in the last run." - 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 for 24km:" - echo "${0} GFS 1024002 2024010100 24" - echo "48 hour forecast example for 120km:" - echo "${0} GFS 40962 2024010100 48" - echo "Cleannig temp files example:" - echo "${0} clean" - echo "" - - exit -fi - -# Set environment variables exports: -echo "" -echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" -. setenv.bash - -if [ $# -eq 1 ] -then - op=$(echo "${1}" | tr '[A-Z]' '[a-z]') - if [ ${op} = "clean" ] - then - clean_model_tmp_files - exit - else - echo "Should type just \"clean\" for cleanning." - echo "${0} clean" - echo "" - exit - fi -fi - - -# 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=6 -#------------------------------------------------------- -mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Model/logs - - -# Local variables-------------------------------------- -start_date=${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}_${YYYYMMDDHHi:8:2}:00:00 -cores=${MODEL_ncores} -hhi=${YYYYMMDDHHi:8:2} -NLEV=55 -CONFIG_CONV_INTERVAL="00:30:00" - -# Calculating default parameters for different resolutions -if [ $RES -eq 1024002 ]; then #24Km - CONFIG_DT=150.0 - CONFIG_LEN_DISP=24000.0 - CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 2621442 ]; then #15Km - CONFIG_DT=90.0 - CONFIG_LEN_DISP=15000.0 - CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 40962 ]; then #120Km - CONFIG_DT=600.0 - CONFIG_LEN_DISP=120000.0 -fi -#------------------------------------------------------- - - -# Calculating final forecast dates in model namelist format: DD_HH:MM:SS -# using: start_date(yyyymmdd) + FCST(hh) : -ind=$(printf "%02d\n" $(echo "${FCST}/24" | bc)) -inh=$(printf "%02.0f\n" $(echo "((${FCST}/24)-${ind})*24" | bc -l)) -DD_HHMMSS_forecast=$(echo "${ind}_${inh}:00:00") - - -if [ ! -s ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ] -then - if [ ! -s ${DATAIN}/fixed/x1.${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/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 - -clean_model_tmp_files - -files_needed=("${DATAIN}/namelists/stream_list.atmosphere.output" ""${DATAIN}/namelists/stream_list.atmosphere.diagnostics "${DATAIN}/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") -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 - -ln -sf ${EXECS}/atmosphere_model ${SCRIPTS} -ln -sf ${DATAIN}/fixed/*TBL ${SCRIPTS} -ln -sf ${DATAIN}/fixed/*DBL ${SCRIPTS} -ln -sf ${DATAIN}/fixed/*DATA ${SCRIPTS} -ln -sf ${DATAIN}/fixed/x1.${RES}.static.nc ${SCRIPTS} -ln -sf ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ${SCRIPTS} -ln -sf ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ${SCRIPTS} -ln -sf ${DATAIN}/fixed/Vtable.GFS ${SCRIPTS} - - -if [ ${EXP} = "GFS" ] -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" \ - ${DATAIN}/namelists/namelist.atmosphere.TEMPLATE > ${SCRIPTS}/namelist.atmosphere - - sed -e "s,#RES#,${RES},g;s,#CIORIG#,${EXP},g;s,#LABELI#,${YYYYMMDDHHi},g;s,#NLEV#,${NLEV},g" \ - ${DATAIN}/namelists/streams.atmosphere.TEMPLATE > ${SCRIPTS}/streams.atmosphere -fi -cp -f ${DATAIN}/namelists/stream_list.atmosphere.output ${SCRIPTS} -cp -f ${DATAIN}/namelists/stream_list.atmosphere.diagnostics ${SCRIPTS} -cp -f ${DATAIN}/namelists/stream_list.atmosphere.surface ${SCRIPTS} - - - -rm -f ${SCRIPTS}/model.bash -cat << EOF0 > ${SCRIPTS}/model.bash -#!/bin/bash -#SBATCH --job-name=${MODEL_jobname} -#SBATCH --nodes=${MODEL_nnodes} -#SBATCH --ntasks=${MODEL_ncores} -#SBATCH --tasks-per-node=${MODEL_ncpn} -#SBATCH --partition=${MODEL_QUEUE} -#SBATCH --gres=${MODEL_gres} -#SBATCH --time=${MODEL_walltime} -#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.e%j # File name for standard error output -#SBATCH --exclusive -##SBATCH --mem=500000 - -export executable=atmosphere_model - -ulimit -c unlimited -ulimit -v unlimited -ulimit -s unlimited - -. $(pwd)/setenv.bash - -cd ${SCRIPTS} - -date -time mpirun -np \${SLURM_NTASKS} ./\${executable} -date - -# -# move dataout, clean up and remove files/links -# - -mv MONAN_DIAG_* ${DATAOUT}/${YYYYMMDDHHi}/Model -mv MONAN_HIST_* ${DATAOUT}/${YYYYMMDDHHi}/Model -cp ${EXECS}/VERSION.txt ${DATAOUT}/${YYYYMMDDHHi}/Model - -mv log.atmosphere.*.out ${DATAOUT}/${YYYYMMDDHHi}/Model/logs -mv log.atmosphere.*.err ${DATAOUT}/${YYYYMMDDHHi}/Model/logs -mv namelist.atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Model/logs -mv stream* ${DATAOUT}/${YYYYMMDDHHi}/Model/logs - -rm -f ${SCRIPTS}/atmosphere_model -rm -f ${SCRIPTS}/*TBL -rm -f ${SCRIPTS}/*.DBL -rm -f ${SCRIPTS}/*DATA -rm -f ${SCRIPTS}/x1.${RES}.static.nc -rm -f ${SCRIPTS}/x1.${RES}.graph.info.part.${cores} -rm -f ${SCRIPTS}/Vtable.GFS -rm -f ${SCRIPTS}/x1.${RES}.init.nc - - - -EOF0 -chmod a+x ${SCRIPTS}/model.bash - - -echo -e "${GREEN}==>${NC} Submitting MONAN atmosphere model and waiting for finish before exit... \n" -echo -e "${GREEN}==>${NC} Logs being generated at ${DATAOUT}/logs... \n" -echo -e "sbatch ${SCRIPTS}/model.bash" -sbatch --wait ${SCRIPTS}/model.bash -mv ${SCRIPTS}/model.bash ${DATAOUT}/${YYYYMMDDHHi}/Model/logs - - -output_interval=3 -for i in $(seq 0 ${output_interval} ${FCST}) -do - hh=${YYYYMMDDHHi:8:2} - currentdate=$(date -u +"%Y%m%d%H" -d "${YYYYMMDDHHi:0:8} ${hh}:00 ${i} hours") - file=MONAN_DIAG_G_MOD_GFS_${YYYYMMDDHHi}_${currentdate}.00.00.x${RES}L55.nc - - if [ ! -s ${DATAOUT}/${YYYYMMDDHHi}/Model/${file} ] - then - echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" - echo -e "${RED}==>${NC} [${0}] At least the file ${DATAOUT}/${YYYYMMDDHHi}/Model/${file} was not generated. \n" - exit -1 - fi - -done - - diff --git a/scripts.pomerode/4.run_post.bash b/scripts.pomerode/4.run_post.bash deleted file mode 100755 index 63b40d0..0000000 --- a/scripts.pomerode/4.run_post.bash +++ /dev/null @@ -1,306 +0,0 @@ -#!/bin/bash -#-----------------------------------------------------------------------------# -# !SCRIPT: run_post -# -# !DESCRIPTION: -# Script to run the pos-processing of MONAN model over the forecast horizon. -# -# Performs the following tasks: -# -# o VCheck all input files before -# o Creates the submition script -# o Submit the post -# o Veriffy all files generated -# -# -#-----------------------------------------------------------------------------# - -if [ $# -ne 4 -a $# -ne 1 ] -then - echo "" - echo "Instructions: execute the command below" - echo "" - echo "${0} ]EXP_NAME/OP] RESOLUTION LABELI FCST" - echo "" - echo "EXP_NAME :: Forcing: GFS" - echo "OP :: clean: remove all temporary files createed in the last run." - 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 "${0} GFS 40962 2024010100 48" - echo "Cleannig temp files example:" - echo "${0} clean" - echo "" - - exit -fi - -# Set environment variables exports: -echo "" -echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" -. setenv.bash - -if [ $# -eq 1 ] -then - op=$(echo "${1}" | tr '[A-Z]' '[a-z]') - if [ ${op} = "clean" ] - then - clean_post_tmp_files - exit - else - echo "Should type just \"clean\" for cleanning." - echo "${0} clean" - echo "" - exit - fi -fi - - - -# Standart directories variables:--------------------------------------- -DIRHOMES=${DIR_SCRIPTS}/scripts_CD-CT; mkdir -p ${DIRHOMES} -DIRHOMED=${DIR_DADOS}/scripts_CD-CT; mkdir -p ${DIRHOMED} -export 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=2024042000 -FCST=${4}; #FCST=40 -#------------------------------------------------------- -mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Post/logs - - -# Local variables-------------------------------------- -START_DATE_YYYYMMDD="${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}" -START_HH="${YYYYMMDDHHi:8:2}" -maxpostpernode=20 # <------ qtde max de convert_mpas por no! -#------------------------------------------------------- - -# Calculating default parameters for different resolutions -if [ $RES -eq 1024002 ]; then #24Km - NLAT=720 #180/0.25 - NLON=1440 #360/0.25 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 2621442 ]; then #15Km - NLAT=1200 #180/0.15 - NLON=2400 #360/0.15 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 40962 ]; then #120Km - #CR-TODO: verificar se precisa corrigir para esta resolucao tambem: - NLAT=181 - NLON=361 - STARTLAT=-90.5 - STARTLON=-0.5 - ENDLAT=90.5 - ENDLON=360.5 -fi -#------------------------------------------------------- - -clean_post_tmp_files - -files_needed=("${DATAIN}/namelists/include_fields.diag" "${DATAIN}/namelists/convert_mpas.nml" "${DATAIN}/namelists/target_domain.TEMPLATE" "${EXECS}/convert_mpas" "${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc") -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 - -# Captura quantos arquivos do modelo tiverem para serem pos-processados e -# quando nos serao necessarios para executar ${maxpostpernode} convert_mpas por no: -#nfiles=$(ls -l ${DATAOUT}/${YYYYMMDDHHi}/Model/MONAN*nc | wc -l) -# from streams.atmosphere.TEMPLATE in diagnostics the output_interval is 3 hours -output_interval=3 -#nfiles=FCST/output_interval + 1(time zero file) -nfiles=$(echo "$FCST/$output_interval + 1" | bc) -echo "${nfiles} post to submit." -echo "Max ${maxpostpernode} submits per nodes." -how_many_nodes ${nfiles} ${maxpostpernode} - -# Cria os diretorios e arquivos/links para cada saida do convert_mpas: -cd ${SCRIPTS} -for ii in $(seq 1 ${nfiles}) -do - i=$(printf "%03d" ${ii}) - mkdir -p ${SCRIPTS}/dir.${i} - - ln -sf ${DATAIN}/namelists/include_fields.diag ${SCRIPTS}/dir.${i}/include_fields.diag - ln -sf ${DATAIN}/namelists/convert_mpas.nml ${SCRIPTS}/dir.${i}/convert_mpas.nml - sed -e "s,#NLAT#,${NLAT},g;s,#NLON#,${NLON},g;s,#STARTLAT#,${STARTLAT},g;s,#ENDLAT#,${ENDLAT},g;s,#STARTLON#,${STARTLON},g;s,#ENDLON#,${ENDLON},g;" \ - ${DATAIN}/namelists/target_domain.TEMPLATE > ${SCRIPTS}/dir.${i}/target_domain - - rm -rf ${SCRIPTS}/dir.${i}/convert_mpas - ln -sf ${EXECS}/convert_mpas ${SCRIPTS}/dir.${i} - ln -sf ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ${SCRIPTS}/dir.${i} - - hh=${YYYYMMDDHHi:8:2} - currentdate=$(date -d "${YYYYMMDDHHi:0:8} ${hh}:00 $(echo "(${i}-1)*3" | bc) hours" +"%Y%m%d%H") - diag_name=MONAN_DIAG_G_MOD_${EXP}_${YYYYMMDDHHi}_${currentdate}.00.00.x${RES}L55.nc - #CR-TODO: verificar se o arq existe antes de fazer o link: - ln -sf ${DATAOUT}/${YYYYMMDDHHi}/Model/${diag_name} ${SCRIPTS}/dir.${i} -done - -cd ${SCRIPTS} -. ${SCRIPTS}/setenv_python.bash - -# Laco para criar os arquivos de submissao com os blocos de convertmpas para cada node: -node=1 -inicio=1 -fim=$((maxpostpernode <= nfiles ? maxpostpernode : nfiles)) -while [ ${inicio} -le ${nfiles} ] -do -cat > ${SCRIPTS}/PostAtmos_node.${node}.sh < convert_mpas.output & - echo "./convert_mpas x1.${RES}.init.nc ${DATAOUT}/${YYYYMMDDHHi}/Model/\${diag_name} > convert_mpas.output" - -done - -# necessario aguardar as rodadas em background -wait - -for ii in \$(seq ${inicio} ${fim}) -do - i=\$(printf "%03d" \${ii}) - cd ${SCRIPTS}/dir.\${i} - python ${SCRIPTS}/group_levels.py ${SCRIPTS}/dir.\${i} latlon.nc latlon_\${i}.nc > saida_python.txt & -done - -wait - -# unload the python's environment -deactivate - -for ii in \$(seq ${inicio} ${fim}) -do - i=\$(printf "%03d" \${ii}) - cd ${SCRIPTS}/dir.\${i} - rm -f ${DATAOUT}/${YYYYMMDDHHi}/Post/latlon_\${i}.nc - cp -f latlon_\${i}.nc ${DATAOUT}/${YYYYMMDDHHi}/Post/ & -done -wait - -EOSH - - chmod a+x ${SCRIPTS}/PostAtmos_node.${node}.sh - jobid[${node}]=$(sbatch --parsable ${SCRIPTS}/PostAtmos_node.${node}.sh) - echo "JobId node ${node} = ${jobid[${node}]} , convert_mpas ${inicio} to ${fim}" - - inicio=$((fim + 1)) - temp=$((fim + maxpostpernode)) - fim=$(( temp < nfiles ? temp : nfiles )) - node=$((node+1)) -done - -# Dependencias JobId: -dependency="afterok" -for job_id in "${jobid[@]}" -do - dependency="${dependency}:${job_id}" -done - - - - - -# Script principal para juntar os arquivos finais em um unico: -node=0 -cat > ${SCRIPTS}/PostAtmos_node.${node}.sh <\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=6 -#------------------------------------------------------- - - -# Local variables-------------------------------------- -yyyymmddi=${YYYYMMDDHHi:0:8} -hhi=${YYYYMMDDHHi:8:2} -#------------------------------------------------------- -mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Prods/logs - - -#for nh in $(seq 1 ${FCST}) -#do - nh=2 - yyyymmddhhf=$(date -u +"%Y%m%d%H" -d "${yyyymmddi} ${hhi}:00 ${nh} hours" ) - yyyymmddhhff=$(date -u +"%Y%m%d%H" -d "${yyyymmddi} ${hhi}:00 $((nh+1)) hours" ) - -rm -f ${DATAOUT}/${YYYYMMDDHHi}/Prods/MONAN_PREC_${EXP}_${YYYYMMDDHHi}_${yyyymmddhhff}.00.00.x${RES}L55.png -rm -f ${SCRIPTS}/prec.gs -cat << EOGS > ${SCRIPTS}/prec.gs -'reinit' -'set display color white' -'c' -'set gxout shaded' - -'sdfopen ${DATAOUT}/${YYYYMMDDHHi}/Post/MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_${yyyymmddhhf}.00.00.x${RES}L55.nc' -'sdfopen ${DATAOUT}/${YYYYMMDDHHi}/Post/MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_${yyyymmddhhff}.00.00.x${RES}L55.nc' -'set mpdset mres' -'set grads off' - -'set lon 276.25 339.5' -'set lat -55.75 14.25' - -'pr1=rainc.1+rainnc.1' -'pr25=rainc.2(t=1)+rainnc.2(t=1)' - -'set clevs 0.5 1 2 4 8 16 32 64 128' -'set ccols 0 14 11 5 13 10 7 12 2 6' - -'d pr25-pr1' -'set gxout contour' - -'cbar' -'draw title Previsao de Precipitacao \ MONAN: prod: 2024010100 valid: 2024010102' - -'set strsiz 0.15 0.15' -'draw string 7.8 0.3 (mm)' -'set strsiz 0.10 0.10' -'set string 1 l 5' -'draw string 0.1 0.1 MONAN v.0.4.0' - - -'printim ${DATAOUT}/${YYYYMMDDHHi}/Prods/MONAN_PREC_${EXP}_${YYYYMMDDHHi}_${yyyymmddhhff}.00.00.x${RES}L55.png' -'quit' - - - -EOGS - - -cat << EOF0 > ${SCRIPTS}/prods.bash -#!/bin/bash -#SBATCH --job-name=${PRODS_jobname} -#SBATCH --nodes=${PRODS_nnodes} -#SBATCH --ntasks=${PRODS_ncores} -#SBATCH --tasks-per-node=${PRODS_ncpn} -#SBATCH --partition=${PRODS_QUEUE} -#SBATCH --time=${PRODS_walltime} -#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Prods/logs/prods.bash.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Prods/logs/prods.bash.e%j # File name for standard error output -##SBATCH --exclusive -##SBATCH --mem=500000 - - -ulimit -c unlimited -ulimit -v unlimited -ulimit -s unlimited - -. $(pwd)/setenv.bash - -cd ${SCRIPTS} - -date -time grads -bpcx "run prec.gs" -date - - -EOF0 -chmod a+x ${SCRIPTS}/prods.bash - - -echo -e "${GREEN}==>${NC} Submitting MONAN atmosphere model Products and waiting for finish before exit... \n" -echo -e "${GREEN}==>${NC} Logs being generated at ${DATAOUT}/${YYYYMMDDHHi}/Prods/logs... \n" -echo -e "sbatch ${SCRIPTS}/prods.bash" -sbatch --wait ${SCRIPTS}/prods.bash -rm -f ${SCRIPTS}/prods.bash diff --git a/scripts.pomerode/6.do_manut.bash b/scripts.pomerode/6.do_manut.bash deleted file mode 100755 index 74fd325..0000000 --- a/scripts.pomerode/6.do_manut.bash +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/bash -#-----------------------------------------------------------------------------# -# !SCRIPT: do_manut -# -# !DESCRIPTION: -# Script that maintains the MONAN model suite healthy. -# -# Performs the following tasks: -# -# o Feeds public areas (FTP) with important files (figures, outputs, -# clippings, etc.) -# o Removes temporary files with no value that are eventually generated -# during integration. -# o Performs maintenance on the area occupied by the model, moving old -# outputs to their destination area. -# -# -#-----------------------------------------------------------------------------# - - -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 " :: 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:---------------------- -DIRHOME=${DIRWORK}/../../MONAN; mkdir -p ${DIRHOME} -SCRIPTS=${DIRHOME}/scripts; mkdir -p ${SCRIPTS} -DATAIN=${DIRHOME}/datain; mkdir -p ${DATAIN} -DATAOUT=${DIRHOME}/dataout; mkdir -p ${DATAOUT} -SOURCES=${DIRHOME}/sources; mkdir -p ${SOURCES} -EXECS=${DIRHOME}/execs; mkdir -p ${EXECS} -#------------------------------------------------------- - - -# Input variables:-------------------------------------- -EXP=${1}; #EXP=GFS -RES=${2}; #RES=1024002 -YYYYMMDDHHi=${3}; #YYYYMMDDHHi=2024012000 -FCST=${4}; #FCST=24 -#------------------------------------------------------- -cp -f setenv.bash ${SCRIPTS} - - -# Local variables-------------------------------------- -#------------------------------------------------------- - - -# TODO compress all output files - -# +cat > Compress_exe.sh <> ${LOG_FILE} 2>&1 -# +tar -cf - diagnostics_${START_DATE_YYYYMMDD}.nc | xz -9 -c - > diagnostics_${START_DATE_YYYYMMDD}.tar.xz -# + -# +#echo -e "Compressing all /monanprd/diag*.nc files...\n" >> ${LOG_FILE} 2>&1 -# +#tar -cf - ${EXPDIR}/monanprd | xz -9 -c - > monanprd_${START_DATE_YYYYMMDD}.tar.xz -# + -# +exit 0 -# +EOF0 -# + -# +chmod +x Compress_exe.sh - - diff --git a/scripts.pomerode/group_levels.py b/scripts.pomerode/group_levels.py deleted file mode 100644 index 6acb4f1..0000000 --- a/scripts.pomerode/group_levels.py +++ /dev/null @@ -1,107 +0,0 @@ - -import netCDF4 as nc -import numpy as np -import re -import sys - - -def main(data_dir, file_in, file_out, levels=[1000, 975, 950, 925, 900, 875, 850, 825, 700, 600, 500, 400, \ - 300, 250, 200, 150, 100, 70, 50, 30, 20, 15]): - """ - This function takes in the data directory, input file name, and output file name. - It reads the input NetCDF file, groups variables based on their names, - creates a new NetCDF file with dimensions and variables copied from the input file, - and saves the concatenated variables to the new NetCDF file. - - Parameters: - data_dir (str): The directory where the input and output NetCDF files are located. - file_in (str): The name of the input NetCDF file. - file_out (str): The name of the output NetCDF file. - - Returns: - None - """ - - nc_file_in = nc.Dataset(f'{data_dir}/{file_in}', 'r') - # Save the concatenated variables to a new NetCDF file - nc_file_out = nc.Dataset(f'{data_dir}/{file_out}', 'w') - - dimensions_4D = ('time', 'level', 'latitude', 'longitude') - # Group variables based on their names - variable_groups = {} - first_hpa_variable = '' - for name, variable in reversed(list(nc_file_in.variables.items())): # reverse to be consistent to levels - # if 'hPa' in name or name in dimensions_4D: - if 'hPa' in name: - variable_type = re.split('_.\d*hPa', name)[0] # Extract the variable type (e.g., '15hPa', '20hPa') - first_hpa_variable = variable_type if first_hpa_variable == '' else first_hpa_variable - else: - variable_type = name.lower() - if variable_type not in variable_groups: - variable_groups[variable_type] = [variable] - else: - variable_groups[variable_type].append(variable) - - level_dimension_size = len(variable_groups[first_hpa_variable]) - - # Copy dimensions Time, latitude, longitude - for dim_name, dim_type in nc_file_in.dimensions.items(): - if dim_name.lower() in ['time', 'latitude', 'longitude']: - nc_file_out.createDimension(dim_name.lower(), dim_type.size) - nc_file_out.createDimension('level', level_dimension_size) - - - # Copy variables - for variable_type, variables in variable_groups.items(): - print(f'Creating var {variable_type}') - if variable_type == 'level': - new_variable = nc_file_out.createVariable(variable_type, variables[0].dtype, (variable_type) ) - new_variable.setncatts({k: variables[0].getncattr(k) for k in variables[0].ncattrs()}) - new_variable[:] = range(level_dimension_size, 0, -1) if levels is None else levels - new_variable.setncattr('positive', "down") - new_variable.setncattr('units', "hPa") - # if its variables with on isobaric level per variable - elif len(variables) == level_dimension_size: - new_variable = nc_file_out.createVariable(variable_type, variables[0].dtype, dimensions_4D) - new_variable.setncatts({k: variables[0].getncattr(k) for k in variables[0].ncattrs()}) - if 'vertically interpolated' in new_variable.getncattr('long_name'): - new_long_name = new_variable.getncattr('long_name').split('vertically interpolated')[0].strip() - elif 'interpolated' in new_variable.getncattr('long_name'): - new_long_name = new_variable.getncattr('long_name').split('interpolated')[0].strip() - elif '1000 hPa' in new_variable.getncattr('long_name'): - new_long_name = new_variable.getncattr('long_name').split('1000 hPa')[0].strip() - else: - new_long_name = new_variable.getncattr('long_name') - new_long_name += ' interpolated' - new_variable.setncattr('long_name', new_long_name) - - for i in range(level_dimension_size): - new_variable[:,i,:,:] = variables[i][:] - else: - # Create an empty list to store lowercase dimensions - lowercase_dimensions = [] - - # Iterate through each object in the tuple - for obj in variables[0].dimensions: - # Access the 'dimensions' attribute and convert to lowercase - lowercase_dimensions.append(obj.lower()) - # Convert the list of lowercase dimensions to a tuple - - lowercase_dimensions_tuple = tuple(lowercase_dimensions) - # variable_type in ('latitude', 'longitude', 'Time'): - new_variable = nc_file_out.createVariable(variable_type, variables[0].dtype, lowercase_dimensions_tuple) - new_variable.setncatts({k: variables[0].getncattr(k) for k in variables[0].ncattrs()}) - new_variable[:] = variables[0][:] - - nc_file_out.close() - nc_file_in.close() - - -if __name__ == "__main__": - import sys - - if len(sys.argv) != 4: - print(f"Usage: python {sys.argv[0]} ") - sys.exit(1) - - main(sys.argv[1], sys.argv[2], sys.argv[3]) diff --git a/scripts.pomerode/link_grib.csh b/scripts.pomerode/link_grib.csh deleted file mode 100755 index e087015..0000000 --- a/scripts.pomerode/link_grib.csh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/csh -f - -set alpha = ( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ) -set i1 = 1 -set i2 = 1 -set i3 = 1 - -if ( ( ${#argv} == 1 ) || ( ( ${#argv} == 2 ) && ( ${2} == "." ) ) ) then - - rm -f GRIBFILE.??? >& /dev/null - - foreach f ( ${1}* ) - - ln -sf ${f} GRIBFILE.$alpha[$i3]$alpha[$i2]$alpha[$i1] - @ i1 ++ - - if ( $i1 > 26 ) then - set i1 = 1 - @ i2 ++ - if ( $i2 > 26 ) then - set i2 = 1 - @ i3 ++ - if ( $i3 > 26 ) then - echo "RAN OUT OF GRIB FILE SUFFIXES!" - endif - endif - endif - - end -else if ( ${#argv} > 1 ) then - - rm -f GRIBFILE.??? >& /dev/null - - foreach f ( $* ) - - if ( $f != "." ) then - ln -sf ${f} GRIBFILE.$alpha[$i3]$alpha[$i2]$alpha[$i1] - @ i1 ++ - - if ( $i1 > 26 ) then - set i1 = 1 - @ i2 ++ - if ( $i2 > 26 ) then - set i2 = 1 - @ i3 ++ - if ( $i3 > 26 ) then - echo "RAN OUT OF GRIB FILE SUFFIXES!" - endif - endif - endif - endif - - end -else if ( ${#argv} == 0 ) then - echo " " - echo " " - echo " Please provide some GRIB data to link" - echo " usage: $0 path_to_grib_data/grib_data_root" - echo " " - echo " " -endif - diff --git a/scripts.pomerode/make_degrib.bash b/scripts.pomerode/make_degrib.bash deleted file mode 100755 index 1aba077..0000000 --- a/scripts.pomerode/make_degrib.bash +++ /dev/null @@ -1,188 +0,0 @@ -#!/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" - 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 "${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 -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 -OPERDIREXP=${OPERDIR}/${EXP} -BNDDIR=${OPERDIREXP}/0p25/brutos/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi:4:2}/${YYYYMMDDHHi:6:2}/${YYYYMMDDHHi:8:2} -GCCCIS=/dados/monan/MONAN_datain/CIs/${EXP} -#------------------------------------------------------- -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 do IO, -# busca no nosso dir /dados/monan/MONAN_datain/CIs, se nao existir tbm, aborta! -if [ ! -s ${BNDDIR}/gfs.t00z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ] -then - if [ ! -s ${GCCCIS}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi}/gfs.t00z.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}" - exit 1 - else - BNDDIR=${GCCCIS}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi} - fi -fi - -files_needed=("${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/Vtable.${EXP}" "${BNDDIR}/gfs.t00z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2") -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 - -ln -sf ${DATAIN}/fixed/x1.${RES}.static.nc ${SCRIPTS} -ln -sf ${DATAIN}/fixed/Vtable.${EXP} ${SCRIPTS}/Vtable -ln -sf ${EXECS}/ungrib.exe ${SCRIPTS} -cp -rf ${BNDDIR}/gfs.t00z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} - - - - -rm -f ${SCRIPTS}/degrib.bash -cat << EOF0 > ${SCRIPTS}/degrib.bash -#!/bin/bash -#SBATCH --job-name=${DEGRIB_jobname} -#SBATCH --nodes=${DEGRIB_nnodes} -#SBATCH --partition=${DEGRIB_QUEUE} -#SBATCH --gres=${DEGRIB_gres} -#SBATCH --ntasks=${DEGRIB_ncores} -#SBATCH --tasks-per-node=${DEGRIB_ncpn} # ic for benchmark -#SBATCH --time=${STATIC_walltime} -#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/debrib.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/debrib.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 -#ldd ungrib.exe - -cd ${SCRIPTS} -. setenv.bash - - -rm -f GRIBFILE.* namelist.wps - - -sed -e "s,#LABELI#,${start_date},g;s,#PREFIX#,GFS,g" \ - ${DATAIN}/namelists/namelist.wps.TEMPLATE > ./namelist.wps - -./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/gfs.t00z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 - - -date -time mpirun -np 1 ungrib.exe -date - - -grep "Successful completion of program ungrib.exe" ${SCRIPTS}/ungrib.log >& /dev/null - -if [ \$? -ne 0 ]; then - echo " BUMMER: Ungrib generation failed for some yet unknown reason." - echo " " - tail -10 ${SCRIPTS}/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 -f ${SCRIPTS}/ungrib.exe - rm -f ${SCRIPTS}/Vtable - rm -f ${SCRIPTS}/x1.${RES}.static.nc - rm -f ${SCRIPTS}/GRIBFILE.AAA - rm -f ${DATAIN}/${YYYYMMDDHHi}/gfs.t00z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 - - -echo "End of degrib Job" - - -EOF0 -chmod a+x ${SCRIPTS}/degrib.bash - -echo -e "${GREEN}==>${NC} Executing sbatch degrib.bash...\n" -cd ${SCRIPTS} -sbatch --wait ${SCRIPTS}/degrib.bash -mv ${SCRIPTS}/degrib.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs - - - -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/debrib.* .\n" - echo -e "${RED}==>${NC} Exiting script. \n" - exit -1 - fi -done - diff --git a/scripts.pomerode/make_initatmos.bash b/scripts.pomerode/make_initatmos.bash deleted file mode 100755 index 309eb1d..0000000 --- a/scripts.pomerode/make_initatmos.bash +++ /dev/null @@ -1,160 +0,0 @@ -#!/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" - 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 -GEODATA=${DATAIN}/WPS_GEOG -cores=${INITATMOS_ncores} -#------------------------------------------------------- -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 ] - then - cd ${DATAIN}/fixed - 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 -fi - - -files_needed=("${DATAIN}/namelists/namelist.init_atmosphere.TEMPLATE" "${DATAIN}/namelists/streams.init_atmosphere.TEMPLATE" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAOUT}/${YYYYMMDDHHi}/Pre/${EXP}:${start_date:0:13}" "${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,#GEODAT#,${GEODATA},g;s,#RES#,${RES},g" \ - ${DATAIN}/namelists/namelist.init_atmosphere.TEMPLATE > ${SCRIPTS}/namelist.init_atmosphere - -sed -e "s,#RES#,${RES},g" \ - ${DATAIN}/namelists/streams.init_atmosphere.TEMPLATE > ${SCRIPTS}/streams.init_atmosphere - - -ln -sf ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ${SCRIPTS} -ln -sf ${DATAIN}/fixed/x1.${RES}.static.nc ${SCRIPTS} -ln -sf ${DATAOUT}/${YYYYMMDDHHi}/Pre/${EXP}\:${start_date:0:13} ${SCRIPTS} -ln -sf ${EXECS}/init_atmosphere_model ${SCRIPTS} - - -rm -f ${SCRIPTS}/initatmos.bash -cat << EOF0 > ${SCRIPTS}/initatmos.bash -#!/bin/bash -#SBATCH --job-name=${INITATMOS_jobname} -#SBATCH --nodes=${INITATMOS_nnodes} # depends on how many boundary files are available -#SBATCH --partition=${INITATMOS_QUEUE} -#SBATCH --gres=${INITATMOS_gres} -#SBATCH --tasks-per-node=${INITATMOS_ncores} # only for benchmark -#SBATCH --time=${STATIC_walltime} -#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.e%j # File name for standard error output -#SBATCH --exclusive -##SBATCH --mem=500000 - -export executable=init_atmosphere_model - -ulimit -c unlimited -ulimit -v unlimited -ulimit -s unlimited - - -. $(pwd)/setenv.bash - -cd ${SCRIPTS} - - - -date -time mpirun -np \${SLURM_NTASKS} ./\${executable} -date - - -mv ${SCRIPTS}/log.init_atmosphere.0000.out ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/log.init_atmosphere.0000.x1.${RES}.init.nc.${YYYYMMDDHHi}.out -mv namelist.init_atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs -mv streams.init_atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs -mv ${SCRIPTS}/x1.${RES}.init.nc ${DATAOUT}/${YYYYMMDDHHi}/Pre - -chmod a+x ${DATAIN}/fixed//x1.${RES}.init.nc -rm -f ${SCRIPTS}/${EXP}\:${start_date:0:13} -rm -f ${SCRIPTS}/init_atmosphere_model -rm -f ${SCRIPTS}/x1.${RES}.graph.info.part.${cores} -rm -f ${SCRIPTS}/x1.${RES}.static.nc -rm -f ${SCRIPTS}/log.init_atmosphere.*.err - -EOF0 -chmod a+x ${SCRIPTS}/initatmos.bash - -echo -e "${GREEN}==>${NC} Executing sbatch initatmos.bash...\n" -cd ${SCRIPTS} -sbatch --wait ${SCRIPTS}/initatmos.bash -mv ${SCRIPTS}/initatmos.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs - -if [ ! -s ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ] -then - echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" - echo -e "${RED}==>${NC} Init Atmosphere phase fails! Check logs at ${DATAOUT}/logs/initatmos.* .\n" - echo -e "${RED}==>${NC} Exiting script. \n" - exit -1 -fi - diff --git a/scripts.pomerode/make_static.bash b/scripts.pomerode/make_static.bash deleted file mode 100755 index edcc486..0000000 --- a/scripts.pomerode/make_static.bash +++ /dev/null @@ -1,174 +0,0 @@ -#!/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" - 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-------------------------------------- -GEODATA=${DATAIN}/WPS_GEOG -cores=${STATIC_ncores} -#------------------------------------------------------- - - -if [ ! -s ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ] -then - if [ ! -s ${DATAIN}/fixed/x1.${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/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=("${EXECS}/init_atmosphere_model" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAIN}/fixed/x1.${RES}.grid.nc" "${DATAIN}/namelists/namelist.init_atmosphere.STATIC" "${DATAIN}/namelists/streams.init_atmosphere.STATIC") -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 - -ln -sf ${DATAIN}/fixed/*.TBL ${SCRIPTS} -ln -sf ${DATAIN}/fixed/*.GFS ${SCRIPTS} -ln -sf ${EXECS}/init_atmosphere_model ${SCRIPTS} -ln -sf ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ${SCRIPTS} -ln -sf ${DATAIN}/fixed/x1.${RES}.grid.nc ${SCRIPTS} - -sed -e "s,#GEODAT#,${GEODATA},g;s,#RES#,${RES},g" \ - ${DATAIN}/namelists/namelist.init_atmosphere.STATIC \ - > ${SCRIPTS}/namelist.init_atmosphere - -sed -e "s,#RES#,${RES},g" \ - ${DATAIN}/namelists/streams.init_atmosphere.STATIC \ - > ${SCRIPTS}/streams.init_atmosphere - - - -mkdir -p ${DATAOUT}/logs -rm -f ${SCRIPTS}/static.bash -cat << EOF0 > ${SCRIPTS}/static.bash -#!/bin/bash -#SBATCH --job-name=${STATIC_jobname} -#SBATCH --nodes=${STATIC_nnodes} -#SBATCH --ntasks=${STATIC_ncores} -#SBATCH --tasks-per-node=${STATIC_ncpn} -#SBATCH --partition=${STATIC_QUEUE} -#SBATCH --gres=${STATIC_gres} -#SBATCH --time=${STATIC_walltime} -#SBATCH --output=${DATAOUT}/logs/static.bash.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/logs/static.bash.e%j # File name for standard error output -#SBATCH --exclusive -##SBATCH --mem=500000 - - -executable=init_atmosphere_model - -ulimit -s unlimited -ulimit -c unlimited -ulimit -v unlimited - -. $(pwd)/setenv.bash - -cd ${SCRIPTS} - -date -time mpirun -np \${SLURM_NTASKS} ./\${executable} -date - -grep "Finished running" log.init_atmosphere.0000.out >& /dev/null -if [ \$? -ne 0 ]; then - echo " BUMMER: Static generation failed for some yet unknown reason." - echo " " - tail -10 ${STATICPATH}/log.init_atmosphere.0000.out - echo " " - exit 21 -fi - -echo " ####################################" -echo " ### Static completed - \$(date) ####" -echo " ####################################" -echo " " - -# -# clean up and remove links -# - -mv log.init_atmosphere.0000.out ${DATAOUT}/logs/log.init_atmosphere.0000.x1.${RES}.static.nc.out - - -EOF0 -chmod a+x ${SCRIPTS}/static.bash - - -echo -e "${GREEN}==>${NC} Executing sbatch static.bash...\n" -cd ${SCRIPTS} -sbatch --wait ${SCRIPTS}/static.bash -mv ${SCRIPTS}/static.bash ${DATAOUT}/logs/ - -if [ -s ${SCRIPTS}/x1.${RES}.static.nc ] -then - mv ${SCRIPTS}/x1.${RES}.static.nc ${DATAIN}/fixed -else - echo -e "${RED}==>${NC} File ${SCRIPTS}/x1.${RES}.static.nc was not created. \n" - exit -1 -fi - -find ${SCRIPTS} -maxdepth 1 -type l -exec rm -f {} \; -rm -f ${SCRIPTS}/log.init_atmosphere.* -rm -f ${SCRIPTS}/streams.init_atmosphere -rm -f ${SCRIPTS}/namelist.init_atmosphere - diff --git a/scripts.pomerode/requirements.txt b/scripts.pomerode/requirements.txt deleted file mode 100644 index 98aff53..0000000 --- a/scripts.pomerode/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -netCDF4==1.6.5 -numpy==1.26.4 diff --git a/scripts.pomerode/run_past2now.bash b/scripts.pomerode/run_past2now.bash deleted file mode 100755 index 302362c..0000000 --- a/scripts.pomerode/run_past2now.bash +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - - - -yyyymmddi=20241001 -yyyymmddf=20241007 -yyyymmdd=${yyyymmddi} - - -while [ ${yyyymmdd} -le ${yyyymmddf} ] -do - - echo "2.pre_processing.bash GFS 1024002 ${yyyymmdd}00 24" - - 2.pre_processing.bash GFS 1024002 ${yyyymmdd}00 24 - - yyyymmdd=$(date -u +%Y%m%d -d "${yyyymmdd} 1 day") -done diff --git a/scripts.pomerode/setenv.bash b/scripts.pomerode/setenv.bash deleted file mode 100755 index 6a6ff77..0000000 --- a/scripts.pomerode/setenv.bash +++ /dev/null @@ -1,187 +0,0 @@ -#!/bin/bash - -# Load modules: - -export MODULEPATH=/dados/monan/pub/modulefiles/monan:$MODULEPATH -module load monan_nvhpc-24.9 -module list - - -# Set environment variables and importants directories-------------------------------------------------- - - -# MONAN-suite install root directories: -# Put your directories: -export DIR_SCRIPTS=$(dirname $(dirname $(pwd))) -export DIR_DADOS=$(dirname $(dirname $(pwd))) -export MONANDIR=/dados/monan/marcelo.paiva/scripts_CD-CT/sources/MONAN-Model_feature/monan-631-GPU - -# Submiting variables: - -# PRE-Static phase: -export STATIC_QUEUE="pgpu" -export STATIC_gres="gpu:1" -export STATIC_ncores=32 -export STATIC_nnodes=1 -export STATIC_ncpn=32 -export STATIC_jobname="Pre.static" -export STATIC_walltime="02:00:00" - -# PRE-Degrib phase: -export DEGRIB_QUEUE="pgpu" -export DEGRIB_gres="gpu:1" -export DEGRIB_ncores=1 -export DEGRIB_nnodes=1 -export DEGRIB_ncpn=1 -export DEGRIB_jobname="Pre.degrib" -### export DEGRIB_walltime="00:30:00" not used yet - using STATIC_walltime - -# PRE-Init Atmosphere phase: -export INITATMOS_QUEUE="pgpu" -export INITATMOS_gres="gpu:1" -export INITATMOS_ncores=64 -export INITATMOS_nnodes=1 -### export INITATMOS_ncpn=1 not used yet - using INITATMOS_ncores -export INITATMOS_jobname="Pre.InitAtmos" -### export INITATMOS_walltime="01:00:00" not used yet - using STATIC_walltime - - -# Model phase: -export MODEL_QUEUE="pgpu" -export MODEL_gres="gpu:1" -export MODEL_ncores=128 -export MODEL_nnodes=1 -export MODEL_ncpn=128 -export MODEL_jobname="Model.MONAN" -export MODEL_walltime="2:00:00" - - -# Post phase: -export POST_QUEUE="pgpu" -### export POST_ncores=1 not used yet -export POST_nnodes=1 -export POST_ncpn=32 -export POST_jobname="Post.MONAN" -export POST_walltime="8:00:00" - - -# Products phase: -export PRODS_QUEUE="pgpu" -export PRODS_ncores=1 -export PRODS_nnodes=1 -export PRODS_ncpn=1 -export PRODS_jobname="Prods.MONAN" -export PRODS_walltime="8:00:00" - - -#----------------------------------------------------------------------- -# We discourage changing the variables below: - -# Others variables: -export OMP_NUM_THREADS=1 -#export OMPI_MCA_btl_openib_allow_ib=1 -#export OMPI_MCA_btl_openib_if_include="mlx5_0:1" -export PMIX_MCA_gds=hash -#export MPI_PARAMS="-iface ib0 -bind-to core -map-by core" -export MPI_PARAMS="-iface eno12399np0 -bind-to core -map-by core" -export OMPI_MCA_coll_hcoll_enable=0 - -# Libraries paths: -#export NETCDF=/mnt/beegfs/monan/libs/netcdf -#export PNETCDF=/mnt/beegfs/monan/libs/PnetCDF -export NETCDFDIR=${NETCDF} -export PNETCDFDIR=${PNETCDF} -export DIRDADOS=/dados/monan -export OPERDIR=/oper/dados/ioper/tempo - -# Colors: -export GREEN='\033[1;32m' # Green -export RED='\033[1;31m' # Red -export NC='\033[0m' # No Color -export BLUE='\033[01;34m' # Blue - - -# Functions: ====================================================================================================== - -how_many_nodes () { - nume=${1} - deno=${2} - num=$(echo "${nume}/${deno}" | bc -l) - how_many_nodes_int=$(echo "${num}/1" | bc) - dif=$(echo "scale=0; (${num}-${how_many_nodes_int})*100/1" | bc) - rest=$(echo "scale=0; (((${num}-${how_many_nodes_int})*${deno})+0.5)/1" | bc -l) - if [ ${dif} -eq 0 ]; then how_many_nodes_left=0; else how_many_nodes_left=1; fi - if [ ${how_many_nodes_int} -eq 0 ]; then how_many_nodes_int=1; how_many_nodes_left=0; rest=0; fi - how_many_nodes=$(echo "${how_many_nodes_int}+${how_many_nodes_left}" | bc ) - #echo "INT number of nodes needed: \${how_many_nodes_int} = ${how_many_nodes_int}" - #echo "number of nodes left: \${how_many_nodes_left} = ${how_many_nodes_left}" - echo "The number of nodes needed: \${how_many_nodes} = ${how_many_nodes}" - echo "" -} -#---------------------------------------------------------------------------------------------- - - - -clean_model_tmp_files () { - - echo "Removing all temporary files from last MODEL run trash." - - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/atmosphere_model - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/*TBL - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/*DBL - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/*DATA - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/x1.*.nc - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/x1.*.graph.info.part.* - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/Vtable.GFS - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/streams.atmosphere - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/stream_list.atmosphere.surface - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/stream_list.atmosphere.output - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/stream_list.atmosphere.diagnostics - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/namelist.atmosphere - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/MONAN_DIAG_* - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/log.atmosphere.* - echo "" - -} -#---------------------------------------------------------------------------------------------- - - -clean_post_tmp_files () { - - echo "Removing all temporary files from last POST run trash." - - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/dir.* - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/PostAtmos_*.sh - - echo "" - -} -#---------------------------------------------------------------------------------------------- - - - -clean_pre_tmp_files () { - - echo "Removing all temporary files from last PRE run trash." - - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/log.*.0000.out - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/x1.*.init.nc - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/GFS* - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/init_atmosphere_model - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/namelist* - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/streams.init_atmosphere - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/x1.*.graph.info.part.* - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/x1.*.static.nc - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/ungrib.exe - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/Vtable - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/*.log - - - echo "" - -} -#---------------------------------------------------------------------------------------------- - - - - diff --git a/scripts.pomerode/setenv_python.bash b/scripts.pomerode/setenv_python.bash deleted file mode 100644 index 3e95168..0000000 --- a/scripts.pomerode/setenv_python.bash +++ /dev/null @@ -1,17 +0,0 @@ -echo "loading module python ..." -#module load python-3.9.13-gcc-9.4.0-moxjnc6 - -echo "scripts folder setted=${SCRIPTS}" - -echo "creating python environment at ${SCRIPTS}/../.venv" -python3 -m venv ${SCRIPTS}/../.venv - -echo "activating python environment" -source ${SCRIPTS}/../.venv/bin/activate - -echo "Installing python libraries" -pip install --upgrade pip -pip install -r ${SCRIPTS}/requirements.txt - -export PYTHONPATH=${PYTHONPATH}:${SCRIPTS} -echo "exporting PYTHONPATH=${PYTHONPATH}" diff --git a/scripts.sdumont2/0.run_all_first_time.bash b/scripts.sdumont2/0.run_all_first_time.bash deleted file mode 100755 index ea1a1fa..0000000 --- a/scripts.sdumont2/0.run_all_first_time.bash +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash - - -#if [ $# -ne 5 ] -#then -# echo "" -# echo "Instructions: execute the command below" -# echo "" -# echo "${0} GitHubUserRepo EXP_NAME RESOLUTION LABELI FCST" -# echo "" -# echo "GitHubUserRepo :: GitHub link for your personal fork, eg: https://github.com/MYUSER/MONAN-Model.git" -# echo "EXP_NAME :: Forcing: GFS" -# 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} https://github.com/MYUSER/MONAN-Model.git 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:----------------------------------------------------- -github_link="https://github.com/monanadmin/MONAN-Model.git" -monan_branch=release/1.1.0 -convertmpas_branch= -EXP=GFS -RES=1024002 -YYYYMMDDHHi=2024042000 -FCST=240 -#---------------------------------------------------------------------- - - -# STEP 1: Installing and compiling the A-MONAN model and utility programs: -time 1.install_monan.bash ${github_link} ${monan_branch} - -# STEP 2: Executing the pre-processing fase. Preparing all CI/CC files needed: -time 2.pre_processing.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} - -# STEP 3: Executing the Model run: -time 3.run_model.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} - -# STEP 4: Executing the Post of Model run: -time 4.run_post.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} - -exit diff --git a/scripts.sdumont2/1.install_monan.bash b/scripts.sdumont2/1.install_monan.bash deleted file mode 100755 index b9fbe43..0000000 --- a/scripts.sdumont2/1.install_monan.bash +++ /dev/null @@ -1,289 +0,0 @@ -#!/bin/bash - -#-----------------------------------------------------------------------------# -# !SCRIPT: install_monan -# -# !DESCRIPTION: -# Script to install the MONAN model and convert_MPAS. -# -# Performs the following tasks: -# -# o Clone the Monan model github repository in a local directory -# o Make the script make-all.sh that compiles the Atmosphere Model and the Init Atmosphere Model -# o As alternative for advanced users, this script creates a simple compile script that just compile the Atmosphere Model -# o Clone the Convert_mpas tool from the monanadmin repository for convert the output model files in lat-lon grid. -# o Compile the convert_mpas -# -#-----------------------------------------------------------------------------# - -#Fixed parameters ------------------------------------------------------------# -github_link_CONVERT_MPAS="https://github.com/monanadmin/convert_mpas.git" -#-----------------------------------------------------------------------------# - -#Functions -------------------------------------------------------------------# -function checkout_system() { - local source_dir=$1 - local github_link=$2 - local tag_or_branch_name=$3 - if [ -d "${source_dir}" ]; then - echo -e "${GREEN}==>${NC} Source dir already exists, updating it ...\n" - else - echo -e "${GREEN}==>${NC} Cloning your fork repository...\n" - git clone ${github_link} ${source_dir} - if [ ! -d "${source_dir}" ]; then - echo -e "${RED}==>${NC} An error occurred while cloning your fork. Possible causes: wrong URL, user or password.\n" - exit -1 - fi - fi - - cd ${source_dir} - if git checkout "${tag_or_branch_name}" 2>/dev/null; then - git pull - echo -e "${GREEN}==>${NC} Successfully checked out and updated: ${BLUE}${tag_or_branch_name}" - else - echo -e "${RED}==>${NC} Failed to check out branch: ${BLUE}${tag_or_branch_name}" - echo -e "${RED}==>${NC} Please check if you have this branch. Exiting ..." - exit -1 - fi - git log -1 --name-only -} -#-----------------------------------------------------------------------------# - - -if [ $# -lt 1 ] -then - echo "" - echo "Instructions: execute the command below" - echo "" - echo "${0} [G] [M] [C]" - echo "" - echo "G :: MONAN GitHub link of your personal fork, eg: https://github.com/MYUSER/MONAN-Model.git" - echo "M :: MONAN tag or branch name of your personal fork. (will be used 'develop' if not informed)" - echo "C :: Convert_MPAS tag from ${github_link_CONVERT_MPAS} (will be used 'develop' if not informed)" - 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} -DATAOUTCRON=${DATAOUT}/cron; mkdir -p ${DATAOUTCRON} -SOURCES=${DIRHOMES}/sources; mkdir -p ${SOURCES} -EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} -#---------------------------------------------------------------------- - - -# Input variables:----------------------------------------------------- -github_link_MONAN=${1}; #github_link=https://github.com/monanadmin/MONAN-Model.git -tag_or_branch_name_MONAN=${2} -tag_or_branch_name_MONAN=${tag_or_branch_name_MONAN:="1.0.0"} -echo "MONAN branch name in use: ${tag_or_branch_name_MONAN}" - -tag_or_branch_name_CONVERT_MPAS=${3} -tag_or_branch_name_CONVERT_MPAS=${tag_or_branch_name_CONVERT_MPAS:="1.0.0"} -echo "convert_mpas branch name in use: ${tag_or_branch_name_CONVERT_MPAS}" -#---------------------------------------------------------------------- - - -# Local variables:----------------------------------------------------- -MONANDIR=${SOURCES}/MONAN-Model_${tag_or_branch_name_MONAN} -CONVERT_MPAS_DIR=${SOURCES}/convert_mpas_${tag_or_branch_name_CONVERT_MPAS} -$(sed -i "s;MONANDIR=.*$;MONANDIR=$MONANDIR;" setenv.bash) -#---------------------------------------------------------------------- - -checkout_system ${MONANDIR} ${github_link_MONAN} ${tag_or_branch_name_MONAN} -checkout_system ${CONVERT_MPAS_DIR} ${github_link_CONVERT_MPAS} ${tag_or_branch_name_CONVERT_MPAS} - -rm -rf $MONANDIR/default_inputs/ -rm -f $MONANDIR/stream_list.* $MONANDIR/streams.* $MONANDIR/namelist.* -rm -f $MONANDIR/make*.output.atmosphere $MONANDIR/make*.output.init_atmosphere $MONANDIR/make.sh $MONANDIR/make-all.sh - - -#CR: TODO: maybe later move this make script to main scripts directory. -echo "" -echo -e "${GREEN}==>${NC} Making compile script...\n" - -cd $MONANDIR - -cat << EOF > make-all.sh -#!/bin/bash -#Usage: make target CORE=[core] [options] -#Example targets: -# ifort -# gfortran -# xlf -# pgi -#Availabe Cores: -# atmosphere -# init_atmosphere -# landice -# ocean -# seaice -# sw -# test -#Available Options: -# DEBUG=true - builds debug version. Default is optimized version. -# USE_PAPI=true - builds version using PAPI for timers. Default is off. -# TAU=true - builds version using TAU hooks for profiling. Default is off. -# AUTOCLEAN=true - forces a clean of infrastructure prior to build new core. -# GEN_F90=true - Generates intermediate .f90 files through CPP, and builds with them. -# TIMER_LIB=opt - Selects the timer library interface to be used for profiling the model. Options are: -# TIMER_LIB=native - Uses native built-in timers in MPAS -# TIMER_LIB=gptl - Uses gptl for the timer interface instead of the native interface -# TIMER_LIB=tau - Uses TAU for the timer interface instead of the native interface -# OPENMP=true - builds and links with OpenMP flags. Default is to not use OpenMP. -# OPENACC=true - builds and links with OpenACC flags. Default is to not use OpenACC. -# USE_PIO2=true - links with the PIO 2 library. Default is to use the PIO 1.x library. -# PRECISION=single - builds with default single-precision real kind. Default is to use double-precision. -# SHAREDLIB=true - generate position-independent code suitable for use in a shared library. Default is false. - - -. ${SCRIPTS}/setenv.bash -rm -fr ${MONANDIR}/stream* ${MONANDIR}/namelist.* ${MONANDIR}/make_*output.atmosphere ${MONANDIR}/default_inputs -DATE_TIME_NOW=\$(date +"%Y%m%d%H%M%S") - -echo "NETCDF: $NETCDF" -echo "NETCDFF: $NETCDFF" -echo "PNETCDF: $PNETCDF" -echo "HDF5: $HDF5" -echo "PIO: $PIO" -echo "" -echo "" -echo "" - -MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.atmosphere" -make clean CORE=atmosphere -make -j 8 nvhpc CORE=atmosphere USE_PIO=true OPENACC=true PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} - -#CR: TODO: put verify here if executable was created ok -mv ${MONANDIR}/atmosphere_model ${EXECS} -mv ${MONANDIR}/build_tables ${EXECS} -cp ${MONANDIR}/VERSION.txt ${EXECS} -cp ${MONANDIR}/GF_ConvPar_nml ${SCRIPTS} -make clean CORE=atmosphere - -MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.init_atmosphere" -make clean CORE=init_atmosphere -make -j 8 nvhpc CORE=init_atmosphere USE_PIO=true OPENACC=true PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} - -mv ${MONANDIR}/init_atmosphere_model ${EXECS} -make clean CORE=init_atmosphere - - -if [ -s "${EXECS}/init_atmosphere_model" ] && [ -e "${EXECS}/atmosphere_model" ]; then - echo "" - echo -e "${GREEN}==>${NC} Files init_atmosphere_model and atmosphere_model generated Successfully in ${EXECS} !" - echo -else - echo -e "${RED}==>${NC} !!! An error occurred during build. Check output" - exit -1 -fi - -EOF -chmod a+x make-all.sh - - -cat << EOF > make.sh -#!/bin/bash -#Usage: make target CORE=[core] [options] -#Example targets: -# ifort -# gfortran -# xlf -# pgi -#Availabe Cores: -# atmosphere -# init_atmosphere -# landice -# ocean -# seaice -# sw -# test -#Available Options: -# DEBUG=true - builds debug version. Default is optimized version. -# USE_PAPI=true - builds version using PAPI for timers. Default is off. -# TAU=true - builds version using TAU hooks for profiling. Default is off. -# AUTOCLEAN=true - forces a clean of infrastructure prior to build new core. -# GEN_F90=true - Generates intermediate .f90 files through CPP, and builds with them. -# TIMER_LIB=opt - Selects the timer library interface to be used for profiling the model. Options are: -# TIMER_LIB=native - Uses native built-in timers in MPAS -# TIMER_LIB=gptl - Uses gptl for the timer interface instead of the native interface -# TIMER_LIB=tau - Uses TAU for the timer interface instead of the native interface -# OPENMP=true - builds and links with OpenMP flags. Default is to not use OpenMP. -# OPENACC=true - builds and links with OpenACC flags. Default is to not use OpenACC. -# USE_PIO2=true - links with the PIO 2 library. Default is to use the PIO 1.x library. -# PRECISION=single - builds with default single-precision real kind. Default is to use double-precision. -# SHAREDLIB=true - generate position-independent code suitable for use in a shared library. Default is false. - -. ${SCRIPTS}/setenv.bash -rm -fr ${MONANDIR}/stream* ${MONANDIR}/namelist.* ${MONANDIR}/make_*output.atmosphere ${MONANDIR}/default_inputs -DATE_TIME_NOW=\$(date +"%Y%m%d%H%M%S") - -sed -i "s/DMPAS_USE_MPI_F08/DMPAS_USE_MPI_H/" ${MONANDIR}/Makefile -sed -i "s,framework.*$,framework -I../../../../external/esmf_time_f90," ${MONANDIR}/src/core_atmosphere/physics/physics_noahmp/src/Makefile - -MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.atmosphere" -make clean CORE=atmosphere -make -j 8 nvhpc CORE=atmosphere USE_PIO=true OPENACC=true PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} - -#CR: TODO: put verify here if executable was created ok -mv ${MONANDIR}/atmosphere_model ${EXECS} -mv ${MONANDIR}/build_tables ${EXECS} -make clean CORE=atmosphere - -if [ -e "${EXECS}/atmosphere_model" ]; then - echo "" - echo -e "${GREEN}==>${NC} Files init_atmosphere_model and atmosphere_model generated Successfully in ${EXECS} !" - echo -else - echo -e "${RED}==>${NC} !!! An error occurred during build. Check output" - exit -1 -fi - -EOF -chmod a+x make.sh - - -echo "" -echo -e "${GREEN}==>${NC} Installing init_atmosphere_model and atmosphere_model...\n" -echo "" - -#CR: TODO: maybe at this point we should put our registry-file et all. -#CR: make-all.sh compile all for the first time -#CR: make.sh just compile the A-model -. ${MONANDIR}/make-all.sh - - -# install convert_mpas -echo "" -echo -e "${GREEN}==>${NC} Moduling environment for convert_mpas...\n" -#module load monan_nvhpc-24.9 -module list - -cd ${CONVERT_MPAS_DIR} -echo "" -echo -e "${GREEN}==>${NC} Installing convert_mpas...\n" -make clean -make 2>&1 | tee make.convert.output - -#CR: TODO: put verify here if executable was created ok -mv ${CONVERT_MPAS_DIR}/convert_mpas ${EXECS}/ - -if [ -s "${EXECS}/convert_mpas" ] ; then - echo "" - echo -e "${GREEN}==>${NC} File convert_mpas generated Sucessfully in ${CONVERT_MPAS_DIR} and copied to ${EXECS} !" - echo -else - echo -e "${RED}==>${NC} !!! An error occurred during convert_mpas build. Check output" - exit -1 -fi - diff --git a/scripts.sdumont2/2.pre_processing.bash b/scripts.sdumont2/2.pre_processing.bash deleted file mode 100755 index 485bed6..0000000 --- a/scripts.sdumont2/2.pre_processing.bash +++ /dev/null @@ -1,137 +0,0 @@ -#!/bin/bash -#-----------------------------------------------------------------------------# -# !SCRIPT: pre_processing -# -# !DESCRIPTION: -# Script to prepare boundary and initials conditions for MONAN model. -# -# Performs the following tasks: -# -# o Creates topography, land use and static variables -# o Ungrib GFS data -# o Interpolates to model the grid -# o Creates initial and boundary conditions -# o Creates scripts to run the model and post-processing (CR: to be modified to phase 3 and 4) -# o Integrates the MONAN model ((CR: to be modified to phase 3) -# o Post-processing (netcdf for grib2, latlon regrid, crop) (CR: to be modified to phase 4) -# -#-----------------------------------------------------------------------------# - -if [ $# -ne 4 -a $# -ne 1 ] -then - echo "" - echo "Instructions: execute the command below" - echo "" - echo "${0} EXP_NAME/OP RESOLUTION LABELI FCST" - echo "" - echo "EXP_NAME :: Forcing: GFS" - echo "OP :: clean: remove all temporary files createed in the last run." - 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)" - echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" - echo "FCST :: Forecast hours, e.g.: 24 or 36, etc." - echo "" - echo "24 hour forecast example for 24km:" - echo "${0} GFS 1024002 2024010100 24" - echo "48 hour forecast example for 120km:" - echo "${0} GFS 40962 2024010100 48" - echo "Cleannig temp files example:" - echo "${0} clean" - echo "" - - exit -fi - -# Set environment variables exports: -echo "" -echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" -. setenv.bash - -if [ $# -eq 1 ] -then - op=$(echo "${1}" | tr '[A-Z]' '[a-z]') - if [ ${op} = "clean" ] - then - clean_pre_tmp_files - exit - else - echo "Should type just \"clean\" for cleanning." - echo "${0} clean" - echo "" - exit - fi -fi - - -# 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-------------------------------------- -# Calculating CIs and final forecast dates in model namelist format: -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 -#------------------------------------------------------- - - -echo -e "${GREEN}==>${NC} Scripts_CD-CT last commit: \n" -git log -1 --name-only -git branch | head -1 - - -# Untar the fixed files: -# x1.${RES}.graph.info.part. files can be found in datain/fixed -# *.TBL files also can be found in datain/fixed -# x1.${RES}.grid.nc also can be found in datain/fixed - -echo -e "${GREEN}==>${NC} copying and linking fixed input data... \n" -mkdir -p ${DATAIN} -rsync -rv --chmod=ugo=rw ${DIRDADOS}/MONAN_datain/datain/fixed ${DATAIN} -rsync -rv --chmod=ugo=rwx ${DIRDADOS}/MONAN_datain/execs ${DIRHOMED} -ln -sf ${DIRDADOS}/MONAN_datain/datain/WPS_GEOG ${DATAIN} - -# 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} -else - echo -e "${GREEN}==>${NC} File x1.${RES}.static.nc already exist in ${DATAIN}/fixed.\n" -fi -#---------------------------------------------------------------------------------- - - - -# Degrib phase:--------------------------------------------------------------------- -echo -e "${GREEN}==>${NC} Submiting Degrib...\n" -time ./make_degrib.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} -#---------------------------------------------------------------------------------- - - - -# Init Atmosphere phase:------------------------------------------------------------ -echo -e "${GREEN}==>${NC} Submiting Init Atmosphere...\n" -time ./make_initatmos.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} -#---------------------------------------------------------------------------------- - - - - diff --git a/scripts.sdumont2/3.run_model.bash b/scripts.sdumont2/3.run_model.bash deleted file mode 100755 index f7568ec..0000000 --- a/scripts.sdumont2/3.run_model.bash +++ /dev/null @@ -1,247 +0,0 @@ -#!/bin/bash -#-----------------------------------------------------------------------------# -# !SCRIPT: run_model -# -# !DESCRIPTION: -# Script to run the MONAN model over the forecast horizon. -# -# Performs the following tasks: -# -# o VCheck all input files before -# o Creates the submition script -# o Submit the model -# o Veriffy all files generated -# -# -#-----------------------------------------------------------------------------# - -if [ $# -ne 4 -a $# -ne 1 ] -then - echo "" - echo "Instructions: execute the command below" - echo "" - echo "${0} [EXP_NAME/OP] RESOLUTION LABELI FCST" - echo "" - echo "EXP_NAME :: Forcing: GFS" - echo "OP :: clean: remove all temporary files createed in the last run." - 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 for 24km:" - echo "${0} GFS 1024002 2024010100 24" - echo "48 hour forecast example for 120km:" - echo "${0} GFS 40962 2024010100 48" - echo "Cleannig temp files example:" - echo "${0} clean" - echo "" - - exit -fi - -# Set environment variables exports: -echo "" -echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" -. setenv.bash - -if [ $# -eq 1 ] -then - op=$(echo "${1}" | tr '[A-Z]' '[a-z]') - if [ ${op} = "clean" ] - then - clean_model_tmp_files - exit - else - echo "Should type just \"clean\" for cleanning." - echo "${0} clean" - echo "" - exit - fi -fi - - -# 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=6 -#------------------------------------------------------- -mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Model/logs - - -# Local variables-------------------------------------- -start_date=${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}_${YYYYMMDDHHi:8:2}:00:00 -cores=${MODEL_ncores} -hhi=${YYYYMMDDHHi:8:2} -NLEV=55 -CONFIG_CONV_INTERVAL="00:30:00" - -# Calculating default parameters for different resolutions -if [ $RES -eq 1024002 ]; then #24Km - CONFIG_DT=150.0 - CONFIG_LEN_DISP=24000.0 - CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 2621442 ]; then #15Km - CONFIG_DT=90.0 - CONFIG_LEN_DISP=15000.0 - CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 40962 ]; then #120Km - CONFIG_DT=600.0 - CONFIG_LEN_DISP=120000.0 -fi -#------------------------------------------------------- - - -# Calculating final forecast dates in model namelist format: DD_HH:MM:SS -# using: start_date(yyyymmdd) + FCST(hh) : -ind=$(printf "%02d\n" $(echo "${FCST}/24" | bc)) -inh=$(printf "%02.0f\n" $(echo "((${FCST}/24)-${ind})*24" | bc -l)) -DD_HHMMSS_forecast=$(echo "${ind}_${inh}:00:00") - - -if [ ! -s ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ] -then - if [ ! -s ${DATAIN}/fixed/x1.${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/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 - -clean_model_tmp_files - -files_needed=("${DATAIN}/namelists/stream_list.atmosphere.output" ""${DATAIN}/namelists/stream_list.atmosphere.diagnostics "${DATAIN}/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") -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 - -ln -sf ${EXECS}/atmosphere_model ${SCRIPTS} -ln -sf ${DATAIN}/fixed/*TBL ${SCRIPTS} -ln -sf ${DATAIN}/fixed/*DBL ${SCRIPTS} -ln -sf ${DATAIN}/fixed/*DATA ${SCRIPTS} -ln -sf ${DATAIN}/fixed/x1.${RES}.static.nc ${SCRIPTS} -ln -sf ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ${SCRIPTS} -ln -sf ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ${SCRIPTS} -ln -sf ${DATAIN}/fixed/Vtable.GFS ${SCRIPTS} - - -if [ ${EXP} = "GFS" ] -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" \ - ${DATAIN}/namelists/namelist.atmosphere.TEMPLATE > ${SCRIPTS}/namelist.atmosphere - - sed -e "s,#RES#,${RES},g;s,#CIORIG#,${EXP},g;s,#LABELI#,${YYYYMMDDHHi},g;s,#NLEV#,${NLEV},g" \ - ${DATAIN}/namelists/streams.atmosphere.TEMPLATE > ${SCRIPTS}/streams.atmosphere -fi -cp -f ${DATAIN}/namelists/stream_list.atmosphere.output ${SCRIPTS} -cp -f ${DATAIN}/namelists/stream_list.atmosphere.diagnostics ${SCRIPTS} -cp -f ${DATAIN}/namelists/stream_list.atmosphere.surface ${SCRIPTS} - - - -rm -f ${SCRIPTS}/model.bash -cat << EOF0 > ${SCRIPTS}/model.bash -#!/bin/bash -#SBATCH --job-name=${MODEL_jobname} -#SBATCH --nodes=${MODEL_nnodes} -#SBATCH --ntasks=${MODEL_ncores} -#SBATCH --tasks-per-node=${MODEL_ncpn} -#SBATCH --partition=${MODEL_QUEUE} -#SBATCH --time=${MODEL_walltime} -#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.e%j # File name for standard error output -#SBATCH --exclusive -##SBATCH --mem=500000 - -export executable=atmosphere_model - -ulimit -c unlimited -ulimit -v unlimited -ulimit -s unlimited - -. $(pwd)/setenv.bash - -cd ${SCRIPTS} - -date -time mpirun -np \${SLURM_NTASKS} ./\${executable} -date - -# -# move dataout, clean up and remove files/links -# - -mv MONAN_DIAG_* ${DATAOUT}/${YYYYMMDDHHi}/Model -mv MONAN_HIST_* ${DATAOUT}/${YYYYMMDDHHi}/Model -cp ${EXECS}/VERSION.txt ${DATAOUT}/${YYYYMMDDHHi}/Model - -mv log.atmosphere.*.out ${DATAOUT}/${YYYYMMDDHHi}/Model/logs -mv log.atmosphere.*.err ${DATAOUT}/${YYYYMMDDHHi}/Model/logs -mv namelist.atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Model/logs -mv stream* ${DATAOUT}/${YYYYMMDDHHi}/Model/logs - -rm -f ${SCRIPTS}/atmosphere_model -rm -f ${SCRIPTS}/*TBL -rm -f ${SCRIPTS}/*.DBL -rm -f ${SCRIPTS}/*DATA -rm -f ${SCRIPTS}/x1.${RES}.static.nc -rm -f ${SCRIPTS}/x1.${RES}.graph.info.part.${cores} -rm -f ${SCRIPTS}/Vtable.GFS -rm -f ${SCRIPTS}/x1.${RES}.init.nc - - - -EOF0 -chmod a+x ${SCRIPTS}/model.bash - - -echo -e "${GREEN}==>${NC} Submitting MONAN atmosphere model and waiting for finish before exit... \n" -echo -e "${GREEN}==>${NC} Logs being generated at ${DATAOUT}/logs... \n" -echo -e "sbatch ${SCRIPTS}/model.bash" -sbatch --wait ${SCRIPTS}/model.bash -mv ${SCRIPTS}/model.bash ${DATAOUT}/${YYYYMMDDHHi}/Model/logs - - -output_interval=3 -for i in $(seq 0 ${output_interval} ${FCST}) -do - hh=${YYYYMMDDHHi:8:2} - currentdate=$(date -u +"%Y%m%d%H" -d "${YYYYMMDDHHi:0:8} ${hh}:00 ${i} hours") - file=MONAN_DIAG_G_MOD_GFS_${YYYYMMDDHHi}_${currentdate}.00.00.x${RES}L55.nc - - if [ ! -s ${DATAOUT}/${YYYYMMDDHHi}/Model/${file} ] - then - echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" - echo -e "${RED}==>${NC} [${0}] At least the file ${DATAOUT}/${YYYYMMDDHHi}/Model/${file} was not generated. \n" - exit -1 - fi - -done - - diff --git a/scripts.sdumont2/4.run_post.bash b/scripts.sdumont2/4.run_post.bash deleted file mode 100755 index 63b40d0..0000000 --- a/scripts.sdumont2/4.run_post.bash +++ /dev/null @@ -1,306 +0,0 @@ -#!/bin/bash -#-----------------------------------------------------------------------------# -# !SCRIPT: run_post -# -# !DESCRIPTION: -# Script to run the pos-processing of MONAN model over the forecast horizon. -# -# Performs the following tasks: -# -# o VCheck all input files before -# o Creates the submition script -# o Submit the post -# o Veriffy all files generated -# -# -#-----------------------------------------------------------------------------# - -if [ $# -ne 4 -a $# -ne 1 ] -then - echo "" - echo "Instructions: execute the command below" - echo "" - echo "${0} ]EXP_NAME/OP] RESOLUTION LABELI FCST" - echo "" - echo "EXP_NAME :: Forcing: GFS" - echo "OP :: clean: remove all temporary files createed in the last run." - 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 "${0} GFS 40962 2024010100 48" - echo "Cleannig temp files example:" - echo "${0} clean" - echo "" - - exit -fi - -# Set environment variables exports: -echo "" -echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" -. setenv.bash - -if [ $# -eq 1 ] -then - op=$(echo "${1}" | tr '[A-Z]' '[a-z]') - if [ ${op} = "clean" ] - then - clean_post_tmp_files - exit - else - echo "Should type just \"clean\" for cleanning." - echo "${0} clean" - echo "" - exit - fi -fi - - - -# Standart directories variables:--------------------------------------- -DIRHOMES=${DIR_SCRIPTS}/scripts_CD-CT; mkdir -p ${DIRHOMES} -DIRHOMED=${DIR_DADOS}/scripts_CD-CT; mkdir -p ${DIRHOMED} -export 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=2024042000 -FCST=${4}; #FCST=40 -#------------------------------------------------------- -mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Post/logs - - -# Local variables-------------------------------------- -START_DATE_YYYYMMDD="${YYYYMMDDHHi:0:4}-${YYYYMMDDHHi:4:2}-${YYYYMMDDHHi:6:2}" -START_HH="${YYYYMMDDHHi:8:2}" -maxpostpernode=20 # <------ qtde max de convert_mpas por no! -#------------------------------------------------------- - -# Calculating default parameters for different resolutions -if [ $RES -eq 1024002 ]; then #24Km - NLAT=720 #180/0.25 - NLON=1440 #360/0.25 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 2621442 ]; then #15Km - NLAT=1200 #180/0.15 - NLON=2400 #360/0.15 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -elif [ $RES -eq 40962 ]; then #120Km - #CR-TODO: verificar se precisa corrigir para esta resolucao tambem: - NLAT=181 - NLON=361 - STARTLAT=-90.5 - STARTLON=-0.5 - ENDLAT=90.5 - ENDLON=360.5 -fi -#------------------------------------------------------- - -clean_post_tmp_files - -files_needed=("${DATAIN}/namelists/include_fields.diag" "${DATAIN}/namelists/convert_mpas.nml" "${DATAIN}/namelists/target_domain.TEMPLATE" "${EXECS}/convert_mpas" "${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc") -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 - -# Captura quantos arquivos do modelo tiverem para serem pos-processados e -# quando nos serao necessarios para executar ${maxpostpernode} convert_mpas por no: -#nfiles=$(ls -l ${DATAOUT}/${YYYYMMDDHHi}/Model/MONAN*nc | wc -l) -# from streams.atmosphere.TEMPLATE in diagnostics the output_interval is 3 hours -output_interval=3 -#nfiles=FCST/output_interval + 1(time zero file) -nfiles=$(echo "$FCST/$output_interval + 1" | bc) -echo "${nfiles} post to submit." -echo "Max ${maxpostpernode} submits per nodes." -how_many_nodes ${nfiles} ${maxpostpernode} - -# Cria os diretorios e arquivos/links para cada saida do convert_mpas: -cd ${SCRIPTS} -for ii in $(seq 1 ${nfiles}) -do - i=$(printf "%03d" ${ii}) - mkdir -p ${SCRIPTS}/dir.${i} - - ln -sf ${DATAIN}/namelists/include_fields.diag ${SCRIPTS}/dir.${i}/include_fields.diag - ln -sf ${DATAIN}/namelists/convert_mpas.nml ${SCRIPTS}/dir.${i}/convert_mpas.nml - sed -e "s,#NLAT#,${NLAT},g;s,#NLON#,${NLON},g;s,#STARTLAT#,${STARTLAT},g;s,#ENDLAT#,${ENDLAT},g;s,#STARTLON#,${STARTLON},g;s,#ENDLON#,${ENDLON},g;" \ - ${DATAIN}/namelists/target_domain.TEMPLATE > ${SCRIPTS}/dir.${i}/target_domain - - rm -rf ${SCRIPTS}/dir.${i}/convert_mpas - ln -sf ${EXECS}/convert_mpas ${SCRIPTS}/dir.${i} - ln -sf ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ${SCRIPTS}/dir.${i} - - hh=${YYYYMMDDHHi:8:2} - currentdate=$(date -d "${YYYYMMDDHHi:0:8} ${hh}:00 $(echo "(${i}-1)*3" | bc) hours" +"%Y%m%d%H") - diag_name=MONAN_DIAG_G_MOD_${EXP}_${YYYYMMDDHHi}_${currentdate}.00.00.x${RES}L55.nc - #CR-TODO: verificar se o arq existe antes de fazer o link: - ln -sf ${DATAOUT}/${YYYYMMDDHHi}/Model/${diag_name} ${SCRIPTS}/dir.${i} -done - -cd ${SCRIPTS} -. ${SCRIPTS}/setenv_python.bash - -# Laco para criar os arquivos de submissao com os blocos de convertmpas para cada node: -node=1 -inicio=1 -fim=$((maxpostpernode <= nfiles ? maxpostpernode : nfiles)) -while [ ${inicio} -le ${nfiles} ] -do -cat > ${SCRIPTS}/PostAtmos_node.${node}.sh < convert_mpas.output & - echo "./convert_mpas x1.${RES}.init.nc ${DATAOUT}/${YYYYMMDDHHi}/Model/\${diag_name} > convert_mpas.output" - -done - -# necessario aguardar as rodadas em background -wait - -for ii in \$(seq ${inicio} ${fim}) -do - i=\$(printf "%03d" \${ii}) - cd ${SCRIPTS}/dir.\${i} - python ${SCRIPTS}/group_levels.py ${SCRIPTS}/dir.\${i} latlon.nc latlon_\${i}.nc > saida_python.txt & -done - -wait - -# unload the python's environment -deactivate - -for ii in \$(seq ${inicio} ${fim}) -do - i=\$(printf "%03d" \${ii}) - cd ${SCRIPTS}/dir.\${i} - rm -f ${DATAOUT}/${YYYYMMDDHHi}/Post/latlon_\${i}.nc - cp -f latlon_\${i}.nc ${DATAOUT}/${YYYYMMDDHHi}/Post/ & -done -wait - -EOSH - - chmod a+x ${SCRIPTS}/PostAtmos_node.${node}.sh - jobid[${node}]=$(sbatch --parsable ${SCRIPTS}/PostAtmos_node.${node}.sh) - echo "JobId node ${node} = ${jobid[${node}]} , convert_mpas ${inicio} to ${fim}" - - inicio=$((fim + 1)) - temp=$((fim + maxpostpernode)) - fim=$(( temp < nfiles ? temp : nfiles )) - node=$((node+1)) -done - -# Dependencias JobId: -dependency="afterok" -for job_id in "${jobid[@]}" -do - dependency="${dependency}:${job_id}" -done - - - - - -# Script principal para juntar os arquivos finais em um unico: -node=0 -cat > ${SCRIPTS}/PostAtmos_node.${node}.sh <\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=6 -#------------------------------------------------------- - - -# Local variables-------------------------------------- -yyyymmddi=${YYYYMMDDHHi:0:8} -hhi=${YYYYMMDDHHi:8:2} -#------------------------------------------------------- -mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Prods/logs - - -#for nh in $(seq 1 ${FCST}) -#do - nh=2 - yyyymmddhhf=$(date -u +"%Y%m%d%H" -d "${yyyymmddi} ${hhi}:00 ${nh} hours" ) - yyyymmddhhff=$(date -u +"%Y%m%d%H" -d "${yyyymmddi} ${hhi}:00 $((nh+1)) hours" ) - -rm -f ${DATAOUT}/${YYYYMMDDHHi}/Prods/MONAN_PREC_${EXP}_${YYYYMMDDHHi}_${yyyymmddhhff}.00.00.x${RES}L55.png -rm -f ${SCRIPTS}/prec.gs -cat << EOGS > ${SCRIPTS}/prec.gs -'reinit' -'set display color white' -'c' -'set gxout shaded' - -'sdfopen ${DATAOUT}/${YYYYMMDDHHi}/Post/MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_${yyyymmddhhf}.00.00.x${RES}L55.nc' -'sdfopen ${DATAOUT}/${YYYYMMDDHHi}/Post/MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_${yyyymmddhhff}.00.00.x${RES}L55.nc' -'set mpdset mres' -'set grads off' - -'set lon 276.25 339.5' -'set lat -55.75 14.25' - -'pr1=rainc.1+rainnc.1' -'pr25=rainc.2(t=1)+rainnc.2(t=1)' - -'set clevs 0.5 1 2 4 8 16 32 64 128' -'set ccols 0 14 11 5 13 10 7 12 2 6' - -'d pr25-pr1' -'set gxout contour' - -'cbar' -'draw title Previsao de Precipitacao \ MONAN: prod: 2024010100 valid: 2024010102' - -'set strsiz 0.15 0.15' -'draw string 7.8 0.3 (mm)' -'set strsiz 0.10 0.10' -'set string 1 l 5' -'draw string 0.1 0.1 MONAN v.0.4.0' - - -'printim ${DATAOUT}/${YYYYMMDDHHi}/Prods/MONAN_PREC_${EXP}_${YYYYMMDDHHi}_${yyyymmddhhff}.00.00.x${RES}L55.png' -'quit' - - - -EOGS - - -cat << EOF0 > ${SCRIPTS}/prods.bash -#!/bin/bash -#SBATCH --job-name=${PRODS_jobname} -#SBATCH --nodes=${PRODS_nnodes} -#SBATCH --ntasks=${PRODS_ncores} -#SBATCH --tasks-per-node=${PRODS_ncpn} -#SBATCH --partition=${PRODS_QUEUE} -#SBATCH --time=${PRODS_walltime} -#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Prods/logs/prods.bash.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Prods/logs/prods.bash.e%j # File name for standard error output -##SBATCH --exclusive -##SBATCH --mem=500000 - - -ulimit -c unlimited -ulimit -v unlimited -ulimit -s unlimited - -. $(pwd)/setenv.bash - -cd ${SCRIPTS} - -date -time grads -bpcx "run prec.gs" -date - - -EOF0 -chmod a+x ${SCRIPTS}/prods.bash - - -echo -e "${GREEN}==>${NC} Submitting MONAN atmosphere model Products and waiting for finish before exit... \n" -echo -e "${GREEN}==>${NC} Logs being generated at ${DATAOUT}/${YYYYMMDDHHi}/Prods/logs... \n" -echo -e "sbatch ${SCRIPTS}/prods.bash" -sbatch --wait ${SCRIPTS}/prods.bash -rm -f ${SCRIPTS}/prods.bash diff --git a/scripts.sdumont2/6.do_manut.bash b/scripts.sdumont2/6.do_manut.bash deleted file mode 100755 index 74fd325..0000000 --- a/scripts.sdumont2/6.do_manut.bash +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/bash -#-----------------------------------------------------------------------------# -# !SCRIPT: do_manut -# -# !DESCRIPTION: -# Script that maintains the MONAN model suite healthy. -# -# Performs the following tasks: -# -# o Feeds public areas (FTP) with important files (figures, outputs, -# clippings, etc.) -# o Removes temporary files with no value that are eventually generated -# during integration. -# o Performs maintenance on the area occupied by the model, moving old -# outputs to their destination area. -# -# -#-----------------------------------------------------------------------------# - - -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 " :: 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:---------------------- -DIRHOME=${DIRWORK}/../../MONAN; mkdir -p ${DIRHOME} -SCRIPTS=${DIRHOME}/scripts; mkdir -p ${SCRIPTS} -DATAIN=${DIRHOME}/datain; mkdir -p ${DATAIN} -DATAOUT=${DIRHOME}/dataout; mkdir -p ${DATAOUT} -SOURCES=${DIRHOME}/sources; mkdir -p ${SOURCES} -EXECS=${DIRHOME}/execs; mkdir -p ${EXECS} -#------------------------------------------------------- - - -# Input variables:-------------------------------------- -EXP=${1}; #EXP=GFS -RES=${2}; #RES=1024002 -YYYYMMDDHHi=${3}; #YYYYMMDDHHi=2024012000 -FCST=${4}; #FCST=24 -#------------------------------------------------------- -cp -f setenv.bash ${SCRIPTS} - - -# Local variables-------------------------------------- -#------------------------------------------------------- - - -# TODO compress all output files - -# +cat > Compress_exe.sh <> ${LOG_FILE} 2>&1 -# +tar -cf - diagnostics_${START_DATE_YYYYMMDD}.nc | xz -9 -c - > diagnostics_${START_DATE_YYYYMMDD}.tar.xz -# + -# +#echo -e "Compressing all /monanprd/diag*.nc files...\n" >> ${LOG_FILE} 2>&1 -# +#tar -cf - ${EXPDIR}/monanprd | xz -9 -c - > monanprd_${START_DATE_YYYYMMDD}.tar.xz -# + -# +exit 0 -# +EOF0 -# + -# +chmod +x Compress_exe.sh - - diff --git a/scripts.sdumont2/group_levels.py b/scripts.sdumont2/group_levels.py deleted file mode 100644 index 6acb4f1..0000000 --- a/scripts.sdumont2/group_levels.py +++ /dev/null @@ -1,107 +0,0 @@ - -import netCDF4 as nc -import numpy as np -import re -import sys - - -def main(data_dir, file_in, file_out, levels=[1000, 975, 950, 925, 900, 875, 850, 825, 700, 600, 500, 400, \ - 300, 250, 200, 150, 100, 70, 50, 30, 20, 15]): - """ - This function takes in the data directory, input file name, and output file name. - It reads the input NetCDF file, groups variables based on their names, - creates a new NetCDF file with dimensions and variables copied from the input file, - and saves the concatenated variables to the new NetCDF file. - - Parameters: - data_dir (str): The directory where the input and output NetCDF files are located. - file_in (str): The name of the input NetCDF file. - file_out (str): The name of the output NetCDF file. - - Returns: - None - """ - - nc_file_in = nc.Dataset(f'{data_dir}/{file_in}', 'r') - # Save the concatenated variables to a new NetCDF file - nc_file_out = nc.Dataset(f'{data_dir}/{file_out}', 'w') - - dimensions_4D = ('time', 'level', 'latitude', 'longitude') - # Group variables based on their names - variable_groups = {} - first_hpa_variable = '' - for name, variable in reversed(list(nc_file_in.variables.items())): # reverse to be consistent to levels - # if 'hPa' in name or name in dimensions_4D: - if 'hPa' in name: - variable_type = re.split('_.\d*hPa', name)[0] # Extract the variable type (e.g., '15hPa', '20hPa') - first_hpa_variable = variable_type if first_hpa_variable == '' else first_hpa_variable - else: - variable_type = name.lower() - if variable_type not in variable_groups: - variable_groups[variable_type] = [variable] - else: - variable_groups[variable_type].append(variable) - - level_dimension_size = len(variable_groups[first_hpa_variable]) - - # Copy dimensions Time, latitude, longitude - for dim_name, dim_type in nc_file_in.dimensions.items(): - if dim_name.lower() in ['time', 'latitude', 'longitude']: - nc_file_out.createDimension(dim_name.lower(), dim_type.size) - nc_file_out.createDimension('level', level_dimension_size) - - - # Copy variables - for variable_type, variables in variable_groups.items(): - print(f'Creating var {variable_type}') - if variable_type == 'level': - new_variable = nc_file_out.createVariable(variable_type, variables[0].dtype, (variable_type) ) - new_variable.setncatts({k: variables[0].getncattr(k) for k in variables[0].ncattrs()}) - new_variable[:] = range(level_dimension_size, 0, -1) if levels is None else levels - new_variable.setncattr('positive', "down") - new_variable.setncattr('units', "hPa") - # if its variables with on isobaric level per variable - elif len(variables) == level_dimension_size: - new_variable = nc_file_out.createVariable(variable_type, variables[0].dtype, dimensions_4D) - new_variable.setncatts({k: variables[0].getncattr(k) for k in variables[0].ncattrs()}) - if 'vertically interpolated' in new_variable.getncattr('long_name'): - new_long_name = new_variable.getncattr('long_name').split('vertically interpolated')[0].strip() - elif 'interpolated' in new_variable.getncattr('long_name'): - new_long_name = new_variable.getncattr('long_name').split('interpolated')[0].strip() - elif '1000 hPa' in new_variable.getncattr('long_name'): - new_long_name = new_variable.getncattr('long_name').split('1000 hPa')[0].strip() - else: - new_long_name = new_variable.getncattr('long_name') - new_long_name += ' interpolated' - new_variable.setncattr('long_name', new_long_name) - - for i in range(level_dimension_size): - new_variable[:,i,:,:] = variables[i][:] - else: - # Create an empty list to store lowercase dimensions - lowercase_dimensions = [] - - # Iterate through each object in the tuple - for obj in variables[0].dimensions: - # Access the 'dimensions' attribute and convert to lowercase - lowercase_dimensions.append(obj.lower()) - # Convert the list of lowercase dimensions to a tuple - - lowercase_dimensions_tuple = tuple(lowercase_dimensions) - # variable_type in ('latitude', 'longitude', 'Time'): - new_variable = nc_file_out.createVariable(variable_type, variables[0].dtype, lowercase_dimensions_tuple) - new_variable.setncatts({k: variables[0].getncattr(k) for k in variables[0].ncattrs()}) - new_variable[:] = variables[0][:] - - nc_file_out.close() - nc_file_in.close() - - -if __name__ == "__main__": - import sys - - if len(sys.argv) != 4: - print(f"Usage: python {sys.argv[0]} ") - sys.exit(1) - - main(sys.argv[1], sys.argv[2], sys.argv[3]) diff --git a/scripts.sdumont2/link_grib.csh b/scripts.sdumont2/link_grib.csh deleted file mode 100755 index e2212b1..0000000 --- a/scripts.sdumont2/link_grib.csh +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env -S csh -f - -set alpha = ( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ) -set i1 = 1 -set i2 = 1 -set i3 = 1 - -if ( ( ${#argv} == 1 ) || ( ( ${#argv} == 2 ) && ( ${2} == "." ) ) ) then - - rm -f GRIBFILE.??? >& /dev/null - - foreach f ( ${1}* ) - - ln -sf ${f} GRIBFILE.$alpha[$i3]$alpha[$i2]$alpha[$i1] - @ i1 ++ - - if ( $i1 > 26 ) then - set i1 = 1 - @ i2 ++ - if ( $i2 > 26 ) then - set i2 = 1 - @ i3 ++ - if ( $i3 > 26 ) then - echo "RAN OUT OF GRIB FILE SUFFIXES!" - endif - endif - endif - - end -else if ( ${#argv} > 1 ) then - - rm -f GRIBFILE.??? >& /dev/null - - foreach f ( $* ) - - if ( $f != "." ) then - ln -sf ${f} GRIBFILE.$alpha[$i3]$alpha[$i2]$alpha[$i1] - @ i1 ++ - - if ( $i1 > 26 ) then - set i1 = 1 - @ i2 ++ - if ( $i2 > 26 ) then - set i2 = 1 - @ i3 ++ - if ( $i3 > 26 ) then - echo "RAN OUT OF GRIB FILE SUFFIXES!" - endif - endif - endif - endif - - end -else if ( ${#argv} == 0 ) then - echo " " - echo " " - echo " Please provide some GRIB data to link" - echo " usage: $0 path_to_grib_data/grib_data_root" - echo " " - echo " " -endif - diff --git a/scripts.sdumont2/make_degrib.bash b/scripts.sdumont2/make_degrib.bash deleted file mode 100755 index 6aa368d..0000000 --- a/scripts.sdumont2/make_degrib.bash +++ /dev/null @@ -1,187 +0,0 @@ -#!/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" - 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 "${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 -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 -OPERDIREXP=${OPERDIR}/${EXP} -BNDDIR=${OPERDIREXP}/0p25/brutos/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi:4:2}/${YYYYMMDDHHi:6:2}/${YYYYMMDDHHi:8:2} -GCCCIS=/scratch/cptec/dados/CIs/${EXP} -#------------------------------------------------------- -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 do IO, -# busca no nosso dir /dados/monan/MONAN_datain/CIs, se nao existir tbm, aborta! -if [ ! -s ${BNDDIR}/gfs.t00z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ] -then - if [ ! -s ${GCCCIS}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi}/gfs.t00z.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}" - exit 1 - else - BNDDIR=${GCCCIS}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi} - fi -fi - -files_needed=("${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/Vtable.${EXP}" "${BNDDIR}/gfs.t00z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2") -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 - -ln -sf ${DATAIN}/fixed/x1.${RES}.static.nc ${SCRIPTS} -ln -sf ${DATAIN}/fixed/Vtable.${EXP} ${SCRIPTS}/Vtable -ln -sf ${EXECS}/ungrib.exe ${SCRIPTS} -cp -rf ${BNDDIR}/gfs.t00z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} - - - - -rm -f ${SCRIPTS}/degrib.bash -cat << EOF0 > ${SCRIPTS}/degrib.bash -#!/bin/bash -#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 -#ldd ungrib.exe - -cd ${SCRIPTS} -. setenv.bash - - -rm -f GRIBFILE.* namelist.wps - - -sed -e "s,#LABELI#,${start_date},g;s,#PREFIX#,GFS,g" \ - ${DATAIN}/namelists/namelist.wps.TEMPLATE > ./namelist.wps - -./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/gfs.t00z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 - - -date -time mpirun -np 1 ungrib.exe -date - - -grep "Successful completion of program ungrib.exe" ${SCRIPTS}/ungrib.log >& /dev/null - -if [ \$? -ne 0 ]; then - echo " BUMMER: Ungrib generation failed for some yet unknown reason." - echo " " - tail -10 ${SCRIPTS}/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 -f ${SCRIPTS}/ungrib.exe - rm -f ${SCRIPTS}/Vtable - rm -f ${SCRIPTS}/x1.${RES}.static.nc - rm -f ${SCRIPTS}/GRIBFILE.AAA - rm -f ${DATAIN}/${YYYYMMDDHHi}/gfs.t00z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 - - -echo "End of degrib Job" - - -EOF0 -chmod a+x ${SCRIPTS}/degrib.bash - -echo -e "${GREEN}==>${NC} Executing sbatch degrib.bash...\n" -cd ${SCRIPTS} -sbatch --wait ${SCRIPTS}/degrib.bash -mv ${SCRIPTS}/degrib.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs - - - -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 - diff --git a/scripts.sdumont2/make_initatmos.bash b/scripts.sdumont2/make_initatmos.bash deleted file mode 100755 index 29ed9aa..0000000 --- a/scripts.sdumont2/make_initatmos.bash +++ /dev/null @@ -1,159 +0,0 @@ -#!/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" - 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 -GEODATA=${DATAIN}/WPS_GEOG -cores=${INITATMOS_ncores} -#------------------------------------------------------- -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 ] - then - cd ${DATAIN}/fixed - 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 -fi - - -files_needed=("${DATAIN}/namelists/namelist.init_atmosphere.TEMPLATE" "${DATAIN}/namelists/streams.init_atmosphere.TEMPLATE" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAOUT}/${YYYYMMDDHHi}/Pre/${EXP}:${start_date:0:13}" "${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,#GEODAT#,${GEODATA},g;s,#RES#,${RES},g" \ - ${DATAIN}/namelists/namelist.init_atmosphere.TEMPLATE > ${SCRIPTS}/namelist.init_atmosphere - -sed -e "s,#RES#,${RES},g" \ - ${DATAIN}/namelists/streams.init_atmosphere.TEMPLATE > ${SCRIPTS}/streams.init_atmosphere - - -ln -sf ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ${SCRIPTS} -ln -sf ${DATAIN}/fixed/x1.${RES}.static.nc ${SCRIPTS} -ln -sf ${DATAOUT}/${YYYYMMDDHHi}/Pre/${EXP}\:${start_date:0:13} ${SCRIPTS} -ln -sf ${EXECS}/init_atmosphere_model ${SCRIPTS} - - -rm -f ${SCRIPTS}/initatmos.bash -cat << EOF0 > ${SCRIPTS}/initatmos.bash -#!/bin/bash -#SBATCH --job-name=${INITATMOS_jobname} -#SBATCH --nodes=${INITATMOS_nnodes} # depends on how many boundary files are available -#SBATCH --partition=${INITATMOS_QUEUE} -#SBATCH --tasks-per-node=${INITATMOS_ncores} # only for benchmark -#SBATCH --time=${STATIC_walltime} -#SBATCH --output=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.e%j # File name for standard error output -#SBATCH --exclusive -##SBATCH --mem=500000 - -export executable=init_atmosphere_model - -ulimit -c unlimited -ulimit -v unlimited -ulimit -s unlimited - - -. $(pwd)/setenv.bash - -cd ${SCRIPTS} - - - -date -time mpirun -np \${SLURM_NTASKS} ./\${executable} -date - - -mv ${SCRIPTS}/log.init_atmosphere.0000.out ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/log.init_atmosphere.0000.x1.${RES}.init.nc.${YYYYMMDDHHi}.out -mv namelist.init_atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs -mv streams.init_atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs -mv ${SCRIPTS}/x1.${RES}.init.nc ${DATAOUT}/${YYYYMMDDHHi}/Pre - -chmod a+x ${DATAIN}/fixed//x1.${RES}.init.nc -rm -f ${SCRIPTS}/${EXP}\:${start_date:0:13} -rm -f ${SCRIPTS}/init_atmosphere_model -rm -f ${SCRIPTS}/x1.${RES}.graph.info.part.${cores} -rm -f ${SCRIPTS}/x1.${RES}.static.nc -rm -f ${SCRIPTS}/log.init_atmosphere.*.err - -EOF0 -chmod a+x ${SCRIPTS}/initatmos.bash - -echo -e "${GREEN}==>${NC} Executing sbatch initatmos.bash...\n" -cd ${SCRIPTS} -sbatch --wait ${SCRIPTS}/initatmos.bash -mv ${SCRIPTS}/initatmos.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs - -if [ ! -s ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ] -then - echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" - echo -e "${RED}==>${NC} Init Atmosphere phase fails! Check logs at ${DATAOUT}/logs/initatmos.* .\n" - echo -e "${RED}==>${NC} Exiting script. \n" - exit -1 -fi - diff --git a/scripts.sdumont2/make_static.bash b/scripts.sdumont2/make_static.bash deleted file mode 100755 index 7b859e7..0000000 --- a/scripts.sdumont2/make_static.bash +++ /dev/null @@ -1,173 +0,0 @@ -#!/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" - 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-------------------------------------- -GEODATA=${DATAIN}/WPS_GEOG -cores=${STATIC_ncores} -#------------------------------------------------------- - - -if [ ! -s ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ] -then - if [ ! -s ${DATAIN}/fixed/x1.${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/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=("${EXECS}/init_atmosphere_model" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAIN}/fixed/x1.${RES}.grid.nc" "${DATAIN}/namelists/namelist.init_atmosphere.STATIC" "${DATAIN}/namelists/streams.init_atmosphere.STATIC") -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 - -ln -sf ${DATAIN}/fixed/*.TBL ${SCRIPTS} -ln -sf ${DATAIN}/fixed/*.GFS ${SCRIPTS} -ln -sf ${EXECS}/init_atmosphere_model ${SCRIPTS} -ln -sf ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ${SCRIPTS} -ln -sf ${DATAIN}/fixed/x1.${RES}.grid.nc ${SCRIPTS} - -sed -e "s,#GEODAT#,${GEODATA},g;s,#RES#,${RES},g" \ - ${DATAIN}/namelists/namelist.init_atmosphere.STATIC \ - > ${SCRIPTS}/namelist.init_atmosphere - -sed -e "s,#RES#,${RES},g" \ - ${DATAIN}/namelists/streams.init_atmosphere.STATIC \ - > ${SCRIPTS}/streams.init_atmosphere - - - -mkdir -p ${DATAOUT}/logs -rm -f ${SCRIPTS}/static.bash -cat << EOF0 > ${SCRIPTS}/static.bash -#!/bin/bash -#SBATCH --job-name=${STATIC_jobname} -#SBATCH --nodes=${STATIC_nnodes} -#SBATCH --ntasks=${STATIC_ncores} -#SBATCH --tasks-per-node=${STATIC_ncpn} -#SBATCH --partition=${STATIC_QUEUE} -#SBATCH --time=${STATIC_walltime} -#SBATCH --output=${DATAOUT}/logs/static.bash.o%j # File name for standard output -#SBATCH --error=${DATAOUT}/logs/static.bash.e%j # File name for standard error output -#SBATCH --exclusive -##SBATCH --mem=500000 - - -executable=init_atmosphere_model - -ulimit -s unlimited -ulimit -c unlimited -ulimit -v unlimited - -. $(pwd)/setenv.bash - -cd ${SCRIPTS} - -date -time mpirun -np \${SLURM_NTASKS} ./\${executable} -date - -grep "Finished running" log.init_atmosphere.0000.out >& /dev/null -if [ \$? -ne 0 ]; then - echo " BUMMER: Static generation failed for some yet unknown reason." - echo " " - tail -10 ${STATICPATH}/log.init_atmosphere.0000.out - echo " " - exit 21 -fi - -echo " ####################################" -echo " ### Static completed - \$(date) ####" -echo " ####################################" -echo " " - -# -# clean up and remove links -# - -mv log.init_atmosphere.0000.out ${DATAOUT}/logs/log.init_atmosphere.0000.x1.${RES}.static.nc.out - - -EOF0 -chmod a+x ${SCRIPTS}/static.bash - - -echo -e "${GREEN}==>${NC} Executing sbatch static.bash...\n" -cd ${SCRIPTS} -sbatch --wait ${SCRIPTS}/static.bash -mv ${SCRIPTS}/static.bash ${DATAOUT}/logs/ - -if [ -s ${SCRIPTS}/x1.${RES}.static.nc ] -then - mv ${SCRIPTS}/x1.${RES}.static.nc ${DATAIN}/fixed -else - echo -e "${RED}==>${NC} File ${SCRIPTS}/x1.${RES}.static.nc was not created. \n" - exit -1 -fi - -find ${SCRIPTS} -maxdepth 1 -type l -exec rm -f {} \; -rm -f ${SCRIPTS}/log.init_atmosphere.* -rm -f ${SCRIPTS}/streams.init_atmosphere -rm -f ${SCRIPTS}/namelist.init_atmosphere - diff --git a/scripts.sdumont2/requirements.txt b/scripts.sdumont2/requirements.txt deleted file mode 100644 index 98aff53..0000000 --- a/scripts.sdumont2/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -netCDF4==1.6.5 -numpy==1.26.4 diff --git a/scripts.sdumont2/run_past2now.bash b/scripts.sdumont2/run_past2now.bash deleted file mode 100755 index 302362c..0000000 --- a/scripts.sdumont2/run_past2now.bash +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - - - -yyyymmddi=20241001 -yyyymmddf=20241007 -yyyymmdd=${yyyymmddi} - - -while [ ${yyyymmdd} -le ${yyyymmddf} ] -do - - echo "2.pre_processing.bash GFS 1024002 ${yyyymmdd}00 24" - - 2.pre_processing.bash GFS 1024002 ${yyyymmdd}00 24 - - yyyymmdd=$(date -u +%Y%m%d -d "${yyyymmdd} 1 day") -done diff --git a/scripts.sdumont2/setenv.bash b/scripts.sdumont2/setenv.bash deleted file mode 100755 index b430e02..0000000 --- a/scripts.sdumont2/setenv.bash +++ /dev/null @@ -1,183 +0,0 @@ -#!/bin/bash - -# Load modules: - -module use /scratch/cptec/pub/modulefiles -module load monan/monan-nvhpc-24.9 -module list - - -# Set environment variables and importants directories-------------------------------------------------- - - -# MONAN-suite install root directories: -# Put your directories: -export DIR_SCRIPTS=$(dirname $(dirname $(pwd))) -export DIR_DADOS=$(dirname $(dirname $(pwd))) -export MONANDIR=/scratch/cptec/marcelo.ramos2/scripts_CD-CT/sources/MONAN-Model_feature/monan-631-GPU - -# Submiting variables: - -# PRE-Static phase: -export STATIC_QUEUE="lncc-h100" -export STATIC_ncores=32 -export STATIC_nnodes=1 -export STATIC_ncpn=32 -export STATIC_jobname="Pre.static" -export STATIC_walltime="02:00:00" - -# PRE-Degrib phase: -export DEGRIB_QUEUE="lncc-h100" -export DEGRIB_ncores=1 -export DEGRIB_nnodes=1 -export DEGRIB_ncpn=1 -export DEGRIB_jobname="Pre.degrib" -### export DEGRIB_walltime="00:30:00" not used yet - using STATIC_walltime - -# PRE-Init Atmosphere phase: -export INITATMOS_QUEUE="lncc-h100" -export INITATMOS_ncores=64 -export INITATMOS_nnodes=1 -### export INITATMOS_ncpn=1 not used yet - using INITATMOS_ncores -export INITATMOS_jobname="Pre.InitAtmos" -### export INITATMOS_walltime="01:00:00" not used yet - using STATIC_walltime - - -# Model phase: -export MODEL_QUEUE="lncc-h100" -export MODEL_ncores=192 -export MODEL_nnodes=2 -export MODEL_ncpn=96 -export MODEL_jobname="Model.MONAN" -export MODEL_walltime="2:00:00" - - -# Post phase: -export POST_QUEUE="lncc-h100" -### export POST_ncores=1 not used yet -export POST_nnodes=1 -export POST_ncpn=32 -export POST_jobname="Post.MONAN" -export POST_walltime="8:00:00" - - -# Products phase: -export PRODS_QUEUE="lncc-h100" -export PRODS_ncores=1 -export PRODS_nnodes=1 -export PRODS_ncpn=1 -export PRODS_jobname="Prods.MONAN" -export PRODS_walltime="8:00:00" - - -#----------------------------------------------------------------------- -# We discourage changing the variables below: - -# Others variables: -export OMP_NUM_THREADS=1 -export OMPI_MCA_btl_openib_allow_ib=1 -export OMPI_MCA_btl_openib_if_include="mlx5_0:1" -export PMIX_MCA_gds=hash -export MPI_PARAMS="-iface ib0 -bind-to core -map-by core" -#export MPI_PARAMS="-iface eno12399np0 -bind-to core -map-by core" -#export OMPI_MCA_coll_hcoll_enable=0 - -# Libraries paths: -#export NETCDF=/mnt/beegfs/monan/libs/netcdf -#export PNETCDF=/mnt/beegfs/monan/libs/PnetCDF -export NETCDFDIR=${NETCDF} -export PNETCDFDIR=${PNETCDF} -export DIRDADOS=/scratch/cptec/dados -export OPERDIR=/oper/dados/ioper/tempo - -# Colors: -export GREEN='\033[1;32m' # Green -export RED='\033[1;31m' # Red -export NC='\033[0m' # No Color -export BLUE='\033[01;34m' # Blue - - -# Functions: ====================================================================================================== - -how_many_nodes () { - nume=${1} - deno=${2} - num=$(echo "${nume}/${deno}" | bc -l) - how_many_nodes_int=$(echo "${num}/1" | bc) - dif=$(echo "scale=0; (${num}-${how_many_nodes_int})*100/1" | bc) - rest=$(echo "scale=0; (((${num}-${how_many_nodes_int})*${deno})+0.5)/1" | bc -l) - if [ ${dif} -eq 0 ]; then how_many_nodes_left=0; else how_many_nodes_left=1; fi - if [ ${how_many_nodes_int} -eq 0 ]; then how_many_nodes_int=1; how_many_nodes_left=0; rest=0; fi - how_many_nodes=$(echo "${how_many_nodes_int}+${how_many_nodes_left}" | bc ) - #echo "INT number of nodes needed: \${how_many_nodes_int} = ${how_many_nodes_int}" - #echo "number of nodes left: \${how_many_nodes_left} = ${how_many_nodes_left}" - echo "The number of nodes needed: \${how_many_nodes} = ${how_many_nodes}" - echo "" -} -#---------------------------------------------------------------------------------------------- - - - -clean_model_tmp_files () { - - echo "Removing all temporary files from last MODEL run trash." - - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/atmosphere_model - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/*TBL - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/*DBL - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/*DATA - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/x1.*.nc - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/x1.*.graph.info.part.* - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/Vtable.GFS - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/streams.atmosphere - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/stream_list.atmosphere.surface - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/stream_list.atmosphere.output - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/stream_list.atmosphere.diagnostics - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/namelist.atmosphere - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/MONAN_DIAG_* - rm -f ${DIR_SCRIPTS}/scripts_CD-CT/scripts/log.atmosphere.* - echo "" - -} -#---------------------------------------------------------------------------------------------- - - -clean_post_tmp_files () { - - echo "Removing all temporary files from last POST run trash." - - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/dir.* - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/PostAtmos_*.sh - - echo "" - -} -#---------------------------------------------------------------------------------------------- - - - -clean_pre_tmp_files () { - - echo "Removing all temporary files from last PRE run trash." - - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/log.*.0000.out - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/x1.*.init.nc - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/GFS* - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/init_atmosphere_model - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/namelist* - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/streams.init_atmosphere - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/x1.*.graph.info.part.* - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/x1.*.static.nc - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/ungrib.exe - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/Vtable - rm -fr ${DIR_SCRIPTS}/scripts_CD-CT/scripts/*.log - - - echo "" - -} -#---------------------------------------------------------------------------------------------- - - - - diff --git a/scripts.sdumont2/setenv_python.bash b/scripts.sdumont2/setenv_python.bash deleted file mode 100644 index 3e95168..0000000 --- a/scripts.sdumont2/setenv_python.bash +++ /dev/null @@ -1,17 +0,0 @@ -echo "loading module python ..." -#module load python-3.9.13-gcc-9.4.0-moxjnc6 - -echo "scripts folder setted=${SCRIPTS}" - -echo "creating python environment at ${SCRIPTS}/../.venv" -python3 -m venv ${SCRIPTS}/../.venv - -echo "activating python environment" -source ${SCRIPTS}/../.venv/bin/activate - -echo "Installing python libraries" -pip install --upgrade pip -pip install -r ${SCRIPTS}/requirements.txt - -export PYTHONPATH=${PYTHONPATH}:${SCRIPTS} -echo "exporting PYTHONPATH=${PYTHONPATH}" diff --git a/scripts.sdumont2/utils/install_libs_and_pio.bash b/scripts.sdumont2/utils/install_libs_and_pio.bash deleted file mode 100755 index f44da56..0000000 --- a/scripts.sdumont2/utils/install_libs_and_pio.bash +++ /dev/null @@ -1,352 +0,0 @@ -#! /bin/bash +x - -# conda deactivate - -. setenv_libs_and_pio.bash - -mkdir -p $YOUR_INSTALL_ROOT - -# -# Checking paths... -# -echo "event=$EDIR" -echo "hwloc=$HLDIR" -echo "zlib=$ZDIR" -echo "hdf5=$H5DIR" -echo "netcdf=$NFDIR" -echo "pnetcdf=$PNDIR" -echo "pio=$PIODIR" -echo "path=$PATH" - - -# -# Downloading all libs... -# - -echo "Downloading all libs, please wait and check all at the end!" - -mkdir -p $MY_LOCAL_DIR/src - -event_version=event-2.1.12 -echo " " -echo "Downloading event version $event_version ... please wait" -echo " " -cd $MY_LOCAL_DIR/src -wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz -tar xvfz libevent-2.1.12-stable.tar.gz -mv libevent-2.1.12-stable event_src - -hwloc_version=hwloc-2.5.0 -echo " " -echo "Downloading hwloc version $hwloc_version ... please wait" -echo " " -cd $MY_LOCAL_DIR/src -wget https://download.open-mpi.org/release/hwloc/v2.5/hwloc-2.5.0.tar.gz -tar xvfz hwloc-2.5.0.tar.gz -mv hwloc-2.5.0 hwloc_src - -zlib_version=v1.3.1 -echo " " -echo "Downloading zlib version $zlib_version ... please wait" -echo " " -cd $MY_LOCAL_DIR/src -git clone https://github.com/madler/zlib zlib_src -cd zlib_src -git checkout tags/$zlib_version -b branch_$zlib_version - -hdf5_version=hdf5-1_12_1 -echo " " -echo "Downloading hdf5 version $hdf5_version ... please wait" -echo " " -cd $MY_LOCAL_DIR/src -git clone https://github.com/HDFGroup/hdf5 hdf5_src -cd hdf5_src -git checkout tags/$hdf5_version -b branch_$hdf5_version - -netcdf_c_version=v4.8.1 -echo " " -echo "Downloading netcdf-c version $netcdf_c_version ... please wait" -echo " " -cd $MY_LOCAL_DIR/src -git clone http://github.com/Unidata/netcdf-c netcdf-c_src -cd netcdf-c_src -git checkout tags/${netcdf_c_version} -b branch_${netcdf_c_version} - -pnetcdf_version=checkpoint.1.12.2 -echo " " -echo "Downloading pnetcdf version $pnetcdf_version ... please wait" -echo " " -cd $MY_LOCAL_DIR/src -git clone https://github.com/Parallel-NetCDF/PnetCDF PnetCDF_src -cd PnetCDF_src -git checkout tags/$pnetcdf_version -b branch_$pnetcdf_version - -netcdff_version=v4.5.4 -echo " " -echo "Downloading netcdf-fortran version $netcdff_version ... please wait" -echo " " -cd $MY_LOCAL_DIR/src -git clone http://github.com/Unidata/netcdf-fortran netcdf-fortran_src -cd netcdf-fortran_src -git checkout tags/${netcdff_version} -b branch_${netcdff_version} - -#pio_version=pio1_7_1 -#pio_version=pio1_9_23 -pio_version=pio2_5_4 -echo " " -echo "Downloading pio version $pio_version ... please wait" -echo " " -cd $MY_LOCAL_DIR/src -wget https://github.com/NCAR/ParallelIO/releases/download/pio2_5_4/pio-2.5.4.tar.gz -tar xvfz pio-2.5.4.tar.gz -#git clone https://github.com/NCAR/ParallelIO pio_src -#cd pio_src/pio -#git checkout tags/$pio_version -b branch_$pio_version - -wps_version=v4.5 -echo " " -echo "Downloading ungrib version $wps_version ... please wait" -echo " " -cd $MY_LOCAL_DIR/src -git clone https://github.com/wrf-model/WPS wps_src -cd wps_src -git checkout tags/$wps_version -b branch_$wps_version - - -cd $MY_LOCAL_DIR - - -# -# Installing libs... -# - - - -# -# EVENT -# - -echo " " -echo "Installing event version $event_version ... please wait" -echo " " -rm -rf $YOUR_INSTALL_ROOT/event_src -cp -r $MY_LOCAL_DIR/src/event_src $YOUR_INSTALL_ROOT -cd $YOUR_INSTALL_ROOT/event_src -mkdir -p ${EDIR} -./configure --prefix=${EDIR} -make -make install -cd $MY_LOCAL_DIR - -# -# HWLOC -# - -echo " " -echo "Installing hwloc version $hwloc_version ... please wait" -echo " " -rm -rf $YOUR_INSTALL_ROOT/hwloc_src -cp -r $MY_LOCAL_DIR/src/hwloc_src $YOUR_INSTALL_ROOT -cd $YOUR_INSTALL_ROOT/hwloc_src -mkdir -p ${HLDIR} -./configure --prefix=${HLDIR} -make check -make install -cd $MY_LOCAL_DIR - - -# -# ZLIB -# - -echo " " -echo "Installing zlib version $zlib_version ... please wait" -echo " " -rm -rf $YOUR_INSTALL_ROOT/zlib_src -cp -r $MY_LOCAL_DIR/src/zlib_src $YOUR_INSTALL_ROOT -cd $YOUR_INSTALL_ROOT/zlib_src -mkdir -p ${ZDIR} -./configure --prefix=${ZDIR} -make check -make install -cd $MY_LOCAL_DIR - - -# -# HDF5 -# - -echo " " -echo "Installing hdf5 version $hdf5_version ... please wait" -echo " " -rm -rf $YOUR_INSTALL_ROOT/hdf5_src -cp -r $MY_LOCAL_DIR/src/hdf5_src $YOUR_INSTALL_ROOT -cd $YOUR_INSTALL_ROOT/hdf5_src -mkdir -p ${H5DIR} -./configure --enable-parallel --enable-fortran --prefix=${H5DIR} --with-zlib=${ZDIR} -make -make install -cd $MY_LOCAL_DIR - - -# -# NETCDF-C -# - -echo " " -echo "Installing netcdf-c version $netcdf_c_version ... please wait" -echo " " -rm -rf $YOUR_INSTALL_ROOT/netcdf-c_src -cp -r $MY_LOCAL_DIR/src/netcdf-c_src $YOUR_INSTALL_ROOT -cd $YOUR_INSTALL_ROOT/netcdf-c_src -mkdir ${NFDIR} -CPPFLAGS="-I${H5DIR}/include -I$ZDIR/include" -LDFLAGS="-L${H5DIR}/lib -L$ZDIR/lib" -./configure --prefix=${NFDIR} --enable-netcdf4 --disable-hdf5 --disable-shared -make -make check -make install -cd $MY_LOCAL_DIR - - -# -# PNETCDF -# - -export LD_LIBRARY_PATH=${H5DIR}/lib:$ZDIR/lib:$NFDIR/lib:$HLDIR/lib:$EDIR/lib:${LD_LIBRARY_PATH} -#export LIBS="-lhwloc -levent_core -levent_pthreads" - -echo "ld_library_path=$LD_LIBRARY_PATH" -#echo "libs=$LIBS" - -echo " " -echo "Installing pnetcdf version $pnetcdf_version ... please wait" -echo " " -rm -rf $YOUR_INSTALL_ROOT/PnetCDF_src -cp -r $MY_LOCAL_DIR/src/PnetCDF_src $YOUR_INSTALL_ROOT -cd $YOUR_INSTALL_ROOT/PnetCDF_src -autoreconf -i -mkdir $PNDIR -#FC=/opt/ohpc/pub/mpi/openmpi4-gnu9/4.1.1/bin/mpif90 -#CC=/opt/ohpc/pub/mpi/openmpi4-gnu9/4.1.1/bin/mpicc -#CXX=/opt/ohpc/pub/mpi/openmpi4-gnu9/4.1.1/bin/mpicxx -#./configure --prefix=$PNDIR \ -# MPICC=mpicc MPICXX=mpicxx \ -# MPIF77=mpif77 MPIF90=mpif90 \ -# CC=gcc CXX=g++ F77=gfortran FC=gfortran -FC=mpif90 -CC=mpicc -CXX=mpicxx -./configure --prefix=$PNDIR -make -j8 -make install -cd $MY_LOCAL_DIR -# -# -# -# NETCDF-FORTRAN -# - -FC=mpif90 -CC=mpicc -#export CC=/opt/ohpc/pub/mpi/openmpi4-gnu9/4.1.1/bin/mpicc -#export FC=/opt/ohpc/pub/mpi/openmpi4-gnu9/4.1.1/bin/mpif90 -export CPPFLAGS="-I$H5DIR/include -I$ZDIR/include -I$NFDIR/include" -export LDFLAGS="-L$H5DIR/lib -L$ZDIR/lib -L$NFDIR/lib" -export LD_LIBRARY_PATH=${H5DIR}/lib:$ZDIR/lib:$NFDIR/lib:${LD_LIBRARY_PATH} -export LIBS="-lnetcdf -lhdf5_hl -lhdf5 -lz" - -echo "cc=$CC" -echo "fc=$FC" -echo "cppflags=$CPPFLAGS" -echo "ldflags=$LDFLAGS" -echo "ld_library_path=$LD_LIBRARY_PATH" -echo "libs=$LIBS" - -echo " " -echo "Installing netcdf-fortran version $netcdff_version ... please wait" -echo " " -rm -rf $YOUR_INSTALL_ROOT/netcdf-fortran_src -cp -r $MY_LOCAL_DIR/src/netcdf-fortran_src $YOUR_INSTALL_ROOT -cd $YOUR_INSTALL_ROOT/netcdf-fortran_src -./configure --disable-shared --prefix=${NCDIR} -make -make install -cd $MY_LOCAL_DIR - - -# -# PIO -# - -#export CC=/opt/ohpc/pub/mpi/openmpi4-gnu9/4.1.1/bin/mpicc -#export FC=/opt/ohpc/pub/mpi/openmpi4-gnu9/4.1.1/bin/mpif90 -#export CPPFLAGS="-I$PNDIR/include -I$NCDIR/include -I$NFDIR/include" -#export LDFLAGS="-L$PNDIR/lib -L$NCDIR/lib" -#export CFLAGS='-g -Wall' -#export CPPFLAGS="-I$H5DIR/include -I$ZDIR/include -I$NFDIR/include -I$PNDIR/include" -#export LDFLAGS="-L$H5DIR/lib -L$ZDIR/lib -L$NFDIR/lib -L$PNDIR/lib" -#export LD_LIBRARY_PATH=${H5DIR}/lib:$ZDIR/lib:$NFDIR/lib:$PNDIR/lib:${LD_LIBRARY_PATH} -#export LIBS="-lpnetcdf -lnetcdf -lhdf5_hl -lhdf5 -lz" -#export PNETCDF_PATH=$PNDIR -#export NETCDF_PATH=$NFDIR - -#export CPPFLAGS="-I/opt/mpi/openmpi/4.1.6.15.1/fortran-gnu/include -I/opt/mpi/openmpi/4.1.6.15.1include" -#export LDFLAGS="-L/opt/mpi/openmpi/4.1.6.15.1/fortran-gnu/lib -L/opt/mpi/openmpi/4.1.6.15.1/lib" -#export LD_LIBRAY_PATH=/opt/mpi/openmpi/4.1.6.15.1/fortran-gnu/lib:/opt/mpi/openmpi/4.1.6.15.1/lib:${LD_LIBRARY_PATH} - -FC=mpif90 -CC=mpicc - -echo " " -echo "Installing pio version $pio_version ... please wait" -echo " " -#autoreconf -i -#./configure --prefix=${PIODIR} --enable-fortran -#./configure --prefix=${PIODIR} -#./configure --prefix=${PIODIR} --enable-pnetcdf --enable-netcdf4 -#rm -rf $MY_LOCAL_DIR/lib/pio_src $PIODIR -#cp -r $MY_LOCAL_DIR/src/pio_src $MY_LOCAL_DIR/lib -#cd pio_src/pio -#rm -rf $MY_LOCAL_DIR/lib/pio-2.5.4.tar.gz $MY_LOCAL_DIR/lib/pio-2.5.4 $PIODIR -rm -rf $YOUR_INSTALL_ROOT/pio-2.5.4 $PIODIR -cp -r $MY_LOCAL_DIR/src/pio-2.5.4 $YOUR_INSTALL_ROOT -cd $YOUR_INSTALL_ROOT/pio-2.5.4 -mkdir -p ${PIODIR} -#./configure --prefix=${PIODIR} --enable-fortran -cmake -DCMAKE_INSTALL_PREFIX=$PIODIR -Wno-dev -DCMAKE_C_COMPILER=mpicc -DCMAKE_Fortran_COMPILER=mpif90 -D NetCDF_C_PATH=$NCDIR -D NetCDF_Fortran_PATH=$NFDIR -D PnetCDF_PATH=$PNDIR -D PIO_ENABLE_EXAMPLES=OFF . -make check -make install -cd $MY_LOCAL_DIR - - -# -# WPS -# - -export NETCDF=$NFDIR -echo "NETCDF=$NETCDF" -#./configure --nowrf - -echo " " -echo "Installing ungrib version $wps_version ... please wait" -echo " " -rm -rf $YOUR_INSTALL_ROOT/wps_src -cp -r $MY_LOCAL_DIR/src/wps_src $YOUR_INSTALL_ROOT -cd $YOUR_INSTALL_ROOT/wps_src -./configure --build-grib2-libs --nowrf -#./compile ungrib -#module load general/anaconda3/2024.10 -#source activate $HOME/conda-env/test-tf -#conda install conda-forge::tcsh -#ln -s /scratch/cptec/eduardo.khamis/conda-env/test-tf/bin/tcsh /scratch/cptec/eduardo.khamis/bin -tcsh ./compile ungrib -cd $MY_LOCAL_DIR - - - -# -# Moving/Copying libs... -# - -# Nothing here yet diff --git a/scripts.sdumont2/utils/install_ungrib.bash b/scripts.sdumont2/utils/install_ungrib.bash deleted file mode 100755 index 392dd09..0000000 --- a/scripts.sdumont2/utils/install_ungrib.bash +++ /dev/null @@ -1,81 +0,0 @@ -#! /bin/bash +x - -#module load general/anaconda3/2024.10 -#conda create --prefix $HOME/conda-env/test-tf python=3.12 -#source activate $HOME/conda-env/test-tf -#conda install conda-forge::tcsh -#ln -s /scratch/cptec/eduardo.khamis/conda-env/test-tf/bin/tcsh /scratch/cptec/eduardo.khamis/bin -#exit - -module purge -module load openmpi/gnu/4.1.6.15.1 -#module use /scratch/cptec/nvidia/x86_64/hpc_sdk/modulefiles/ -#module load nvhpc/23.1 -module list - -workdir=/scratch/cptec -#version=v0.23.1 -#spackdir=${workdir}/spack/${version} -#source ${spackdir}/share/spack/setup-env.sh -# -#export SPACK_USER_CONFIG_PATH=${workdir}/.spack/${version} -# -#export NETCDF=$(spack location -i netcdf-fortran) -#export PNETCDF=$(spack location -i parallel-netcdf) - -export NETCDF=/scratch/cptec/eduardo.khamis/libs_openmpi.ok/netcdf -export PNETCDF=/scratch/cptec/eduardo.khamis/libs_openmpi.ok/PnetCDF - -export PATH=${PATH}:$NETCDF/lib -export PATH=${PATH}:$NETCDF/include -export PATH=${PATH}:$PNETCDF/lib -export PATH=${PATH}:$PNETCDF/include - -export LD_LIBRARY_PATH=$NETCDF/lib:$PNETCDF/lib:$LD_LIBRARY_PATH - - -export MY_LOCAL_DIR=$(pwd) -export YOUR_INSTALL_ROOT=${workdir}/eduardo.khamis/ungrib - -export FC=mpif90 -export CC=mpicc -export CXX=mpicxx - -mkdir -p $MY_LOCAL_DIR/src -mkdir -p $YOUR_INSTALL_ROOT - -# -# WPS -# - -wps_version=v4.5 - -echo " " -echo "Downloading ungrib version $wps_version ... please wait" -echo " " - -#cd $MY_LOCAL_DIR/src -#rm -rf wps_src -#git clone https://github.com/wrf-model/WPS wps_src -#cd wps_src -#git checkout tags/$wps_version -b branch_$wps_version - -echo " " -echo "Installing ungrib version $wps_version ... please wait" -echo " " - -echo "netcdf=$NETCDF" -echo "path=$PATH" - -rm -rf $YOUR_INSTALL_ROOT/wps_src -cp -r $MY_LOCAL_DIR/src/wps_src $YOUR_INSTALL_ROOT -cd $YOUR_INSTALL_ROOT/wps_src -# escolher opcao 1 - gnu serial -./configure --build-grib2-libs --nowrf -#./configure --nowrf --build-grib2-libs -#./configure --nowrf -tcsh ./compile ungrib -cp -f $YOUR_INSTALL_ROOT/wps_src/ungrib/src/ungrib.exe $YOUR_INSTALL_ROOT -cd $MY_LOCAL_DIR - - diff --git a/scripts.sdumont2/utils/setenv_libs_and_pio.bash b/scripts.sdumont2/utils/setenv_libs_and_pio.bash deleted file mode 100644 index 1e75526..0000000 --- a/scripts.sdumont2/utils/setenv_libs_and_pio.bash +++ /dev/null @@ -1,39 +0,0 @@ -#! /bin/bash -x - -module purge -#module load ohpc -#module load cmake/3.21.3 -#module load cmake-3.24.2-gcc-9.4.0-s7wmakm -module load openmpi/gnu/4.1.6.15.1 -module list - -export MY_LOCAL_DIR=$(pwd) -export YOUR_INSTALL_ROOT=/scratch/cptec/eduardo.khamis/libs_openmpi - -export EDIR=${YOUR_INSTALL_ROOT}/event -export HLDIR=${YOUR_INSTALL_ROOT}/hwloc -export ZDIR=${YOUR_INSTALL_ROOT}/zlib -export H5DIR=${YOUR_INSTALL_ROOT}/hdf5 -export NFDIR=${YOUR_INSTALL_ROOT}/netcdf -export NCDIR=${NFDIR} -export PNDIR=${YOUR_INSTALL_ROOT}/PnetCDF -export PIODIR=${YOUR_INSTALL_ROOT}/pio - -export PATH=${PATH}:$EDIR/lib -export PATH=${PATH}:$EDIR/include -export PATH=${PATH}:$HLDIR/lib -export PATH=${PATH}:$HLDIR/include -export PATH=${PATH}:$ZDIR/lib -export PATH=${PATH}:$ZDIR/include -export PATH=${PATH}:$H5DIR/lib -export PATH=${PATH}:$H5DIR/include -export PATH=${PATH}:$NFDIR/bin -export PATH=${PATH}:$NFDIR/lib -export PATH=${PATH}:$NFDIR/include -export PATH=${PATH}:$PNDIR/lib -export PATH=${PATH}:$PNDIR/include -export PATH=${PATH}:$PIODIR/lib -export PATH=${PATH}:$PIODIR/include -export PATH=${PATH}:/usr/lib64/ - -ulimit -s unlimited diff --git a/scripts/0.run_all.bash b/scripts/0.run_all.bash index 9937124..f33cf3c 100755 --- a/scripts/0.run_all.bash +++ b/scripts/0.run_all.bash @@ -27,7 +27,7 @@ echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" # Standart directories variables:--------------------------------------- -DIRHOMES=$(dirname "$(pwd)"); mkdir -p ${DIRHOMES} +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} @@ -37,30 +37,29 @@ EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} #---------------------------------------------------------------------- - # Input variables:----------------------------------------------------- github_link="https://github.com/monanadmin/MONAN-Model.git" -monan_branch=1.4.2-rc +monan_branch=1.4.3-rc convertmpas_branch=1.2.0 -EXP=GFS -RES=1024002 -YYYYMMDDHHi=2024010100 -FCST=3 +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 #---------------------------------------------------------------------- - # STEP 1: Installing and compiling the A-MONAN model and utility programs: -#time ${SCRIPTS}/1.install_monan.bash ${github_link} ${monan_branch} ${convertmpas_branch} +time ${SCRIPTS}/1.install_monan.bash ${github_link} ${monan_branch} ${convertmpas_branch} #exit # STEP 2: Executing the pre-processing fase. Preparing all CI/CC files needed: -#time ${SCRIPTS}/2.pre_processing.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} +time ${SCRIPTS}/2.pre_processing.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} #exit # STEP 3: Executing the Model run: -#time ${SCRIPTS}/3.run_model.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} +time ${SCRIPTS}/3.run_model.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} #exit # STEP 4: Executing the Post of Model run: time ${SCRIPTS}/4.run_post.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} -exit +#exit diff --git a/scripts/1.install_monan.bash b/scripts/1.install_monan.bash index b96d65b..fb1fc61 100755 --- a/scripts/1.install_monan.bash +++ b/scripts/1.install_monan.bash @@ -1,4 +1,5 @@ #!/bin/bash +umask 022 #-----------------------------------------------------------------------------# # !SCRIPT: install_monan @@ -45,7 +46,7 @@ function checkout_system() { echo -e "${RED}==>${NC} Please check if you have this branch. Exiting ..." exit -1 fi - git log -1 --name-only + git log | head -1 } #-----------------------------------------------------------------------------# @@ -69,13 +70,12 @@ fi echo "" echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" . setenv.bash - echo "" echo "---- Installing the Model ----" echo "" # Standart directories variables:--------------------------------------- -DIRHOMES=$(dirname "$(pwd)"); mkdir -p ${DIRHOMES} +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} @@ -88,11 +88,11 @@ EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} # Input variables:----------------------------------------------------- github_link_MONAN=${1}; #github_link=https://github.com/monanadmin/MONAN-Model.git tag_or_branch_name_MONAN=${2} -tag_or_branch_name_MONAN=${tag_or_branch_name_MONAN:="release/1.3.1-rc"} +tag_or_branch_name_MONAN=${tag_or_branch_name_MONAN:="1.4.3-rc"} echo "MONAN branch name in use: ${tag_or_branch_name_MONAN}" tag_or_branch_name_CONVERT_MPAS=${3} -tag_or_branch_name_CONVERT_MPAS=${tag_or_branch_name_CONVERT_MPAS:="1.1.0"} +tag_or_branch_name_CONVERT_MPAS=${tag_or_branch_name_CONVERT_MPAS:="1.2.0"} echo "convert_mpas branch name in use: ${tag_or_branch_name_CONVERT_MPAS}" #---------------------------------------------------------------------- @@ -100,7 +100,13 @@ echo "convert_mpas branch name in use: ${tag_or_branch_name_CONVERT_MPAS}" # Local variables:----------------------------------------------------- MONANDIR=${SOURCES}/MONAN-Model_${tag_or_branch_name_MONAN} CONVERT_MPAS_DIR=${SOURCES}/convert_mpas_${tag_or_branch_name_CONVERT_MPAS} + +#$(sed -i "s;DIR_SCRIPTS=.*$;DIR_SCRIPTS=$(dirname $(dirname $(pwd)));" setenv.bash) +#$(sed -i "s;DIR_DADOS=.*$;DIR_DADOS=$(dirname $(dirname $(pwd)));" setenv.bash) $(sed -i "s;MONANDIR=.*$;MONANDIR=$MONANDIR;" setenv.bash) +chmod 755 ${SCRIPTS}/setenv.bash +. ${SCRIPTS}/setenv.bash + #---------------------------------------------------------------------- #===================================================================================== @@ -160,7 +166,6 @@ echo "" echo -e "${GREEN}==>${NC} Making compile script...\n" cd $MONANDIR - cat << EOF > make-all.sh #!/bin/bash #Usage: make target CORE=[core] [options] @@ -169,6 +174,7 @@ cat << EOF > make-all.sh # gfortran # xlf # pgi +# intel-xd2000 :: cptec/inpe ian xd2000 #Availabe Cores: # atmosphere # init_atmosphere @@ -193,22 +199,27 @@ cat << EOF > make-all.sh # PRECISION=single - builds with default single-precision real kind. Default is to use double-precision. # SHAREDLIB=true - generate position-independent code suitable for use in a shared library. Default is false. - +cd ${SCRIPTS} . ${SCRIPTS}/setenv.bash +cd $MONANDIR + rm -rf $MONANDIR/default_inputs/ $MONANDIR/src/core_atmosphere/physics/physics_wrf/files rm -f $MONANDIR/stream_list.* $MONANDIR/streams.* $MONANDIR/namelist.* rm -f $MONANDIR/make*.output.atmosphere $MONANDIR/make*.output.init_atmosphere rm -fr $MONANDIR/src/core_atmosphere/inc $MONANDIR/src/core_init_atmosphere/inc DATE_TIME_NOW=\$(date +"%Y%m%d%H%M%S") -export NETCDF=${NETCDFDIR} -export PNETCDF=${PNETCDFDIR} +export NETCDF=\${NETCDFDIR} +export PNETCDF=\${PNETCDFDIR} # PIO is not necessary for version 8.* If PIO is empty, MPAS Will use SMIOL +#export PIO=\${PIODIR} export PIO= MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.atmosphere" + make clean CORE=atmosphere -make -j 8 gfortran 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=false PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} + #CR: TODO: put verify here if executable was created ok mv ${MONANDIR}/atmosphere_model ${EXECS} @@ -218,8 +229,10 @@ cp ${MONANDIR}/GF_ConvPar_nml ${SCRIPTS} make clean CORE=atmosphere MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.init_atmosphere" + make clean CORE=init_atmosphere -make -j 8 gfortran 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=false PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} + mv ${MONANDIR}/init_atmosphere_model ${EXECS} make clean CORE=init_atmosphere @@ -240,24 +253,18 @@ chmod a+x make-all.sh echo "" echo -e "${GREEN}==>${NC} Installing init_atmosphere_model and atmosphere_model...\n" echo "" - . ${MONANDIR}/make-all.sh +if [ "$HOSTNAME" == "ian" ]; then +# echo "hostname=$HOSTNAME" + export PATH=$NETCDF/bin:$PATH +fi # install convert_mpas echo "" echo -e "${GREEN}==>${NC} Moduling environment for convert_mpas...\n" -module purge -module load gnu9/9.4.0 -module load ohpc -module load phdf5 -module load netcdf -module load netcdf-fortran -module list cd ${CONVERT_MPAS_DIR} -echo "" -echo -e "${GREEN}==>${NC} Installing convert_mpas...\n" make clean make 2>&1 | tee make.convert.output diff --git a/scripts/2.pre_processing.bash b/scripts/2.pre_processing.bash index e0a37a2..ad04764 100755 --- a/scripts/2.pre_processing.bash +++ b/scripts/2.pre_processing.bash @@ -1,4 +1,5 @@ #!/bin/bash +umask 022 #-----------------------------------------------------------------------------# # !SCRIPT: pre_processing # @@ -24,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)" @@ -45,13 +46,14 @@ echo "" echo -e "\033[1;32m==>\033[0m Moduling environment for MONAN model...\n" . setenv.bash + echo "" echo "---- Pre Processing ----" echo "" -# Standart directories variables:--------------------------------------- -DIRHOMES=$(dirname "$(pwd)"); mkdir -p ${DIRHOMES} +# 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} DATAIN=${DIRHOMED}/datain; mkdir -p ${DATAIN} @@ -78,47 +80,76 @@ 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 -1 --name-only git log | head -1 -case "${SYSTEM_KEY}" in - SLURM_egeon) - echo -e "${GREEN}==>${NC} copying and linking fixed input data... \n" - mkdir -p ${DATAIN} - rsync -rv --chmod=ugo=rw ${DIRDADOS}/MONAN_datain/datain/fixed ${DATAIN} - rsync -rv --chmod=ugo=rwx ${DIRDADOS}/MONAN_datain/execs ${DIRHOMED} - ln -sf ${DIRDADOS}/MONAN_datain/datain/WPS_GEOG ${DATAIN} - ;; -esac - - +if [ ! -d ${DATAIN}/fixed ] +then + echo -e "${GREEN}==>${NC} copying and linking fixed input data ${SYSTEM_KEYC}... \n" + mkdir -p ${DATAIN} + rsync -rv --chmod=ugo=rw ${DIRDADOS}/MONAN_datain/datain/fixed ${DATAIN} + rsync -rv --chmod=ugo=rwx ${DIRDADOS}/MONAN_datain/execs ${DIRHOMED} + 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 +#---------------------------------------------------------------------------------- diff --git a/scripts/3.run_model.bash b/scripts/3.run_model.bash index 7e9ddde..a527d03 100755 --- a/scripts/3.run_model.bash +++ b/scripts/3.run_model.bash @@ -1,4 +1,5 @@ #!/bin/bash +umask 022 #-----------------------------------------------------------------------------# # !SCRIPT: run_model # @@ -7,10 +8,10 @@ # # 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 # # #-----------------------------------------------------------------------------# @@ -22,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." @@ -47,7 +48,7 @@ echo "" # Standart directories variables:--------------------------------------- -DIRHOMES=$(dirname "$(pwd)"); mkdir -p ${DIRHOMES} +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} @@ -88,21 +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 -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_LEN_DISP=10000.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" +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) : @@ -118,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}" ] @@ -147,68 +187,84 @@ 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} cp -f ${SCRIPTS}/namelists/stream_list.atmosphere.diagnostics${VARTABLE} ${DIRRUN}/stream_list.atmosphere.diagnostics cp -f ${SCRIPTS}/namelists/stream_list.atmosphere.surface ${DIRRUN} +cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} +chmod 755 ${DIRRUN} -cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} rm -f ${DIRRUN}/model.bash if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] then sed -e "s,#JOBNAME#,${MODEL_jobname},g; s,#NNODES#,${MODEL_nnodes},g; + s,#NCPUS#,${MODEL_ncpus},g; s,#NTASKS#,${MODEL_ncores},g; s,#NTASKSPNODE#,${MODEL_ncpn},g; + s,#NTHREADS#,${MODEL_nthreads},g; s,#PARTITION#,${MODEL_QUEUE},g; s,#WALLTIME#,${MODEL_walltime},g; - s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.o%j,g; - s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.e%j,g" \ + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.e,g" \ ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/model.bash else echo "#!/bin/bash " > ${DIRRUN}/model.bash fi cat << EOF0 >> ${DIRRUN}/model.bash + export executable=atmosphere_model ulimit -c unlimited ulimit -v unlimited ulimit -s unlimited -. $(pwd)/setenv.bash - cd ${DIRRUN} +. ${SCRIPTS}/setenv.bash date -time mpirun -np ${MODEL_ncores} ./\${executable} +beg_secs=\`date +"%s"\` + +if [ "$HOSTNAME" = "egeon" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" + time mpirun -np ${MODEL_ncores} ./\${executable} +else + echo "-- PBS_JOBID: \$PBS_JOBID" + time mpirun --ppn ${MODEL_ncpn} -np ${MODEL_ncores} --depth=${MODEL_nthreads} --cpu-bind depth ./\${executable} +fi + date +end_secs=\`date +"%s"\` + +let wallsecs=\$end_secs-\$beg_secs +echo "MONAN time taken by run in seconds is " \$wallsecs # # move dataout, clean up and remove files/links # mv MONAN_DIAG_* ${DATAOUT}/${YYYYMMDDHHi}/Model -mv MONAN_HIST_* ${DATAOUT}/${YYYYMMDDHHi}/Model cp -f ${EXECS}/MONAN-VERSION.txt ${DATAOUT}/${YYYYMMDDHHi}/Model cp -f ${EXECS}/MONAN-VERSION.txt ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/ cp -f ${DIRHOMES}/VERSION.txt ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/SCRIPTSCDCT-VERSION.txt cp -f ${MONANDIR}/README.md ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/ -mv log.atmosphere.*.out ${DATAOUT}/${YYYYMMDDHHi}/Model/logs -mv log.atmosphere.*.err ${DATAOUT}/${YYYYMMDDHHi}/Model/logs +mv log.atmosphere.* ${DATAOUT}/${YYYYMMDDHHi}/Model/logs mv namelist.atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Model/logs mv stream* ${DATAOUT}/${YYYYMMDDHHi}/Model/logs EOF0 @@ -223,11 +279,13 @@ case "${SCHEDULER_SYSTEM}" in cd ${DIRRUN} sbatch --wait ${DIRRUN}/model.bash ;; -# PBS) -# echo "Rodando em PBS" -# cd ${DIRRUN} -# # comandos qsub, qstat, etc. -# ;; + PBS) + echo -e "${GREEN}==>${NC} Submitting MONAN atmosphere model and waiting for finish before exit... \n" + echo -e "${GREEN}==>${NC} Logs being generated at ${DATAOUT}/logs... \n" + echo -e "${GREEN}==>${NC} qsub model.bash...\n" + cd ${DIRRUN} + qsub -W block=true ${DIRRUN}/model.bash + ;; # GENERIC) # echo "Nenhum gerenciador detectado" # cd ${DIRRUN} @@ -245,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 @@ -256,4 +314,10 @@ do done +JOBID=$(sed -n '5p' ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.o | awk '{print $3}' | sed "s/.pbs-ha//g") +mv ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.o ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.o.${JOBID} +mv ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.e ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.e.${JOBID} +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.o.${JOBID} +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.e.${JOBID} + rm -fr ${DIRRUN} diff --git a/scripts/4.run_post.bash b/scripts/4.run_post.bash index 94961b6..4bca3aa 100755 --- a/scripts/4.run_post.bash +++ b/scripts/4.run_post.bash @@ -1,4 +1,5 @@ #!/bin/bash +umask 022 #-----------------------------------------------------------------------------# # !SCRIPT: run_post # @@ -22,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." @@ -82,39 +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 1024002 ]; then #24Km +# 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" == "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" == "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" == "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 40962 ]; then #120Km - NLAT=150 #180/1.2 - NLON=300 #360/1.2 +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" == "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 5898242 ]; then #10Km - NLAT=1801 #180/0.10 (+1) - NLON=3601 #360/0.10 (+1) +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 #------------------------------------------------------- @@ -130,6 +196,7 @@ do fi done + # Captura quantos arquivos do modelo tiverem para serem pos-processados e # quando nos serao necessarios para executar ${maxpostpernode} convert_mpas por no: #nfiles=$(ls -l ${DATAOUT}/${YYYYMMDDHHi}/Model/MONAN*nc | wc -l) @@ -143,7 +210,7 @@ how_many_nodes ${nfiles} ${maxpostpernode} # Cria os diretorios e arquivos/links para cada saida do convert_mpas: cd ${DIRRUN} -cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} + for ii in $(seq 1 ${nfiles}) do i=$(printf "%04d" ${ii}) @@ -159,7 +226,12 @@ do done cd ${DIRRUN} +chmod -R 755 ${DIRRUN}/* +# Laco para criar os arquivos de submissao com os blocos de convertmpas para cada node: +echo "scheduler system = " ${SCHEDULER_SYSTEM} +echo "system key = " ${SYSTEM_KEY} +echo "" # Laco para criar os arquivos de submissao com os blocos de convertmpas para cada node: node=1 inicio=1 @@ -167,17 +239,19 @@ fim=$((maxpostpernode <= nfiles ? maxpostpernode : nfiles)) while [ ${inicio} -le ${nfiles} ] do rm -f ${DIRRUN}/PostAtmos_node.${node}.sh - + if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] then - sed -e "s/#JOBNAME#/MO.Pos${node}/g; - s/#NNODES#/1/g; - /#NTASKS#/d; - /#NTASKSPNODE#/d; - s/#PARTITION#/${POST_QUEUE}/g; - s/#WALLTIME#/${POST_walltime}/g; - s|#OUTPUTJOB#|${DATAOUT}/${YYYYMMDDHHi}/Post/logs/PostAtmos_node.${node}.o%j|g; - s|#ERRORJOB#|${DATAOUT}/${YYYYMMDDHHi}/Post/logs/PostAtmos_node.${node}.e%j|g" \ + sed -e "s,#JOBNAME#,MO.Pos${node},g; + s,#NNODES#,${POST_nnodes},g; + s,#NCPUS#,${POST_ncpus},g; + s,#NTASKS#,${POST_ncores},g; + s,#NTASKSPNODE#,${POST_ncpn},g; + s,#NTHREADS#,${POST_nthreads},g; + s,#PARTITION#,${POST_QUEUE},g; + s,#WALLTIME#,${POST_walltime},g; + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Post/logs/PostAtmos_node.${node}.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Post/logs/PostAtmos_node.${node}.e,g" \ ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > \ ${DIRRUN}/PostAtmos_node.${node}.sh else @@ -186,7 +260,11 @@ do cat << EOSH >> ${DIRRUN}/PostAtmos_node.${node}.sh -. ${DIRRUN}/setenv.bash +cd ${DIRRUN} +. ${SCRIPTS}/setenv.bash +echo "-- PBS_JOBID: \$PBS_JOBID" + +chmod 755 ${DIRRUN}/* echo "Executing posts ${inicio} to ${fim} in node Node ${node}." @@ -205,11 +283,13 @@ do i=\$(printf "%04d" \${ii}) echo "Executing post \${i}" cd ${DIRRUN}/dir.\${i} - + 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/* time ./convert_mpas x1.${RES}.init.nc ${DATAOUT}/${YYYYMMDDHHi}/Model/\${diag_name} > convert_mpas.output & echo "./convert_mpas x1.${RES}.init.nc ${DATAOUT}/${YYYYMMDDHHi}/Model/\${diag_name} > convert_mpas.output" done @@ -221,22 +301,25 @@ for ii in \$(seq ${inicio} ${fim}) do i=\$(printf "%04d" \${ii}) hh=${YYYYMMDDHHi:8:2} - currentdate=\$(date -d "${YYYYMMDDHHi:0:8} \${hh}:00 \$(echo "(\${i}-1)*3" | bc) hours" +"%Y%m%d%H") - diag_name_post=MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_\${currentdate}.00.00.x${RES}L${N_MODEL_LEV}.nc - + 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_${RORG}_POS_${EXP}_${YYYYMMDDHHi}_\${currentdate}.x${RES}L${N_MODEL_LEV}.nc + cd ${DIRRUN}/dir.\${i} + chmod 755 * cp latlon.nc ${DATAOUT}/${YYYYMMDDHHi}/Post/\${diag_name_post} >> convert_mpas.output & echo "cp latlon.nc ${DATAOUT}/${YYYYMMDDHHi}/Post/\${diag_name_post}" >> convert_mpas.output done wait - + EOSH + chmod a+x ${DIRRUN}/PostAtmos_node.${node}.sh + chmod 755 ${DIRRUN}/* cp -f ${DIRRUN}/PostAtmos_node.${node}.sh ${DATAOUT}/${YYYYMMDDHHi}/Post/logs - + chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Post/* case "${SCHEDULER_SYSTEM}" in SLURM) echo "Sbatch PostAtmos_node.${node}.sh" @@ -244,10 +327,12 @@ EOSH echo "JobId node ${node} = ${jobid[${node}]} , convert_mpas ${inicio} to ${fim}" echo "" ;; -# PBS) -# echo "Rodando em PBS" -# # comandos qsub, qstat, etc. -# ;; + PBS) + echo "Rodando em PBS" + echo -e "${GREEN}==>${NC} qsub PostAtmos_node.${node}.sh...\n" + cd ${DIRRUN} + jobid[${node}]=$(qsub ${DIRRUN}/PostAtmos_node.${node}.sh | cut -d '.' -f1) + ;; # GENERIC) # echo "Nenhum gerenciador detectado" # ${DIRRUN}/PostAtmos_node.${node}.sh @@ -255,8 +340,6 @@ EOSH esac - - inicio=$((fim + 1)) temp=$((fim + maxpostpernode)) fim=$(( temp < nfiles ? temp : nfiles )) @@ -264,8 +347,7 @@ EOSH sleep 5 done - - +total_nodes=${node} # Dependencias JobId: dependency="afterok" @@ -279,27 +361,30 @@ done node=0 rm -f ${DIRRUN}/PostAtmos_node.${node}.sh + if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] then - sed -e "s/#JOBNAME#/MO.Pos${node}/g; - s/#NNODES#/1/g; - /#NTASKS#/d; - /#NTASKSPNODE#/d; - s/#PARTITION#/${POST_QUEUE}/g; - s/#WALLTIME#/${POST_walltime}/g; - s|#OUTPUTJOB#|${DATAOUT}/${YYYYMMDDHHi}/Post/logs/PostAtmos_node.${node}.o%j|g; - s|#ERRORJOB#|${DATAOUT}/${YYYYMMDDHHi}/Post/logs/PostAtmos_node.${node}.e%j|g" \ + sed -e "s,#JOBNAME#,MO.Pos${node},g; + s,#NNODES#,${POST_nnodes},g; + s,#NCPUS#,${POST_ncpus},g; + s,#NTASKS#,${POST_ncores},g; + s,#NTASKSPNODE#,${POST_ncpn},g; + s,#NTHREADS#,${POST_nthreads},g; + s,#PARTITION#,${POST_QUEUE},g; + s,#WALLTIME#,${POST_walltime},g; + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Post/logs/PostAtmos_node.${node}.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Post/logs/PostAtmos_node.${node}.e,g" \ ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > \ ${DIRRUN}/PostAtmos_node.${node}.sh else echo "#!/bin/bash " > ${DIRRUN}/PostAtmos_node.${node}.sh fi - - - cat << EOSH >> ${DIRRUN}/PostAtmos_node.${node}.sh -. ${DIRRUN}/setenv.bash + +cd ${DIRRUN} +. ${SCRIPTS}/setenv.bash +echo "-- PBS_JOBID: \$PBS_JOBID" # Saving important files to the logs directory: cp -f ${EXECS}/CONVMPAS-VERSION.txt ${DATAOUT}/${YYYYMMDDHHi}/Post @@ -320,21 +405,36 @@ rm -fr ${DIRRUN} EOSH chmod a+x ${DIRRUN}/PostAtmos_node.${node}.sh + case "${SCHEDULER_SYSTEM}" in SLURM) echo "Sbatch PostAtmos_node.${node}.sh" sbatch --wait --dependency=${dependency} ${DIRRUN}/PostAtmos_node.${node}.sh ;; -# PBS) -# echo "Rodando em PBS" -# # comandos qsub, qstat, etc. -# ;; + PBS) + echo "Rodando em PBS" + echo -e "${GREEN}==>${NC} qsub PostAtmos_node.${node}.sh...\n" + cd ${DIRRUN} + qsub -W depend=${dependency} -W block=true ${DIRRUN}/PostAtmos_node.${node}.sh + ;; # GENERIC) # echo "Nenhum gerenciador detectado" # ${DIRRUN}/PostAtmos_node.${node}.sh # ;; esac + #CR: passar este scriptpara dentro do script PostAtmos_node.0.sh, submetido. cd ${SCRIPTS} +chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Post/* time ${SCRIPTS}/make_template.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} + +for ((n=0 ; n\033[0m Moduling environment for MONAN model...\n" -. setenv.bash - -echo "" -echo "---- Make Degrib ----" -echo "" - -# Standart directories variables:--------------------------------------- -DIRHOMES=$(dirname "$(pwd)"); 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 -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 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 -case "${SYSTEM_KEY}" in - SLURM_egeon) - #CR: Here is the place to setup the CI directory into ${BNDDIR} var, - # to find the gfs file: - OPERDIREXP=${OPERDIR}/${EXP} - BNDDIR=${OPERDIREXP}/0p25/brutos/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi:4:2}/${YYYYMMDDHHi:6:2}/${YYYYMMDDHHi:8:2} - GCCCIS=/mnt/beegfs/monan/CIs/${EXP} - ;; -# PBS) -# #CR: Here is the place to setup the CI directory into ${BNDDIR} var, -# # to find the gfs file: -# echo "Rodando em PBS" -# # BNDDIR= -# ;; -# GENERIC) -# #CR: Here is the place to setup the CI directory into ${BNDDIR} var, -# # to find the gfs file: -# echo "Nenhum gerenciador detectado" -# # BNDDIR= -# ;; -esac - -#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}/${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}" - exit 1 - else - BNDDIR=${GCCCIS}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi} - fi -fi - -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[@]}" -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 - -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 ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} -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 [ ${SCHEDULER_SYSTEM} != "GENERIC" ] -then - sed -e "s,#JOBNAME#,${DEGRIB_jobname},g; - s,#NNODES#,${DEGRIB_nnodes},g; - s,#NTASKS#,${DEGRIB_ncores},g; - s,#NTASKSPNODE#,${DEGRIB_ncpn},g; - s,#PARTITION#,${DEGRIB_QUEUE},g; - s,#WALLTIME#,${DEGRIB_walltime},g; - s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o%j,g; - s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e%j,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} -. setenv.bash - -ldd ungrib.exe - -rm -f GRIBFILE.* namelist.wps - - -sed -e "s,#LABELI#,${start_date},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 - -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 GFS\:${start_date:0:13} ${DATAOUT}/${YYYYMMDDHHi}/Pre - - rm -fr ${DATAIN}/${YYYYMMDDHHi} - -echo "End of degrib Job" - - -EOF0 -chmod a+x ${DIRRUN}/degrib.bash - - -case "${SCHEDULER_SYSTEM}" in - SLURM) - echo -e "${GREEN}==>${NC} Sbatch degrib.bash...\n" - cd ${DIRRUN} - sbatch --wait ${DIRRUN}/degrib.bash - ;; -# PBS) -# echo "Rodando em PBS" -# # comandos qsub, qstat, etc. -# ;; -# GENERIC) -# echo "Nenhum gerenciador detectado" -# ${DIRRUN}/degrib.bash -# ;; -esac - - -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_ERA5.bash b/scripts/make_degrib_ERA5.bash new file mode 100755 index 0000000..279fd34 --- /dev/null +++ b/scripts/make_degrib_ERA5.bash @@ -0,0 +1,313 @@ +#!/bin/bash +umask 022 + +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 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" + 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 + +echo "" +echo "---- Make Degrib ${EXP} ----" +echo "" + +# 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=ERA +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 +export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRUN} +#------------------------------------------------------- +mkdir -p ${DATAIN}/${YYYYMMDDHHi} +mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs + +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 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 + 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 + +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}" ] + 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/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_${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 +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#,${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 + +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 ${EXP}* ${DATAOUT}/${YYYYMMDDHHi}/Pre + rm -fr ${DATAIN}/${YYYYMMDDHHi} + +echo "End of degrib Job" + + +EOF0 + +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} + + 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 +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#,${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 + +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 ${EXP}\:${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} 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_${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[@]}" +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_${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 new file mode 100755 index 0000000..479d69e --- /dev/null +++ b/scripts/make_degrib_GFS.bash @@ -0,0 +1,320 @@ +#!/bin/bash +umask 022 + + +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 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" + 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 + +echo "" +echo "---- Make Degrib ${EXP} ----" +echo "" + +# 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 +export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRUN} +#------------------------------------------------------- +mkdir -p ${DATAIN}/${YYYYMMDDHHi} +mkdir -p ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs + +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 + +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 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 + 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" "${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2") + +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 + +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_${EXP}.bash + +if [[ $MODERUN == "R" ]]; then + echo "MODERUN=R. Degribbing GFS data for both initial and lateral boundary conditions..." + dt=$((LBCINT / 3600)) + + 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" ] + 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 +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#,${final_date},g;s,#LBCINT#,${LBCINT},g;s,#PREFIX#,${EXP},g" \ + ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps + +echo "" +./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/gfs.*.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* ${DATAOUT}/${YYYYMMDDHHi}/Pre + rm -fr ${DATAIN}/${YYYYMMDDHHi} + +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_${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 +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#,${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 + +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 + +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\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_${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[@]}" +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_${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_initatmos.bash b/scripts/make_initatmos.bash index 203041f..a321301 100755 --- a/scripts/make_initatmos.bash +++ b/scripts/make_initatmos.bash @@ -1,5 +1,5 @@ #!/bin/bash - +umask 022 if [ $# -ne 4 ] then @@ -31,7 +31,7 @@ echo "---- Make Init Atmosphere ----" echo "" # Standart directories variables:--------------------------------------- -DIRHOMES=$(dirname "$(pwd)"); mkdir -p ${DIRHOMES} +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} @@ -58,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 ] @@ -68,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 @@ -90,9 +86,14 @@ 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" \ - ${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 @@ -102,9 +103,11 @@ cp -f ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ${DIRRUN} cp -f ${DATAIN}/fixed/x1.${RES}.static.nc ${DIRRUN} cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/${EXP}\:${start_date:0:13} ${DIRRUN} cp -f ${EXECS}/init_atmosphere_model ${DIRRUN} +cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} +chmod 755 ${DIRRUN}/* +chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* -cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} rm -f ${DIRRUN}/initatmos.bash @@ -112,20 +115,21 @@ if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] then sed -e "s,#JOBNAME#,${INITATMOS_jobname},g; s,#NNODES#,${INITATMOS_nnodes},g; + s,#NCPUS#,${INITATMOS_ncpus},g; s,#NTASKS#,${INITATMOS_ncores},g; s,#NTASKSPNODE#,${INITATMOS_ncpn},g; + s,#NTHREADS#,${INITATMOS_nthreads},g; s,#PARTITION#,${INITATMOS_QUEUE},g; s,#WALLTIME#,${INITATMOS_walltime},g; - s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.o%j,g; - s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.e%j,g" \ + s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.o,g; + s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.e,g" \ ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/initatmos.bash else echo "#!/bin/bash " > ${DIRRUN}/initatmos.bash fi - - cat << EOF0 >> ${DIRRUN}/initatmos.bash + export executable=init_atmosphere_model ulimit -c unlimited @@ -133,15 +137,26 @@ ulimit -v unlimited ulimit -s unlimited -. $(pwd)/setenv.bash - cd ${DIRRUN} - +. ${SCRIPTS}/setenv.bash date -time mpirun -np ${INITATMOS_ncores} ./\${executable} +beg_secs=\`date +"%s"\` + +if [ "$HOSTNAME" = "egeon" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" + time mpirun -np ${INITATMOS_ncores} ./\${executable} +else + echo "-- PBS_JOBID: \$PBS_JOBID" + time mpirun --ppn ${INITATMOS_ncpn} -np ${INITATMOS_ncores} --depth=${INITATMOS_nthreads} --cpu-bind depth ./\${executable} +fi + date +end_secs=\`date +"%s"\` + +let wallsecs=\$end_secs-\$beg_secs +echo "INITATMOS time taken by run in seconds is " \$wallsecs mv ${DIRRUN}/log.init_atmosphere.0000.out ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/log.init_atmosphere.0000.x1.${RES}.init.nc.${YYYYMMDDHHi}.out @@ -158,11 +173,11 @@ case "${SCHEDULER_SYSTEM}" in cd ${DIRRUN} sbatch --wait ${DIRRUN}/initatmos.bash ;; -# PBS) -# echo "Rodando em PBS" -# cd ${DIRRUN} -# # comandos qsub, qstat, etc. -# ;; + PBS) + echo -e "${GREEN}==>${NC} qsub initatmos.bash...\n" + cd ${DIRRUN} + qsub -W block=true ${DIRRUN}/initatmos.bash + ;; # GENERIC) # echo "Nenhum gerenciador detectado" # cd ${DIRRUN} @@ -171,6 +186,11 @@ case "${SCHEDULER_SYSTEM}" in esac mv ${DIRRUN}/initatmos.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs +JOBID=$(sed -n '5p' ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.o | awk '{print $3}' | sed "s/.pbs-ha//g") +mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.o ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.o.${JOBID} +mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.e ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.e.${JOBID} +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.o.${JOBID} +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.e.${JOBID} if [ ! -s ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ] @@ -180,5 +200,5 @@ then echo -e "${RED}==>${NC} Exiting script. \n" exit -1 fi - +chmod 775 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* rm -fr ${DIRRUN} diff --git a/scripts/make_lbcs.bash b/scripts/make_lbcs.bash new file mode 100755 index 0000000..b6e3648 --- /dev/null +++ b/scripts/make_lbcs.bash @@ -0,0 +1,189 @@ +#!/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 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" + 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=${LBCS_ncores} +export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRUN} +#------------------------------------------------------- +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 ] + then + cd ${DATAIN}/fixed + 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 + tar -xzvf x1.${RES}.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 +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") +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/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} + + +cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} +rm -f ${DIRRUN}/lbcs.bash + +if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] +then + sed -e "s,#JOBNAME#,${LBCS_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/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 + +export executable=init_atmosphere_model + +ulimit -c unlimited +ulimit -v unlimited +ulimit -s unlimited + +. ${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 + +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}/x1.${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/* + +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_static.bash b/scripts/make_static.bash index 52beb7b..c59eba8 100755 --- a/scripts/make_static.bash +++ b/scripts/make_static.bash @@ -1,4 +1,5 @@ #!/bin/bash +umask 022 if [ $# -ne 4 ] @@ -31,7 +32,7 @@ echo "---- Make Static ----" echo "" # Standart directories variables:--------------------------------------- -DIRHOMES=$(dirname "$(pwd)"); mkdir -p ${DIRHOMES} +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} @@ -57,25 +58,25 @@ export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRU + if [ ! -s ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ] then if [ ! -s ${DATAIN}/fixed/x1.${RES}.graph.info ] then + mkdir -p ${DATAIN}/fixed 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") for file in "${files_needed[@]}" do @@ -87,6 +88,7 @@ do fi done + cp -f ${DATAIN}/fixed/*.TBL ${DIRRUN} cp -f ${DATAIN}/fixed/*.GFS ${DIRRUN} cp -f ${EXECS}/init_atmosphere_model ${DIRRUN} @@ -101,7 +103,6 @@ sed -e "s,#RES#,${RES},g" \ ${SCRIPTS}/namelists/streams.init_atmosphere.STATIC \ > ${DIRRUN}/streams.init_atmosphere - cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} mkdir -p ${DATAOUT}/logs rm -f ${DIRRUN}/static.bash @@ -110,31 +111,51 @@ if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] then sed -e "s,#JOBNAME#,${STATIC_jobname},g; s,#NNODES#,${STATIC_nnodes},g; + s,#NCPUS#,${STATIC_ncpus},g; s,#NTASKS#,${STATIC_ncores},g; s,#NTASKSPNODE#,${STATIC_ncpn},g; + s,#NTHREADS#,${STATIC_nthreads},g; s,#PARTITION#,${STATIC_QUEUE},g; s,#WALLTIME#,${STATIC_walltime},g; - s,#OUTPUTJOB#,${DATAOUT}/logs/static.bash.o%j,g; - s,#ERRORJOB#,${DATAOUT}/logs/static.bash.e%j,g" \ + s,#OUTPUTJOB#,${DATAOUT}/logs/static.bash.o,g; + s,#ERRORJOB#,${DATAOUT}/logs/static.bash.e,g" \ ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/static.bash else echo "#!/bin/bash " > ${DIRRUN}/static.bash fi +chmod 755 ${DIRRUN}/* + cat << EOF0 >> ${DIRRUN}/static.bash + export executable=init_atmosphere_model ulimit -s unlimited ulimit -c unlimited ulimit -v unlimited -. $(pwd)/setenv.bash +#. ${SCRIPTS}/setenv.bash cd ${DIRRUN} +chmod 755 * date -time mpirun -np ${STATIC_ncores} ./\${executable} +beg_secs=\`date +"%s"\` + +if [ "$HOSTNAME" = "egeon" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" + time mpirun -np ${STATIC_ncores} ./\${executable} +else + echo "-- PBS_JOBID: \$PBS_JOBID" + time mpirun --ppn ${STATIC_ncpn} -np ${STATIC_ncores} --depth=${STATIC_nthreads} --cpu-bind depth ./\${executable} +fi + date +end_secs=\`date +"%s"\` + +let wallsecs=\$end_secs-\$beg_secs +echo "STATIC time taken by run in seconds is " \$wallsecs + grep "Finished running" log.init_atmosphere.0000.out >& /dev/null if [ \$? -ne 0 ]; then @@ -151,11 +172,9 @@ echo " ####################################" echo " " -mv log.init_atmosphere.0000.out ${DATAOUT}/logs/log.init_atmosphere.0000.x1.${RES}.static.nc.out - - EOF0 chmod a+x ${DIRRUN}/static.bash +rm -fr ${DATAIN}/fixed/x1.${RES}.static.nc case "${SCHEDULER_SYSTEM}" in @@ -164,11 +183,11 @@ case "${SCHEDULER_SYSTEM}" in cd ${DIRRUN} sbatch --wait ${DIRRUN}/static.bash ;; -# PBS) -# echo "Rodando em PBS" -# cd ${DIRRUN} -# # comandos qsub, qstat, etc. -# ;; + PBS) + echo -e "${GREEN}==>${NC} qsub static.bash...\n" + cd ${DIRRUN} + qsub -W block=true ${DIRRUN}/static.bash + ;; # GENERIC) # echo "Nenhum gerenciador detectado" # cd ${DIRRUN} @@ -176,17 +195,25 @@ case "${SCHEDULER_SYSTEM}" in # ;; esac - mv ${DIRRUN}/static.bash ${DATAOUT}/logs/ - +mv ${DIRRUN}/streams.init_atmosphere ${DATAOUT}/logs/ +mv ${DIRRUN}/namelist.init_atmosphere ${DATAOUT}/logs/ +mv log.init_atmosphere.* ${DATAOUT}/logs/ if [ -s ${DIRRUN}/x1.${RES}.static.nc ] then mv ${DIRRUN}/x1.${RES}.static.nc ${DATAIN}/fixed + chmod 755 ${DATAIN}/fixed/* else echo -e "${RED}==>${NC} File ${DIRRUN}/x1.${RES}.static.nc was not created. \n" exit -1 fi +JOBID=$(sed -n '2p' ${DATAOUT}/logs/static.bash.o | awk '{print $3}' | sed "s/.pbs-ha//g") +mv ${DATAOUT}/logs/static.bash.o ${DATAOUT}/logs/static.bash.o.${JOBID} +mv ${DATAOUT}/logs/static.bash.e ${DATAOUT}/logs/static.bash.e.${JOBID} +chmod a+r ${DATAOUT}/logs/static.bash.o.${JOBID} +chmod a+r ${DATAOUT}/logs/static.bash.e.${JOBID} +chmod a+r ${DATAOUT}/logs/log.init_atmosphere.* rm -fr ${DIRRUN} diff --git a/scripts/make_template.bash b/scripts/make_template.bash index 8870d79..eff9107 100755 --- a/scripts/make_template.bash +++ b/scripts/make_template.bash @@ -1,4 +1,5 @@ #!/bin/bash +umask 022 #-----------------------------------------------------------------------------# # !SCRIPT: run_post # @@ -7,10 +8,10 @@ # # 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 # # #-----------------------------------------------------------------------------# @@ -22,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." @@ -88,31 +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 [ $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 - NLAT=150 #180/1.2 - NLON=300 #360/1.2 - STARTLAT=-90.0 - STARTLON=0.0 - ENDLAT=90.0 - ENDLON=360.0 -fi -#------------------------------------------------------- - # NLEVS get from t_iso_levels in Registry_isobaric.xml: if [ -s ${MONANDIR}/src/core_atmosphere/diagnostics/Registry_isobaric.xml ] then @@ -124,10 +100,26 @@ 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 +cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} + +chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Post/* cat > ${DIRRUN}/qctlinfo.gs < ${DIRRUN}/qctlinfo.ctl +chmod 755 ${DIRRUN}/qctlinfo.ctl + + timectl=$(grep tdef ${DIRRUN}/qctlinfo.ctl | cut -d" " -f4) sed -i '3a\options template' ${DIRRUN}/qctlinfo.ctl sed -i "/tdef/c\tdef ${nfiles} linear ${timectl} ${t_stroutmin}mn" ${DIRRUN}/qctlinfo.ctl sed -i "/dset/c\dset ^${diag_name_templ}" ${DIRRUN}/qctlinfo.ctl + +chmod 755 ${DIRRUN}/* mv ${DIRRUN}/qctlinfo.ctl ${DATAOUT}/${YYYYMMDDHHi}/Post/${diag_name_post}.template.ctl rm -fr ${DIRRUN} diff --git a/scripts/namelists/include_fields.diag b/scripts/namelists/include_fields.diag deleted file mode 100644 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 100644 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 100644 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/include_fields.diag.OPER b/scripts/namelists/include_fields.diag.OPER old mode 100644 new mode 100755 diff --git a/scripts/namelists/namelist.atmosphere.TEMPLATE b/scripts/namelists/namelist.atmosphere.TEMPLATE index bab5a89..c4f103d 100755 --- a/scripts/namelists/namelist.atmosphere.TEMPLATE +++ b/scripts/namelists/namelist.atmosphere.TEMPLATE @@ -27,14 +27,14 @@ config_monotonic = true config_coef_3rd_order = 0.25 config_epssm = 0.1 - config_smdiv = 0.1 + config_smdiv = 0.15 / &damping config_zd = 22000.0 config_xnutr = 0.2 / &limited_area - config_apply_lbcs = false + config_apply_lbcs = #APPLY_LBCS# / &io config_pio_num_iotasks = 0 @@ -62,7 +62,7 @@ config_radtsw_interval = '00:30:00' config_conv_interval = '#CONFIG_CONV_INTERVAL#' config_bucket_update = 'none' - config_physics_suite = 'convection_permitting_monan' + config_physics_suite = 'mesoscale_reference_monan' config_mynn_edmf = 0 / &gf_monan diff --git a/scripts/namelists/namelist.init_atmosphere.LBCS b/scripts/namelists/namelist.init_atmosphere.LBCS new file mode 100755 index 0000000..8e4ba81 --- /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 = 'x1.#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/stream_list.atmosphere.diagnostics b/scripts/namelists/stream_list.atmosphere.diagnostics deleted file mode 100644 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 100644 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 100644 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/stream_list.atmosphere.diagnostics.OPER b/scripts/namelists/stream_list.atmosphere.diagnostics.OPER old mode 100644 new mode 100755 diff --git a/scripts/namelists/stream_list.atmosphere.output b/scripts/namelists/stream_list.atmosphere.output old mode 100644 new mode 100755 diff --git a/scripts/namelists/stream_list.atmosphere.surface b/scripts/namelists/stream_list.atmosphere.surface old mode 100644 new mode 100755 diff --git a/scripts/namelists/streams.atmosphere.TEMPLATE b/scripts/namelists/streams.atmosphere.TEMPLATE index c732433..9e9ff6a 100755 --- a/scripts/namelists/streams.atmosphere.TEMPLATE +++ b/scripts/namelists/streams.atmosphere.TEMPLATE @@ -1,18 +1,20 @@ @@ -20,7 +22,8 @@ @@ -42,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..234cd40 --- /dev/null +++ b/scripts/namelists/streams.init_atmosphere.LBCS @@ -0,0 +1,20 @@ + + + + + + + diff --git a/scripts/namelists/streams.init_atmosphere.TEMPLATE b/scripts/namelists/streams.init_atmosphere.TEMPLATE index 10c9e91..1a2fd34 100755 --- a/scripts/namelists/streams.init_atmosphere.TEMPLATE +++ b/scripts/namelists/streams.init_atmosphere.TEMPLATE @@ -1,11 +1,13 @@ diff --git a/scripts/setenv.bash b/scripts/setenv.bash index 6145517..8873d73 100755 --- a/scripts/setenv.bash +++ b/scripts/setenv.bash @@ -1,6 +1,15 @@ -#!/bin/bash -x +#!/bin/bash +umask 022 +# Choose the simulation mode: +export MODERUN=G # R=Regional simulation | G=Global simulation. +export 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 +#export COMPILER=cray +#export COMPILER=nvidia # Squeduler detect: if command -v sbatch &> /dev/null @@ -20,19 +29,34 @@ fi THOSTNAME=$(hostname -s) # Identifying several names of the egeon: -if [ ${THOSTNAME} = "egeon-login" -o ${THOSTNAME} = "headnode" ] -then - export HOSTNAME="egeon" -fi +case ${THOSTNAME} in + egeon-login|headnode|n[0-9]|n[1-2][0-9]|n3[0-3]) + export HOSTNAME="egeon" + export MAKE_TARG=gfortran + export MAKE_TARG2=gfortran + COMPILER=gnu + ;; + ian[0-9]*|cn-0[0-9][0-9][0-9]) + export HOSTNAME="ian" + if [ "$COMPILER" == "intel" ]; then + export MAKE_TARG=intel-xd2000 + export MAKE_TARG2=intel2-xd2000 + elif [ "$COMPILER" == "gnu" ]; then + export MAKE_TARG=gfortran-xd2000 + export MAKE_TARG2=gfortran-xd2000 + elif [ "$COMPILER" == "cray" ]; then + export MAKE_TARG=cray-xd2000 + export MAKE_TARG2=cray-xd2000 + fi + ;; +esac # Make the same for other machines/systems... echo "Host detected: $HOSTNAME" +echo "Compiler to be used: ${COMPILER}" # Set unique key: scheduler + host: export SYSTEM_KEY="${SCHEDULER_SYSTEM}_${HOSTNAME}" - - - - +export SYSTEM_KEYC="${SCHEDULER_SYSTEM}_${HOSTNAME}_${COMPILER}" # Set environment variables and importants directories-------------------------------------------------- @@ -41,28 +65,27 @@ export SYSTEM_KEY="${SCHEDULER_SYSTEM}_${HOSTNAME}" # MONAN-suite install root directories: # Put your directories: export DIR_SCRIPTS=$(dirname $(dirname $(pwd))) -export DIR_DADOS=$(dirname $(dirname $(pwd))) -export MONANDIR=/mnt/beegfs/carlos.souza/issues/801-scripts_CDCT_multi-env/scripts_CD-CT/sources/MONAN-Model_1.4.2-rc +export DIR_DADOS=${DIR_SCRIPTS} +export MONANDIR=$MONANDIR -# Load your systm setenv: - -. ${DIR_SCRIPTS}/scripts_CD-CT/scripts/stools/setenv_${SYSTEM_KEY}.bash +# Load your system setenv: +. ${DIR_SCRIPTS}/scripts_CD-CT/scripts/stools/setenv_${SYSTEM_KEYC}.bash +#module list +#echo "" +#read -p "Mostrando modulos carregados - Pressione Enter para continuar.... " +#echo "" #----------------------------------------------------------------------- # We discourage changing the variables below: # Others variables: -export OMP_NUM_THREADS=1 -export OMPI_MCA_btl_openib_allow_ib=1 -export OMPI_MCA_btl_openib_if_include="mlx5_0:1" -export PMIX_MCA_gds=hash -export MPI_PARAMS="-iface ib0 -bind-to core -map-by core" # Colors: +# export GREEN='\033[1;32m' # Green export RED='\033[1;31m' # Red export NC='\033[0m' # No Color @@ -89,7 +112,3 @@ how_many_nodes () { #---------------------------------------------------------------------------------------------- - - - - diff --git a/scripts/stools/setenv_PBS.bash b/scripts/stools/setenv_PBS.bash deleted file mode 100755 index 7ab67b7..0000000 --- a/scripts/stools/setenv_PBS.bash +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - - -# Load modules: - - - - -# Submiting variables: - -# PRE-Static phase: -export STATIC_QUEUE="batch" -export STATIC_ncores=32 -export STATIC_nnodes=1 -export STATIC_ncpn=32 -export STATIC_jobname="Pre.static" -export STATIC_walltime="02:00:00" - -# PRE-Degrib phase: -export DEGRIB_QUEUE="batch" -export DEGRIB_ncores=1 -export DEGRIB_nnodes=1 -export DEGRIB_ncpn=1 -export DEGRIB_jobname="Pre.degrib" -### export DEGRIB_walltime="00:30:00" not used yet - using STATIC_walltime - -# PRE-Init Atmosphere phase: -export INITATMOS_QUEUE="batch" -export INITATMOS_ncores=64 -export INITATMOS_nnodes=1 -### export INITATMOS_ncpn=1 not used yet - using INITATMOS_ncores -export INITATMOS_jobname="Pre.InitAtmos" -### export INITATMOS_walltime="01:00:00" not used yet - using STATIC_walltime - - -# Model phase: -export MODEL_QUEUE="batch" -export MODEL_ncores=512 -export MODEL_nnodes=8 -export MODEL_ncpn=64 -export MODEL_jobname="Model.MONAN" -export MODEL_walltime="8:00:00" - - -# Post phase: -export POST_QUEUE="batch" -### export POST_ncores=1 not used yet -export POST_nnodes=1 -export POST_ncpn=32 -export POST_jobname="Post.MONAN" -export POST_walltime="8:00:00" diff --git a/scripts/stools/setenv_PBS_ian_cray.bash b/scripts/stools/setenv_PBS_ian_cray.bash new file mode 100755 index 0000000..97bf3b3 --- /dev/null +++ b/scripts/stools/setenv_PBS_ian_cray.bash @@ -0,0 +1,141 @@ +#!/bin/bash + +# Load modules: +module purge +module load PrgEnv-cray +module load craype-x86-turin +module load cray-hdf5/1.14.3.3 +module load cray-netcdf/4.9.0.15 +module load cray-parallel-netcdf/1.12.3.15 +module load xpmem/0.2.119-1.3_gef379be13330 +module load grads/2.2.1.oga.1 +module load cdo/2.4.2 +module load METIS/5.1.0 +module load cray-pals +module list + + +# Submiting variables: + +# PRE-Static phase: +export STATIC_QUEUE="pesqextra" +export STATIC_ncores=128 +export STATIC_nnodes=4 +export STATIC_ncpus=32 +export STATIC_ncpn=32 +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 +export DEGRIB_nnodes=1 +export DEGRIB_ncpus=1 +export DEGRIB_ncpn=1 +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 +export INITATMOS_nnodes=4 +export INITATMOS_ncpus=128 +export INITATMOS_ncpn=128 +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 +export MODEL_nnodes=8 +export MODEL_ncpus=256 +export MODEL_ncpn=256 +export MODEL_nthreads=1 +export MODEL_jobname="Model.MONAN" +export MODEL_walltime="8:00:00" +#PBS -l select=8:ncpus=64:mpiprocs=64 == 512mpi, 8nodes, 64cpn +#PBS -l select=16:ncpus=64:mpiprocs=64 == 1024mpi, 16nodes, 64cpn + +# Post phase: +export POST_QUEUE="pesqextra" +export POST_ncores=32 +export POST_nnodes=1 +export POST_ncpus=32 +export POST_ncpn=32 +export POST_nthreads=1 +export POST_jobname="Post.MONAN" +export POST_walltime="8:00:00" + + +# Libraries paths: +export NETCDF=${NETCDF_DIR} +export PNETCDF=${PNETCDF_DIR} +export NETCDFDIR=${NETCDF} +export PNETCDFDIR=${PNETCDF} + +export OPERDIR=/oper/dados/ioper/tempo +export DIRDADOS=/p/projetos/monan_adm/monan/dados/MONAN_v1.4.x +export GCCCIS=/p/projetos/monan_adm/monan/CIs + + +# PIO is not necessary for version 8.* If PIO is empty, MPAS Will use SMIOL +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 +export FI_CXI_RX_MATCH_MODE=software +export FI_MR_CACHE_MAX_COUNT=0 +# MPICH: +# export MPICH_MEMORY_REPORT=2 +# OpenMP: +export OMP_NUM_THREADS=1 + + +# +# -------- Tested Configurations --------- +# + +#export MODEL_ncores=8192 +#export MODEL_nnodes=32 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 + +#export MODEL_ncores=7680 +#export MODEL_nnodes=30 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 + +#export MODEL_ncores=1024 +#export MODEL_nnodes=16 +#export MODEL_ncpus=256 +#export MODEL_ncpn=64 +#export MODEL_nthreads=4 + +#export MODEL_ncores=4096 +#export MODEL_nnodes=20 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 + +#export MODEL_ncores=6144 +#export MODEL_nnodes=24 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 diff --git a/scripts/stools/setenv_PBS_ian_gnu.bash b/scripts/stools/setenv_PBS_ian_gnu.bash new file mode 100755 index 0000000..2e64a54 --- /dev/null +++ b/scripts/stools/setenv_PBS_ian_gnu.bash @@ -0,0 +1,141 @@ +#!/bin/bash + +# Load modules: +module purge +module load PrgEnv-gnu +module load craype-x86-turin +module load cray-hdf5/1.14.3.3 +module load cray-netcdf/4.9.0.15 +module load cray-parallel-netcdf/1.12.3.15 +module load xpmem/0.2.119-1.3_gef379be13330 +module load grads/2.2.1.oga.1 +module load cdo/2.4.2 +module load METIS/5.1.0 +module load cray-pals +module list + + +# Submiting variables: + +# PRE-Static phase: +export STATIC_QUEUE="pesqextra" +export STATIC_ncores=128 +export STATIC_nnodes=4 +export STATIC_ncpus=32 +export STATIC_ncpn=32 +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 +export DEGRIB_nnodes=1 +export DEGRIB_ncpus=1 +export DEGRIB_ncpn=1 +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 +export INITATMOS_nnodes=4 +export INITATMOS_ncpus=128 +export INITATMOS_ncpn=128 +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 +export MODEL_nnodes=8 +export MODEL_ncpus=256 +export MODEL_ncpn=256 +export MODEL_nthreads=1 +export MODEL_jobname="Model.MONAN" +export MODEL_walltime="8:00:00" +#PBS -l select=8:ncpus=64:mpiprocs=64 == 512mpi, 8nodes, 64cpn +#PBS -l select=16:ncpus=64:mpiprocs=64 == 1024mpi, 16nodes, 64cpn + +# Post phase: +export POST_QUEUE="pesqextra" +export POST_ncores=32 +export POST_nnodes=1 +export POST_ncpus=32 +export POST_ncpn=32 +export POST_nthreads=1 +export POST_jobname="Post.MONAN" +export POST_walltime="8:00:00" + + +# Libraries paths: +export NETCDF=${NETCDF_DIR} +export PNETCDF=${PNETCDF_DIR} +export NETCDFDIR=${NETCDF} +export PNETCDFDIR=${PNETCDF} + +export OPERDIR=/oper/dados/ioper/tempo +export DIRDADOS=/p/projetos/monan_adm/monan/dados/MONAN_v1.4.x +export GCCCIS=/p/projetos/monan_adm/monan/CIs + + +# PIO is not necessary for version 8.* If PIO is empty, MPAS Will use SMIOL +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 +export FI_CXI_RX_MATCH_MODE=software +export FI_MR_CACHE_MAX_COUNT=0 +# MPICH: +# export MPICH_MEMORY_REPORT=2 +# OpenMP: +export OMP_NUM_THREADS=1 + + +# +# -------- Tested Configurations --------- +# + +#export MODEL_ncores=8192 +#export MODEL_nnodes=32 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 + +#export MODEL_ncores=7680 +#export MODEL_nnodes=30 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 + +#export MODEL_ncores=1024 +#export MODEL_nnodes=16 +#export MODEL_ncpus=256 +#export MODEL_ncpn=64 +#export MODEL_nthreads=4 + +#export MODEL_ncores=4096 +#export MODEL_nnodes=20 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 + +#export MODEL_ncores=6144 +#export MODEL_nnodes=24 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 diff --git a/scripts/stools/setenv_PBS_ian_intel.bash b/scripts/stools/setenv_PBS_ian_intel.bash new file mode 100755 index 0000000..02cdc33 --- /dev/null +++ b/scripts/stools/setenv_PBS_ian_intel.bash @@ -0,0 +1,141 @@ +#!/bin/bash + +# Load modules: +module purge +module load PrgEnv-intel +module load craype-x86-turin +module load cray-hdf5/1.14.3.3 +module load cray-netcdf/4.9.0.15 +module load cray-parallel-netcdf/1.12.3.15 +module load xpmem/0.2.119-1.3_gef379be13330 +module load grads/2.2.1.oga.1 +module load cdo/2.4.2 +module load METIS/5.1.0 +module load cray-pals +module list + + +# Submiting variables: + +# PRE-Static phase: +export STATIC_QUEUE="pesqextra" +export STATIC_ncores=128 +export STATIC_nnodes=4 +export STATIC_ncpus=32 +export STATIC_ncpn=32 +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 +export DEGRIB_nnodes=1 +export DEGRIB_ncpus=1 +export DEGRIB_ncpn=1 +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 +export INITATMOS_nnodes=4 +export INITATMOS_ncpus=128 +export INITATMOS_ncpn=128 +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 +export MODEL_nnodes=8 +export MODEL_ncpus=256 +export MODEL_ncpn=256 +export MODEL_nthreads=1 +export MODEL_jobname="Model.MONAN" +export MODEL_walltime="8:00:00" +#PBS -l select=8:ncpus=64:mpiprocs=64 == 512mpi, 8nodes, 64cpn +#PBS -l select=16:ncpus=64:mpiprocs=64 == 1024mpi, 16nodes, 64cpn + +# Post phase: +export POST_QUEUE="pesqextra" +export POST_ncores=32 +export POST_nnodes=1 +export POST_ncpus=32 +export POST_ncpn=32 +export POST_nthreads=1 +export POST_jobname="Post.MONAN" +export POST_walltime="8:00:00" + + +# Libraries paths: +export NETCDF=${NETCDF_DIR} +export PNETCDF=${PNETCDF_DIR} +export NETCDFDIR=${NETCDF} +export PNETCDFDIR=${PNETCDF} + +export OPERDIR=/oper/dados/ioper/tempo +export DIRDADOS=/p/projetos/monan_adm/monan/dados/MONAN_v1.4.x +export GCCCIS=/p/projetos/monan_adm/monan/CIs + + +# PIO is not necessary for version 8.* If PIO is empty, MPAS Will use SMIOL +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 +export FI_CXI_RX_MATCH_MODE=software +export FI_MR_CACHE_MAX_COUNT=0 +# MPICH: +# export MPICH_MEMORY_REPORT=2 +# OpenMP: +export OMP_NUM_THREADS=1 + + +# +# -------- Tested Configurations --------- +# + +#export MODEL_ncores=8192 +#export MODEL_nnodes=32 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 + +#export MODEL_ncores=7680 +#export MODEL_nnodes=30 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 + +#export MODEL_ncores=1024 +#export MODEL_nnodes=16 +#export MODEL_ncpus=256 +#export MODEL_ncpn=64 +#export MODEL_nthreads=4 + +#export MODEL_ncores=4096 +#export MODEL_nnodes=20 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 + +#export MODEL_ncores=6144 +#export MODEL_nnodes=24 +#export MODEL_ncpus=256 +#export MODEL_ncpn=256 +#export MODEL_nthreads=1 diff --git a/scripts/stools/setenv_SLURM_egeon.bash b/scripts/stools/setenv_SLURM_egeon_gnu.bash similarity index 81% rename from scripts/stools/setenv_SLURM_egeon.bash rename to scripts/stools/setenv_SLURM_egeon_gnu.bash index 5cd26f8..5efd038 100755 --- a/scripts/stools/setenv_SLURM_egeon.bash +++ b/scripts/stools/setenv_SLURM_egeon_gnu.bash @@ -53,6 +53,7 @@ export MODEL_walltime="8:00:00" # Post phase: export POST_QUEUE="batch" ### export POST_ncores=1 not used yet +export POST_ncores=1 export POST_nnodes=1 export POST_ncpn=32 export POST_jobname="Post.MONAN" @@ -69,3 +70,17 @@ export NETCDFDIR=${NETCDF} export PNETCDFDIR=${PNETCDF} export DIRDADOS=/mnt/beegfs/monan/dados/MONAN_v1.4.x export OPERDIR=/oper/dados/ioper/tempo +export GCCCIS=/mnt/beegfs/monan/CIs + + +# --- Others Vabriables --- +# OpenMPI: +export OMPI_MCA_btl_openib_allow_ib=1 +export OMPI_MCA_btl_openib_if_include="mlx5_0:1" +# PMIx (process management for MPI): +export PMIX_MCA_gds=hash +# MPI: +export MPI_PARAMS="-iface ib0 -bind-to core -map-by core" +# OpenMP: +export OMP_NUM_THREADS=1 + diff --git a/scripts/stools/submit_PBS.bash_TEMPLATE b/scripts/stools/submit_PBS.bash_TEMPLATE deleted file mode 100755 index a3f2444..0000000 --- a/scripts/stools/submit_PBS.bash_TEMPLATE +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -#SBATCH --job-name=#JOBNAME# -#SBATCH --nodes=#NNODES# -#SBATCH --ntasks=#NTASKS# -#SBATCH --tasks-per-node=#NTASKSPNODE# -#SBATCH --partition=#PARTITION# -#SBATCH --time=#WALLTIME# -#SBATCH --output=#OUTPUTJOB# -#SBATCH --error=#ERRORJOB# -#SBATCH --exclusive - diff --git a/scripts/stools/submit_PBS_ian.bash_TEMPLATE b/scripts/stools/submit_PBS_ian.bash_TEMPLATE new file mode 100755 index 0000000..6769b75 --- /dev/null +++ b/scripts/stools/submit_PBS_ian.bash_TEMPLATE @@ -0,0 +1,13 @@ +#!/bin/bash + +####PBS -l select=:ncpus=:mpiprocs=:ompthreads= + +#PBS -N #JOBNAME# +#PBS -q #PARTITION# +#PBS -l select=#NNODES#:ncpus=#NCPUS#:mpiprocs=#NTASKSPNODE#:ompthreads=#NTHREADS# +#PBS -l walltime=#WALLTIME# +#PBS -o #OUTPUTJOB# +#PBS -e #ERRORJOB# +#PBS -l place=scatter:excl +#PBS -V + diff --git a/scripts/stools/submit_SLURM_egeon.bash_TEMPLATE b/scripts/stools/submit_SLURM_egeon.bash_TEMPLATE index a3f2444..3ffe9a6 100755 --- a/scripts/stools/submit_SLURM_egeon.bash_TEMPLATE +++ b/scripts/stools/submit_SLURM_egeon.bash_TEMPLATE @@ -6,7 +6,7 @@ #SBATCH --tasks-per-node=#NTASKSPNODE# #SBATCH --partition=#PARTITION# #SBATCH --time=#WALLTIME# -#SBATCH --output=#OUTPUTJOB# -#SBATCH --error=#ERRORJOB# +#SBATCH --output=#OUTPUTJOB#%j +#SBATCH --error=#ERRORJOB#%j #SBATCH --exclusive