From b56f0f74f3adb1f364f1aa34357338d0ac0306fe Mon Sep 17 00:00:00 2001 From: Joao Silva Date: Fri, 12 Jun 2026 22:32:38 -0300 Subject: [PATCH] Script_CD-CT features Regional and ERA (issues refs. 1001, 956) This is a combination of 8 commits with git rebase. - new features: regional mode and ERA5 - fixed regional feature - fixed regional feature and ERA5 - issue #1001 #956 - restore make_degrib.bash to make_degrib_GFS.bash - Rename ERA5 to ERA due to a convert_mpas restriction in filename - Time_Label - Update to Egeon Cluster - Update VERSON and README - Update ERA5 to ERA text information --- README.md | 173 +++-- VERSION.txt | 2 +- scripts/0.run_all.bash | 7 +- scripts/1.install_monan.bash | 6 - scripts/2.pre_processing.bash | 72 +- scripts/3.run_model.bash | 99 ++- scripts/4.run_post.bash | 122 ++- scripts/make_degrib.bash | 241 ------ scripts/make_degrib_ERA5.bash | 324 ++++++++ scripts/make_degrib_GFS.bash | 329 +++++++++ scripts/make_initatmos.bash | 44 +- scripts/make_lbcs.bash | 187 +++++ scripts/make_static.bash | 30 +- scripts/make_template.bash | 49 +- scripts/namelists/include_fields.diag | 72 -- scripts/namelists/include_fields.diag.CD-CT | 695 ------------------ scripts/namelists/include_fields.diag.GCC | 72 -- .../namelists/namelist.atmosphere.TEMPLATE | 2 +- .../namelists/namelist.init_atmosphere.LBCS | 48 ++ .../namelist.init_atmosphere.TEMPLATE | 3 +- scripts/namelists/namelist.wps.TEMPLATE | 4 +- .../stream_list.atmosphere.diagnostics | 72 -- .../stream_list.atmosphere.diagnostics.CD-CT | 695 ------------------ .../stream_list.atmosphere.diagnostics.GCC | 72 -- scripts/namelists/streams.atmosphere.TEMPLATE | 11 +- .../namelists/streams.init_atmosphere.LBCS | 20 + scripts/setenv.bash | 4 + scripts/stools/setenv_PBS_ian_cray.bash | 11 +- scripts/stools/setenv_PBS_ian_gnu.bash | 12 +- scripts/stools/setenv_PBS_ian_intel.bash | 12 +- scripts/stools/setenv_SLURM_egeon_gnu.bash | 12 +- .../stools/submit_SLURM_egeon.bash_TEMPLATE | 4 +- 32 files changed, 1334 insertions(+), 2172 deletions(-) delete mode 100755 scripts/make_degrib.bash create mode 100755 scripts/make_degrib_ERA5.bash create mode 100755 scripts/make_degrib_GFS.bash create mode 100755 scripts/make_lbcs.bash delete mode 100755 scripts/namelists/include_fields.diag delete mode 100755 scripts/namelists/include_fields.diag.CD-CT delete mode 100755 scripts/namelists/include_fields.diag.GCC create mode 100755 scripts/namelists/namelist.init_atmosphere.LBCS delete mode 100755 scripts/namelists/stream_list.atmosphere.diagnostics delete mode 100755 scripts/namelists/stream_list.atmosphere.diagnostics.CD-CT delete mode 100755 scripts/namelists/stream_list.atmosphere.diagnostics.GCC create mode 100755 scripts/namelists/streams.init_atmosphere.LBCS diff --git a/README.md b/README.md index 9a984fc..8929f0a 100755 --- a/README.md +++ b/README.md @@ -1,66 +1,5 @@ -# Scripts CD-CT (Continuos Deployment & Continuous Testing) for MONAN (Model for Ocean-laNd-Atmosphere PredictioN) - -## History - -**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. -- Adjusted to run using 16 nodes and 1024 cores. -- Operational vars (cldfrac_tot_UPP, ter, landmask, and omega) table is also in this version. -- Add flags for ~10Km mesh resolution. - -**1.2.0** -- This version should work only with MONAN-Model 1.3.1/ (3D native model variables) -- Was added some warnings to users regarding the choice of MONAN-Model versions versus scripts_CD-CT versions: -- scripts_CD-CT versions up to 1.1.0 run MONAN-Model only versions up to 1.3.0 -- scripts_CD-CT versions 1.2.0 onwards run MONAN-Model only versions 1.3.1 onwards -- -**1.1.0** -- Fixed `model.bash` script to check generated files with flexible output_interval field (no longer with constant 3h). -- Now it is possible to run all 4 phases with 00z, 06z, 12z and 18z. -- Namelist `namelist.atmosphere.TEMPLATE` was updated to work with MONAN-Model version 1.3.0/, especific `convection_permitting_monan` phisic suite. - -**1.0.1** -- Fixing nIsobaricLev(22) in convert_mpas.nml and config_dt(15000) in run_model script. - -**1.0.0** -- Changing integration method (3rd Rung-Kutta), time step (150s), nlat and nlon for post processing at 15km and minor adjustments. -- adding configurations for 15km. -- correction on logic of how many submiting will be computed if nfiles were little then maxpostpernodes. -- new parallel post. -- Target_domain values have been fixed. -- Add copy configs files from convert_mpas to dataout/YYYYMMDDHH/Post/logs (MODEL config files and VERSION.txt also). -- fix in config_len_disp in script 3.run_model.bash . -- modifications in datain/namelists/namelist.atmosphere.TEMPLATE and 3.run_model.bash from Saulo's PR 8 . - -**0.2.2** -- Fixed the value of config_bucket_update in namelist.atmosphere. -- Fixed module load in opengrads in setenv. - -**0.2.1** -- Switch of configs (CONFIG_DT, CONFIG_LEN_DISP, target_domain, etc.) 120 and 24 km. -- Clean temporary outputs files option add in the 3.run_model.bash script. -- Verification if all the output files were created ok from model phase. - -**0.2.0** -- Including copy of the GF_ConvPar_nml from model source to scripts folder. -- Changing physics suite to mesoscale_reference_monan. -- Changing the output model interval to 3h adjusting the post processing. -- Changing the radtlw and radtsw interval to 30m, and conv interval to 15m. - -**0.1.1** -- Fixing bug on pressure levels description in post files -- Fixing variables name in post files - -**0.1.0** -- Used parameterization to select the date for execution. -- Created cron script for daily executions. -- Post-processing is with the new version of convert_mpas, enabling the use of grads. -- 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. +# Scripts CD-CT +Continuos Deployment & Continuous Testing for MONAN (Model for Ocean-laNd-Atmosphere PredictioN). ## Get Started @@ -69,18 +8,19 @@ Cloning this repo: `git clone https://github.com/monanadmin/scripts_CD-CT.git` you will get this directories: ~~~ -datain/namelists scripts +scripts/namelists +scripts/stools ~~~ -- The `datain/namelists` directory contains all versioned namelists needded for run and compile all phases of model; - The `scripts` directory is the most important folder that contains all the scripts that you will need to install, compile, run, and produce produtcs of the A-MONAN model. +- The `scripts/namelists` directory contains all versioned namelists needded for run and compile all phases of model; +- The `scripts/stools` directory contains template scripts for execution on SLURM and PBS, and scripts for the operation of the PBS_Intel, PBS_GNU, and PBS_Cray environments. - -You will need to execute only 6 steps scripts, so you can run the Atmospheric MONAN Model: +You only need to execute the following four scripts to run the MONAN Atmospheric Model. -**1. Install the model:** +**1. Install the model and configuring the execution mode (Global or Regional):** - First you need to get a **fork repository** in your github account of a MONAN oficial repo: `https://github.com/monanadmin/MONAN-Model`. Attention! Uncheck "Copy the main branch only" in the fork creation step to copy all branches. - The you can install the model in your work directory by running: @@ -117,6 +57,29 @@ Where: After running the first step, it will clone the MONAN model from your fork repo in a `source` diretory. +**Configuring the execution mode (Global or Regional):** + +Default execution mode is "Global", to set to Regional mode follows: + +``` +$ vi scripts/setenv.bash +(...) +MODERUN=R | Option: R=Regional and G=Global. +LBCINT=21600 | Option: Integer value for the lateral boundary condition update interval. +``` +After this change, you must specify the regional grid in the RESOLUTION parameter during the subsequent steps (2, 3, and 4) listed below. + +Currently, the available regional options are: + +``` +"655362.REG.AMS_CAR" = 30km for South America and the Caribbean +"5898242.REG.AMS_CAR" = 10km for South America and the Caribbean +"23592962.REG.AMS_CAR" = 5km for South America and the Caribbean +``` + +**Note 1:** For regional runs, it is necessary to have the initial condition files available, in addition to the first forecast or analysis based on the interval provided by LBCINT for generating the LBC files. + +**Note 2:** If you wish to use your own regional mesh, you must copy the "x1.your_mesh.grid.nc" and "x1.your_mesh.graph.info" files to the "datain/fixed" folder and create an if-block for the automatic configuration of CONFIG_DT in script 3, as well as for the LAT and LON settings used by Convert_MPAS in script 4. **2. Prepare the Initial Conditions for the model:** @@ -125,7 +88,7 @@ After running the first step, it will clone the MONAN model from your fork repo ~~~ 2.pre_processing.bash EXP_NAME RESOLUTION LABELI FCST -EXP_NAME :: Forcing: GFS +EXP_NAME :: Forcing: GFS or ERA :: Others options to be added later... RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km) LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100 @@ -142,7 +105,7 @@ FCST :: Forecast hours, e.g.: 24 or 36, etc. ~~~ 3.run_model.bash EXP_NAME RESOLUTION LABELI FCST -EXP_NAME :: Forcing: GFS +EXP_NAME :: Forcing: GFS or ERA :: Others options to be added later... RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km) LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100 @@ -159,7 +122,7 @@ FCST :: Forecast hours, e.g.: 24 or 36, etc. ~~~ 4.run_post.bash EXP_NAME RESOLUTION LABELI FCST -EXP_NAME :: Forcing: GFS +EXP_NAME :: Forcing: GFS or ERA :: Others options to be added later... RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km) LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100 @@ -168,3 +131,71 @@ FCST :: Forecast hours, e.g.: 24 or 36, etc. 24 hour forcast example: ./4.run_post.bash GFS 1024002 2024010100 24 ~~~ + +## History + +**Develop** + +- New functionality for Regional simulations. +- Option to use ERA5 data as an initial condition. + +**1.4.0** +- Compatibility with MONAN 1.4.3-rc. +- Support for multi-environment: 'Jaci' supercomputer (intel and gnu compilers and PBS scheduler) and 'Egeon' cluster (gnu compiler and SLURM scheduler). + +**1.3.0** +- This version was created to work in operational runs. +- Adjusted to run using 16 nodes and 1024 cores. +- Operational vars (cldfrac_tot_UPP, ter, landmask, and omega) table is also in this version. +- Add flags for ~10Km mesh resolution. + +**1.2.0** +- This version should work only with MONAN-Model 1.3.1/ (3D native model variables) +- Was added some warnings to users regarding the choice of MONAN-Model versions versus scripts_CD-CT versions: +- scripts_CD-CT versions up to 1.1.0 run MONAN-Model only versions up to 1.3.0 +- scripts_CD-CT versions 1.2.0 onwards run MONAN-Model only versions 1.3.1 onwards +- +**1.1.0** +- Fixed `model.bash` script to check generated files with flexible output_interval field (no longer with constant 3h). +- Now it is possible to run all 4 phases with 00z, 06z, 12z and 18z. +- Namelist `namelist.atmosphere.TEMPLATE` was updated to work with MONAN-Model version 1.3.0/, especific `convection_permitting_monan` phisic suite. + +**1.0.1** +- Fixing nIsobaricLev(22) in convert_mpas.nml and config_dt(15000) in run_model script. + +**1.0.0** +- Changing integration method (3rd Rung-Kutta), time step (150s), nlat and nlon for post processing at 15km and minor adjustments. +- adding configurations for 15km. +- correction on logic of how many submiting will be computed if nfiles were little then maxpostpernodes. +- new parallel post. +- Target_domain values have been fixed. +- Add copy configs files from convert_mpas to dataout/YYYYMMDDHH/Post/logs (MODEL config files and VERSION.txt also). +- fix in config_len_disp in script 3.run_model.bash . +- modifications in datain/namelists/namelist.atmosphere.TEMPLATE and 3.run_model.bash from Saulo's PR 8 . + +**0.2.2** +- Fixed the value of config_bucket_update in namelist.atmosphere. +- Fixed module load in opengrads in setenv. + +**0.2.1** +- Switch of configs (CONFIG_DT, CONFIG_LEN_DISP, target_domain, etc.) 120 and 24 km. +- Clean temporary outputs files option add in the 3.run_model.bash script. +- Verification if all the output files were created ok from model phase. + +**0.2.0** +- Including copy of the GF_ConvPar_nml from model source to scripts folder. +- Changing physics suite to mesoscale_reference_monan. +- Changing the output model interval to 3h adjusting the post processing. +- Changing the radtlw and radtsw interval to 30m, and conv interval to 15m. + +**0.1.1** +- Fixing bug on pressure levels description in post files +- Fixing variables name in post files + +**0.1.0** +- Used parameterization to select the date for execution. +- Created cron script for daily executions. +- Post-processing is with the new version of convert_mpas, enabling the use of grads. +- 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. + diff --git a/VERSION.txt b/VERSION.txt index 88c5fb8..890fc3e 100755 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -1.4.0 +1.4.0->develop diff --git a/scripts/0.run_all.bash b/scripts/0.run_all.bash index 4fa50e4..723e8cd 100755 --- a/scripts/0.run_all.bash +++ b/scripts/0.run_all.bash @@ -41,9 +41,10 @@ EXECS=${DIRHOMED}/execs; mkdir -p ${EXECS} github_link="https://github.com/monanadmin/MONAN-Model.git" monan_branch=1.4.3-rc convertmpas_branch=1.2.0 -EXP=GFS -RES=1024002 #Options: 40962=120km;163842=60km;655362=30Km;1024002=24km;2621442=15Km;5898242=10Km -YYYYMMDDHHi=2026012000 +EXP=GFS #Options - GFS or ERA +RES=1024002 #Options - Global: 40962=120km; 163842=60km; 655362=30Km; 1024002=24km; 2621442=15Km; 5898242=10Km + #Options - Regional: 655362.REG.AMS_CAR=30km; 5898242.REG.AMS_CAR=10km; 23592962.REG.AMS_CAR=5km +YYYYMMDDHHi=2026070100 #Check dates disponible for the initial condition (CI) using ERA FCST=24 #---------------------------------------------------------------------- diff --git a/scripts/1.install_monan.bash b/scripts/1.install_monan.bash index a797ca1..fb1fc61 100755 --- a/scripts/1.install_monan.bash +++ b/scripts/1.install_monan.bash @@ -219,9 +219,6 @@ MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.atmosphere" make clean CORE=atmosphere make -j 8 ${MAKE_TARG} CORE=atmosphere OPENMP=true USE_PIO2=false PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} -#make -j 8 ${MAKE_TARG} CORE=atmosphere OPENMP=true USE_PIO2=true PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} - -#make -j 8 intel-xd2000 CORE=atmosphere OPENMP=true USE_PIO2=false PRECISION=single OPTIMIZATION_LEVEL=O1 FFLAGS_OPT=-O1 CFLAGS_OPT=-O1 CXXFLAGS_OPT=-O1 2>&1 | tee \${MAKE_OUT_FILE} #CR: TODO: put verify here if executable was created ok @@ -235,9 +232,6 @@ MAKE_OUT_FILE="make_\${DATE_TIME_NOW}_.output.init_atmosphere" make clean CORE=init_atmosphere make -j 8 ${MAKE_TARG2} CORE=init_atmosphere OPENMP=true USE_PIO2=false PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} -#make -j 8 ${MAKE_TARG2} CORE=init_atmosphere OPENMP=true USE_PIO2=true PRECISION=single 2>&1 | tee \${MAKE_OUT_FILE} - -#make -j 8 intel-xd2000 CORE=init_atmosphere OPENMP=true USE_PIO2=false PRECISION=single OPTIMIZATION_LEVEL=O1 FFLAGS_OPT=-O1 CFLAGS_OPT=-O1 CXXFLAGS_OPT=-O1 2>&1 | tee \${MAKE_OUT_FILE} mv ${MONANDIR}/init_atmosphere_model ${EXECS} diff --git a/scripts/2.pre_processing.bash b/scripts/2.pre_processing.bash index baba5e6..2cd6c90 100755 --- a/scripts/2.pre_processing.bash +++ b/scripts/2.pre_processing.bash @@ -25,7 +25,7 @@ then echo "" echo "${0} EXP_NAME/OP RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS" + echo "EXP_NAME :: Forcing: GFS or 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)" @@ -52,7 +52,7 @@ echo "---- Pre Processing ----" echo "" -# Standart directories variables:--------------------------------------- +# Standard directories variables:--------------------------------------- DIRHOMES=${DIR_SCRIPTS}/scripts_CD-CT; mkdir -p ${DIRHOMES} DIRHOMED=${DIR_DADOS}/scripts_CD-CT; mkdir -p ${DIRHOMED} SCRIPTS=${DIRHOMES}/scripts; mkdir -p ${SCRIPTS} @@ -80,8 +80,6 @@ final_date=${yyyymmddhhf:0:4}-${yyyymmddhhf:4:2}-${yyyymmddhhf:6:2}_${yyyymmddhh export DIRRUN=${DIRHOMED}/run.${YYYYMMDDHHi}; rm -fr ${DIRRUN}; mkdir -p ${DIRRUN} #------------------------------------------------------- - - echo -e "${GREEN}==>${NC} Scripts_CD-CT last commit: \n" git log | head -1 @@ -94,32 +92,66 @@ then 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=ERA.\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 ERA 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=ERA.\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=ERA.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi #---------------------------------------------------------------------------------- - - +# LBCs phase:------------------------------------------------------------ +if [[ $MODERUN == "R" ]]; then + echo -e "${GREEN}==>${NC} Regional simulation: submitting Init Atmosphere to generate lateral boundary conditions...\n" + time ./make_lbcs.bash ${EXP} ${RES} ${YYYYMMDDHHi} ${FCST} +elif [[ $MODERUN == "G" ]]; then + echo -e "${GREEN}==>${NC} Global simulation: no need for lateral boundary conditions.\n" +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} LBCs phase fails! Please select MODERUN=R or G.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi +#---------------------------------------------------------------------------------- diff --git a/scripts/3.run_model.bash b/scripts/3.run_model.bash index a5713dc..3fd7e7b 100755 --- a/scripts/3.run_model.bash +++ b/scripts/3.run_model.bash @@ -8,10 +8,10 @@ umask 022 # # Performs the following tasks: # -# o VCheck all input files before -# o Creates the submition script +# o Check all input files before +# o Creates the submission script # o Submit the model -# o Veriffy all files generated +# o Verify all files generated # # #-----------------------------------------------------------------------------# @@ -23,7 +23,7 @@ then echo "" echo "${0} [EXP_NAME/OP] RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS" + echo "EXP_NAME :: Forcing: GFS or 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." @@ -89,30 +89,62 @@ printf -v t_strout "%02d:%02d:%02d" "$h" "$m" "$s" # From now on, CONFI_LEN_DISP becames cte = 0.0, pickin up this value from static file. # Calculating default parameters for different resolutions -if [ $RES -eq 1024002 ]; then #24Km +# global mesh +if [[ "$RES" == "40962" ]]; then #120Km + CONFIG_DT=600.0 + CONFIG_CONV_INTERVAL="00:15:00" +elif [[ "$RES" == "163842" ]]; then #60Km + CONFIG_DT=300.0 + CONFIG_CONV_INTERVAL="00:15:00" +elif [[ "$RES" == "655362" ]]; then #30Km + CONFIG_DT=150.0 + CONFIG_CONV_INTERVAL="00:15:00" +elif [[ "$RES" == "1024002" ]]; then #24Km CONFIG_DT=150.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 2621442 ]; then #15Km +elif [[ "$RES" == "2621442" ]]; then #15Km CONFIG_DT=90.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 40962 ]; then #120Km - CONFIG_DT=600.0 +elif [[ "$RES" == "5898242" ]]; then #10Km + CONFIG_DT=60.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 163842 ]; then #60Km - CONFIG_DT=300.0 +elif [[ "$RES" == "23592962" ]]; then #5km + CONFIG_DT=30.0 + CONFIG_CONV_INTERVAL="00:15:00" +elif [[ "$RES" == "65536002" ]]; then #3Km + CONFIG_DT=18.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 655362 ]; then #30Km +# regional mesh +elif [[ "$RES" == "655362.REG.AMS_CAR" ]]; then #30 km (AMS + Caribe) CONFIG_DT=150.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 5898242 ]; then #10Km +elif [[ "$RES" == "5898242.REG.AMS_CAR" ]]; then #10 km (AMS + Caribe) CONFIG_DT=60.0 CONFIG_CONV_INTERVAL="00:15:00" -elif [ $RES -eq 65536002 ]; then #3Km - CONFIG_DT=18.0 +elif [[ "$RES" == "23592962.REG.AMS_CAR" ]]; then #5 km (AMS + Caribe) + CONFIG_DT=30.0 CONFIG_CONV_INTERVAL="00:15:00" +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} [${0}] Simulation parameters for resolution $RES have not been set! Edit them in '3.run_model.bash'.\n" + exit -1 fi #------------------------------------------------------- +# Setting configuration to apply or not lateral boundary conditions and output filename +if [[ $MODERUN == "R" ]]; then + APPLY_LBCS=true + RORG=R +elif [[ $MODERUN == "G" ]]; then + APPLY_LBCS=false + RORG=G +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} Atmosphere phase fails! Please select MODERUN=R (Regional) or MODERUN=G (Global) in 'setenv.bash' so that MONAN knows whether to read or not lateral boundary conditions.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi +#------------------------------------------------------- # Calculating final forecast dates in model namelist format: DD_HH:MM:SS # using: start_date(yyyymmdd) + FCST(hh) : @@ -128,18 +160,16 @@ then cd ${DATAIN}/fixed echo -e "${GREEN}==>${NC} downloading meshes tgz files ... \n" wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}.tar.gz - wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}_static.tar.gz tar -xzvf x1.${RES}.tar.gz - tar -xzvf x1.${RES}_static.tar.gz fi echo -e "${GREEN}==>${NC} Creating x1.${RES}.graph.info.part.${cores} ... \n" cd ${DATAIN}/fixed gpmetis -minconn -contig -niter=200 x1.${RES}.graph.info ${cores} - rm -fr x1.${RES}.tar.gz x1.${RES}_static.tar.gz + rm -fr x1.${RES}.tar.gz fi -files_needed=("${SCRIPTS}/namelists/stream_list.atmosphere.output" ""${SCRIPTS}/namelists/stream_list.atmosphere.diagnostics${VARTABLE} "${SCRIPTS}/namelists/stream_list.atmosphere.surface" "${EXECS}/atmosphere_model" "${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc" "${DATAIN}/fixed/Vtable.GFS") +files_needed=("${SCRIPTS}/namelists/stream_list.atmosphere.output" ""${SCRIPTS}/namelists/stream_list.atmosphere.diagnostics${VARTABLE} "${SCRIPTS}/namelists/stream_list.atmosphere.surface" "${EXECS}/atmosphere_model" "${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc" "${DATAIN}/fixed/Vtable.${EXP}") for file in "${files_needed[@]}" do if [ ! -s "${file}" ] @@ -157,16 +187,18 @@ cp -f ${DATAIN}/fixed/*DATA ${DIRRUN} cp -f ${DATAIN}/fixed/x1.${RES}.static.nc ${DIRRUN} cp -f ${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores} ${DIRRUN} cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ${DIRRUN} -cp -f ${DATAIN}/fixed/Vtable.GFS ${DIRRUN} +cp -f ${DATAIN}/fixed/Vtable.${EXP} ${DIRRUN} - -if [ ${EXP} = "GFS" ] +if [[ $MODERUN == "R" ]]; then + cp -f ${DATAOUT}/${YYYYMMDDHHi}/Pre/lbc*.nc ${DIRRUN} +fi +if [[ ${EXP} == "GFS" || ${EXP} == "ERA" ]] then sed -e "s,#LABELI#,${start_date},g;s,#FCSTS#,${DD_HHMMSS_forecast},g;s,#RES#,${RES},g; -s,#CONFIG_DT#,${CONFIG_DT},g;s,#CONFIG_LEN_DISP#,${CONFIG_LEN_DISP},g;s,#CONFIG_CONV_INTERVAL#,${CONFIG_CONV_INTERVAL},g" \ +s,#CONFIG_DT#,${CONFIG_DT},g;s,#CONFIG_LEN_DISP#,${CONFIG_LEN_DISP},g;s,#CONFIG_CONV_INTERVAL#,${CONFIG_CONV_INTERVAL},g;s,#APPLY_LBCS#,${APPLY_LBCS},g" \ ${SCRIPTS}/namelists/namelist.atmosphere.TEMPLATE > ${DIRRUN}/namelist.atmosphere - sed -e "s,#RES#,${RES},g;s,#CIORIG#,${EXP},g;s,#LABELI#,${YYYYMMDDHHi},g;s,#NLEV#,${NLEV},g" \ + sed -e "s,#RES#,${RES},g;s,#RORG#,${RORG},g;s,#LBCINT#,${LBCINT},g;s,#CIORIG#,${EXP},g;s,#LABELI#,${YYYYMMDDHHi},g;s,#NLEV#,${NLEV},g" \ ${SCRIPTS}/namelists/streams.atmosphere.TEMPLATE > ${DIRRUN}/streams.atmosphere fi cp -f ${SCRIPTS}/namelists/stream_list.atmosphere.output ${DIRRUN} @@ -210,10 +242,10 @@ cd ${DIRRUN} date beg_secs=\`date +"%s"\` -if [ "$HOSTNAME" = "egeon" ]; then +if [ ${SCHEDULER_SYSTEM} == "SLURM" ]; then echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" time mpirun -np ${MODEL_ncores} ./\${executable} -else +elif [ ${SCHEDULER_SYSTEM} == "PBS" ]; then echo "-- PBS_JOBID: \$PBS_JOBID" time mpirun --ppn ${MODEL_ncpn} -np ${MODEL_ncores} --depth=${MODEL_nthreads} --cpu-bind depth ./\${executable} fi @@ -262,6 +294,15 @@ case "${SCHEDULER_SYSTEM}" in esac mv ${DIRRUN}/model.bash ${DATAOUT}/${YYYYMMDDHHi}/Model/logs +if [ ${SCHEDULER_SYSTEM} = "SLURM" ]; then + : # Slurm já gera JOBID na submissão. +elif [ ${SCHEDULER_SYSTEM} = "PBS" ]; then + 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} +fi +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.o.* +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Model/logs/model.bash.e.* #-----Loop que verifica se os arquivos foram gerados corretamente (>0)----- output_interval=${t_strouthor} @@ -271,7 +312,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 @@ -282,10 +323,4 @@ 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 f6b082b..e8ce2ea 100755 --- a/scripts/4.run_post.bash +++ b/scripts/4.run_post.bash @@ -1,5 +1,6 @@ #!/bin/bash umask 022 + #-----------------------------------------------------------------------------# # !SCRIPT: run_post # @@ -23,7 +24,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." @@ -66,7 +67,6 @@ 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}" @@ -83,60 +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 - NLAT=721 #180/0.25 - NLON=1441 #360/0.25 +# global mesh +if [[ "$RES" == "40962" ]]; then #120Km + NLAT=151 #180/1.2 + NLON=301 #360/1.2 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 -elif [ $RES -eq 2621442 ]; then #15Km - NLAT=1201 #180/0.15 - NLON=2401 #360/0.15 +elif [[ "$RES" == "163842" ]]; then #60Km + NLAT=301 #180/0.6 + NLON=601 #360/0.6 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 -elif [ $RES -eq 40962 ]; then #120Km - NLAT=150 #180/1.2 - NLON=300 #360/1.2 +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 -eq 163842 ]; then #60Km - NLAT=301 #180/0.6 - NLON=601 #360/0.6 +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 655362 ]; then #30Km - NLAT=601 #180/0.3 - NLON=1201 #360/0.3 +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" == "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 -eq 5898242 ]; then #10Km - NLAT=1801 #180/0.10 (+1) - NLON=3601 #360/0.10 (+1) +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 65536002 ]; then #3Km +elif [[ "$RES" == "65536002" ]]; then #3Km NLAT=6001 #180/0.03 NLON=12001 #360/0.03 STARTLAT=-90.0 STARTLON=0.0 ENDLAT=90.0 ENDLON=360.0 +# regional mesh +elif [[ "$RES" == "655362.REG.AMS_CAR" ]]; then #30 km (AMS + Caribe) + NLAT=354 #106/0.3 +1 + NLON=301 #90/0.3 +1 + STARTLAT=-64.0 + ENDLAT=42 + STARTLON=254.0 + ENDLON=344.0 +elif [[ "$RES" == "5898242.REG.AMS_CAR" ]]; then #10 km (AMS + Caribe) + NLAT=1061 #106/0.1 +1 + NLON=901 #90/0.1 +1 + STARTLAT=-64.0 + ENDLAT=42.0 + STARTLON=254.0 + ENDLON=344.0 +elif [[ "$RES" == "23592962.REG.AMS_CAR" ]]; then #5 km (AMS + Caribe) + NLAT=2121 #106/0.05 +1 + NLON=1801 #90/0.05 +1 + STARTLAT=-64.0 + ENDLAT=42.0 + STARTLON=254.0 + ENDLON=344.0 fi #------------------------------------------------------- @@ -218,7 +262,12 @@ cat << EOSH >> ${DIRRUN}/PostAtmos_node.${node}.sh cd ${DIRRUN} . ${SCRIPTS}/setenv.bash -echo "-- PBS_JOBID: \$PBS_JOBID" + +if [ ${SCHEDULER_SYSTEM} == "SLURM" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" +elif [ ${SCHEDULER_SYSTEM} == "PBS" ]; then + echo "-- PBS_JOBID: \$PBS_JOBID" +fi chmod 755 ${DIRRUN}/* @@ -242,7 +291,7 @@ do chmod 755 * hh=${YYYYMMDDHHi:8:2} currentdate=\$(date -d "${YYYYMMDDHHi:0:8} \${hh}:00:00 \$(echo "(\${i}-1)*${t_strout:0:2}" | bc) hours \$(echo "(\${i}-1)*${t_strout:3:2}" | bc) minutes \$(echo "(\${i}-1)*${t_strout:6:2}" | bc) seconds" +"%Y%m%d%H.%M.%S") - diag_name=MONAN_DIAG_G_MOD_${EXP}_${YYYYMMDDHHi}_\${currentdate}.x${RES}L${N_MODEL_LEV}.nc + diag_name=MONAN_DIAG_${RORG}_MOD_${EXP}_${YYYYMMDDHHi}_\${currentdate}.x${RES}L${N_MODEL_LEV}.nc echo "" echo "executando convert mpas" chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Model/* @@ -258,7 +307,7 @@ do i=\$(printf "%04d" \${ii}) hh=${YYYYMMDDHHi:8:2} currentdate=\$(date -d "${YYYYMMDDHHi:0:8} \${hh}:00:00 \$(echo "(\${i}-1)*${t_strout:0:2}" | bc) hours \$(echo "(\${i}-1)*${t_strout:3:2}" | bc) minutes \$(echo "(\${i}-1)*${t_strout:6:2}" | bc) seconds" +"%Y%m%d%H.%M.%S") - diag_name_post=MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_\${currentdate}.x${RES}L${N_MODEL_LEV}.nc + diag_name_post=MONAN_DIAG_${RORG}_POS_${EXP}_${YYYYMMDDHHi}_\${currentdate}.x${RES}L${N_MODEL_LEV}.nc cd ${DIRRUN}/dir.\${i} chmod 755 * @@ -270,7 +319,6 @@ done wait EOSH - chmod a+x ${DIRRUN}/PostAtmos_node.${node}.sh chmod 755 ${DIRRUN}/* @@ -295,7 +343,6 @@ EOSH # ;; esac - inicio=$((fim + 1)) temp=$((fim + maxpostpernode)) fim=$(( temp < nfiles ? temp : nfiles )) @@ -340,7 +387,12 @@ cat << EOSH >> ${DIRRUN}/PostAtmos_node.${node}.sh cd ${DIRRUN} . ${SCRIPTS}/setenv.bash -echo "-- PBS_JOBID: \$PBS_JOBID" + +if [ ${SCHEDULER_SYSTEM} == "SLURM" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" +elif [ ${SCHEDULER_SYSTEM} == "PBS" ]; then + echo "-- PBS_JOBID: \$PBS_JOBID" +fi # Saving important files to the logs directory: cp -f ${EXECS}/CONVMPAS-VERSION.txt ${DATAOUT}/${YYYYMMDDHHi}/Post @@ -387,10 +439,14 @@ 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=${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 -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 - -#Se nao existir CI no diretorio do IO, -# busca no nosso dir /beegfs/monan/CIs, se nao existir tbm, aborta! -#CR: BNDDIR should be setted just for EGEON machine -#CR: some local variables were mobed into the SLURM section, particularly for egeon - -OPERDIREXP=${OPERDIR}/${EXP} -BNDDIR=${OPERDIREXP}/0p25/brutos/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi:4:2}/${YYYYMMDDHHi:6:2}/${YYYYMMDDHHi:8:2} - - -# Se nao existir CI no diretorio do IO, -# busca no nosso dir /beegfs/monan/CIs (Egeon) , /p/monan/CIs (xd2000) se nao existir tbm, aborta! -#CR: maybe this if should belong to the SLURM kind of running... -if [ ! -s ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ] -then - if [ ! -s ${GCCCIS}/${EXP}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ] - then - echo -e "${RED}==>${NC}Condicao de contorno inexistente !" - echo -e "${RED}==>${NC}Check ${BNDDIR} or." - echo -e "${RED}==>${NC}Check ${GCCCIS}/${EXP}" - exit 1 - else - BNDDIR=${GCCCIS}/${EXP}/${YYYYMMDDHHi:0:4}/${YYYYMMDDHHi} - fi -fi - - -#files_needed=("${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/Vtable.${EXP}" "${EXECS}/ungrib.exe" "${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2") - -files_needed=("${DATAIN}/fixed/x1.${RES}.static.nc" "${DATAIN}/fixed/Vtable.${EXP}" "${EXECS}/ungrib.exe" "${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2") - -for file in "${files_needed[@]}" -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 ${BNDDIR}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DATAIN}/${YYYYMMDDHHi} -cp -f ${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 ${DIRRUN} -cp -f ${SCRIPTS}/setenv.bash ${DIRRUN} -cp -f ${SCRIPTS}/link_grib.csh ${DIRRUN} -rm -f ${DIRRUN}/degrib.bash - - -if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] -then - sed -e "s,#JOBNAME#,${DEGRIB_jobname},g; - s,#NNODES#,${DEGRIB_nnodes},g; - s,#NCPUS#,${DEGRIB_ncpus},g; - s,#NTASKS#,${DEGRIB_ncores},g; - s,#NTASKSPNODE#,${DEGRIB_ncpn},g; - s,#NTHREADS#,${DEGRIB_nthreads},g; - s,#PARTITION#,${DEGRIB_QUEUE},g; - s,#WALLTIME#,${DEGRIB_walltime},g; - s,#OUTPUTJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o,g; - s,#ERRORJOB#,${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e,g" \ - ${SCRIPTS}/stools/submit_${SYSTEM_KEY}.bash_TEMPLATE > ${DIRRUN}/degrib.bash -else - echo "#!/bin/bash " > ${DIRRUN}/degrib.bash -fi - -cat << EOF0 >> ${DIRRUN}/degrib.bash - -ulimit -s unlimited -ulimit -c unlimited -ulimit -v unlimited - -export PMIX_MCA_gds=hash - -export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${HOME}/local/lib64 - -cd ${DIRRUN} - -. ${SCRIPTS}/setenv.bash - -echo "-- PBS_JOBID: \$PBS_JOBID" - -ldd ungrib.exe - -rm -f GRIBFILE.* namelist.wps - - -sed -e "s,#LABELI#,${start_date},g;s,#PREFIX#,GFS,g" \ - ${DIRRUN}/namelist.wps.TEMPLATE > ${DIRRUN}/namelist.wps - -echo "" -./link_grib.csh ${DATAIN}/${YYYYMMDDHHi}/gfs.t${YYYYMMDDHHi:8:2}z.pgrb2.0p25.f000.${YYYYMMDDHHi}.grib2 - -chmod 755 * -echo "" -date -echo "submetendo jobs ungrib" - -time mpirun -np 1 ./ungrib.exe - - -date - - -grep "Successful completion of program ungrib.exe" ${DIRRUN}/ungrib.log >& /dev/null - -if [ \$? -ne 0 ]; then - echo " BUMMER: Ungrib generation failed for some yet unknown reason." - echo " " - tail -10 ${DIRRUN}/ungrib.log - echo " " - exit 21 -fi - -# -# clean up and remove links -# - mv ungrib.log ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/ungrib.${start_date}.log - mv namelist.wps ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/namelist.${start_date}.wps - mv GFS\:${start_date:0:13} ${DATAOUT}/${YYYYMMDDHHi}/Pre - - rm -fr ${DATAIN}/${YYYYMMDDHHi} - -echo "End of degrib Job" - - -EOF0 -chmod a+x ${DIRRUN}/degrib.bash - - -case "${SCHEDULER_SYSTEM}" in - SLURM) - echo -e "${GREEN}==>${NC} Sbatch degrib.bash...\n" - cd ${DIRRUN} - sbatch --wait ${DIRRUN}/degrib.bash - ;; - PBS) - echo -e "${GREEN}==>${NC} qsub degrib.bash...\n" - cd ${DIRRUN} - qsub -W block=true ${DIRRUN}/degrib.bash - ;; -# 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 -chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* - -JOBID=$(sed -n '4p' ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o | awk '{print $3}' | sed "s/.pbs-ha//g") -mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o.${JOBID} -mv ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e.${JOBID} -chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.o.${JOBID} -chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib.e.${JOBID} - -rm -fr ${DIRRUN} diff --git a/scripts/make_degrib_ERA5.bash b/scripts/make_degrib_ERA5.bash new file mode 100755 index 0000000..5a67015 --- /dev/null +++ b/scripts/make_degrib_ERA5.bash @@ -0,0 +1,324 @@ +#!/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 ERA 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 + +if [ ${SCHEDULER_SYSTEM} == "SLURM" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" +elif [ ${SCHEDULER_SYSTEM} == "PBS" ]; then + echo "-- PBS_JOBID: \$PBS_JOBID" +fi + +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 ERA 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 + +if [ ${SCHEDULER_SYSTEM} == "SLURM" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" +elif [ ${SCHEDULER_SYSTEM} == "PBS" ]; then + echo "-- PBS_JOBID: \$PBS_JOBID" +fi + +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 +mv ${DIRRUN}/degrib_${EXP}.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs + +if [ ${SCHEDULER_SYSTEM} = "SLURM" ]; then + : # Slurm já gera JOBID na submissão. +elif [ ${SCHEDULER_SYSTEM} = "PBS" ]; then + 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} +fi +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o.* +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e.* + +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 + +chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* +rm -fr ${DIRRUN} diff --git a/scripts/make_degrib_GFS.bash b/scripts/make_degrib_GFS.bash new file mode 100755 index 0000000..a38a75b --- /dev/null +++ b/scripts/make_degrib_GFS.bash @@ -0,0 +1,329 @@ +#!/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 + +if [ ${SCHEDULER_SYSTEM} == "SLURM" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" +elif [ ${SCHEDULER_SYSTEM} == "PBS" ]; then + echo "-- PBS_JOBID: \$PBS_JOBID" +fi + +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 + +if [ ${SCHEDULER_SYSTEM} == "SLURM" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" +elif [ ${SCHEDULER_SYSTEM} == "PBS" ]; then + echo "-- PBS_JOBID: \$PBS_JOBID" +fi + +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 +mv ${DIRRUN}/degrib_${EXP}.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs + +if [ ${SCHEDULER_SYSTEM} = "SLURM" ]; then + : # Slurm já gera JOBID na submissão. +elif [ ${SCHEDULER_SYSTEM} = "PBS" ]; then + 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} +fi +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.o.* +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/degrib_${EXP}.e.* + +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 + +chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* +rm -fr ${DIRRUN} diff --git a/scripts/make_initatmos.bash b/scripts/make_initatmos.bash index 186a8e7..f2f2715 100755 --- a/scripts/make_initatmos.bash +++ b/scripts/make_initatmos.bash @@ -1,7 +1,6 @@ #!/bin/bash umask 022 - if [ $# -ne 4 ] then echo "" @@ -58,9 +57,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 ] @@ -69,17 +65,14 @@ then echo -e "${GREEN}==>${NC} downloading meshes tgz files ... \n" cd ${DATAIN}/fixed wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}.tar.gz - wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}_static.tar.gz tar -xzvf x1.${RES}.tar.gz - tar -xzvf x1.${RES}_static.tar.gz fi echo -e "${GREEN}==>${NC} Creating x1.${RES}.graph.info.part.${cores} ... \n" cd ${DATAIN}/fixed gpmetis -minconn -contig -niter=200 x1.${RES}.graph.info ${cores} - rm -fr x1.${RES}.tar.gz x1.${RES}_static.tar.gz + rm -fr x1.${RES}.tar.gz fi - files_needed=("${SCRIPTS}/namelists/namelist.init_atmosphere.TEMPLATE" "${SCRIPTS}/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 @@ -91,14 +84,18 @@ 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 - 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} @@ -110,7 +107,6 @@ chmod 755 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* rm -f ${DIRRUN}/initatmos.bash - if [ ${SCHEDULER_SYSTEM} != "GENERIC" ] then sed -e "s,#JOBNAME#,${INITATMOS_jobname},g; @@ -136,18 +132,16 @@ ulimit -c unlimited ulimit -v unlimited ulimit -s unlimited - cd ${DIRRUN} . ${SCRIPTS}/setenv.bash - date beg_secs=\`date +"%s"\` -if [ "$HOSTNAME" = "egeon" ]; then +if [ ${SCHEDULER_SYSTEM} == "SLURM" ]; then echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" time mpirun -np ${INITATMOS_ncores} ./\${executable} -else +elif [ ${SCHEDULER_SYSTEM} == "PBS" ]; then echo "-- PBS_JOBID: \$PBS_JOBID" time mpirun --ppn ${INITATMOS_ncpn} -np ${INITATMOS_ncores} --depth=${INITATMOS_nthreads} --cpu-bind depth ./\${executable} fi @@ -158,13 +152,13 @@ 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 mv ${DIRRUN}/namelist.init_atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs mv ${DIRRUN}/streams.init_atmosphere ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs mv ${DIRRUN}/x1.${RES}.init.nc ${DATAOUT}/${YYYYMMDDHHi}/Pre EOF0 + chmod a+x ${DIRRUN}/initatmos.bash case "${SCHEDULER_SYSTEM}" in @@ -186,12 +180,15 @@ 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 [ ${SCHEDULER_SYSTEM} = "SLURM" ]; then + : # Slurm já gera JOBID na submissão. +elif [ ${SCHEDULER_SYSTEM} = "PBS" ]; then + 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} +fi +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.o.* +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/initatmos.bash.e.* if [ ! -s ${DATAOUT}/${YYYYMMDDHHi}/Pre/x1.${RES}.init.nc ] then @@ -200,5 +197,6 @@ 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..3b7bba4 --- /dev/null +++ b/scripts/make_lbcs.bash @@ -0,0 +1,187 @@ +#!/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 [ ${SCHEDULER_SYSTEM} == "SLURM" ]; then + echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" + time mpirun -np ${LBCS_ncores} ./\${executable} +elif [ ${SCHEDULER_SYSTEM} == "PBS" ]; then + 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 +mv ${DIRRUN}/lbcs.bash ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs + +if [ ${SCHEDULER_SYSTEM} = "SLURM" ]; then + : # Slurm já gera JOBID na submissão. +elif [ ${SCHEDULER_SYSTEM} = "PBS" ]; then + 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} +fi +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.o.* +chmod a+r ${DATAOUT}/${YYYYMMDDHHi}/Pre/logs/lbcs.e.* + +if [ -z "$(ls ${DATAOUT}/${YYYYMMDDHHi}/Pre/lbc* 2>/dev/null)" ] +then + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} LBC phase fails! Check logs at ${DATAOUT}/logs/lbcs.* .\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi + +chmod 775 ${DATAOUT}/${YYYYMMDDHHi}/Pre/* +rm -fr ${DIRRUN} diff --git a/scripts/make_static.bash b/scripts/make_static.bash index e38061a..1bde926 100755 --- a/scripts/make_static.bash +++ b/scripts/make_static.bash @@ -67,16 +67,14 @@ then cd ${DATAIN}/fixed echo -e "${GREEN}==>${NC} downloading meshes tgz files ... \n" wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}.tar.gz - wget https://www2.mmm.ucar.edu/projects/mpas/atmosphere_meshes/x1.${RES}_static.tar.gz tar -xzvf x1.${RES}.tar.gz - tar -xzvf x1.${RES}_static.tar.gz chmod 755 * fi echo -e "${GREEN}==>${NC} Creating x1.${RES}.graph.info.part.${cores} ... \n" cd ${DATAIN}/fixed gpmetis -minconn -contig -niter=200 x1.${RES}.graph.info ${cores} - rm -fr x1.${RES}.tar.gz x1.${RES}_static.tar.gz chmod 755 * + rm -fr x1.${RES}.tar.gz fi files_needed=("${EXECS}/init_atmosphere_model" "${DATAIN}/fixed/x1.${RES}.graph.info.part.${cores}" "${DATAIN}/fixed/x1.${RES}.grid.nc" "${SCRIPTS}/namelists/namelist.init_atmosphere.STATIC" "${SCRIPTS}/namelists/streams.init_atmosphere.STATIC") @@ -144,10 +142,10 @@ chmod 755 * date beg_secs=\`date +"%s"\` -if [ "$HOSTNAME" = "egeon" ]; then +if [ ${SCHEDULER_SYSTEM} == "SLURM" ]; then echo "-- SLURM_JOB_ID: \$SLURM_JOB_ID" time mpirun -np ${STATIC_ncores} ./\${executable} -else +elif [ ${SCHEDULER_SYSTEM} == "PBS" ]; then echo "-- PBS_JOBID: \$PBS_JOBID" time mpirun --ppn ${STATIC_ncpn} -np ${STATIC_ncores} --depth=${STATIC_nthreads} --cpu-bind depth ./\${executable} fi @@ -158,7 +156,6 @@ 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 echo " BUMMER: Static generation failed for some yet unknown reason." @@ -173,12 +170,11 @@ echo " ### Static completed - \$(date) ####" echo " ####################################" echo " " - EOF0 + chmod a+x ${DIRRUN}/static.bash rm -fr ${DATAIN}/fixed/x1.${RES}.static.nc - case "${SCHEDULER_SYSTEM}" in SLURM) echo -e "${GREEN}==>${NC} Sbatch static.bash...\n" @@ -202,6 +198,17 @@ mv ${DIRRUN}/streams.init_atmosphere ${DATAOUT}/logs/ mv ${DIRRUN}/namelist.init_atmosphere ${DATAOUT}/logs/ mv log.init_atmosphere.* ${DATAOUT}/logs/ +if [ ${SCHEDULER_SYSTEM} = "SLURM" ]; then + : # Slurm já gera JOBID na submissão. +elif [ ${SCHEDULER_SYSTEM} = "PBS" ]; then + 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} +fi +chmod a+r ${DATAOUT}/logs/static.bash.o.* +chmod a+r ${DATAOUT}/logs/static.bash.e.* +chmod a+r ${DATAOUT}/logs/log.init_atmosphere.* + if [ -s ${DIRRUN}/x1.${RES}.static.nc ] then mv ${DIRRUN}/x1.${RES}.static.nc ${DATAIN}/fixed @@ -211,11 +218,4 @@ else 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 2d6abf4..c2f9110 100755 --- a/scripts/make_template.bash +++ b/scripts/make_template.bash @@ -8,10 +8,10 @@ umask 022 # # Performs the following tasks: # -# o VCheck all input files before -# o Creates the submition script +# o Check all input files before +# o Creates the submission script # o Submit the post -# o Veriffy all files generated +# o Verify all files generated # # #-----------------------------------------------------------------------------# @@ -23,7 +23,7 @@ then echo "" echo "${0} ]EXP_NAME/OP] RESOLUTION LABELI FCST" echo "" - echo "EXP_NAME :: Forcing: GFS" + echo "EXP_NAME :: Forcing: GFS or ERA" echo "RESOLUTION :: number of points in resolution model grid, e.g: 1024002 (24 km)" echo "LABELI :: Initial date YYYYMMDDHH, e.g.: 2024010100" echo "FCST :: Forecast hours, e.g.: 24 or 36, etc." @@ -84,36 +84,10 @@ t_stroutmin=$(echo "${t_stroutsec}/60" | bc) cd ${DIRRUN} - # 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 - 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 @@ -125,9 +99,20 @@ fi output_interval=${t_strouthor} nfiles=$(echo "$FCST/$output_interval + 1" | bc) -diag_name_post=MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_${YYYYMMDDHHi}.00.00.x${RES}L${N_MODEL_LEV}.nc -diag_name_templ=MONAN_DIAG_G_POS_${EXP}_${YYYYMMDDHHi}_%y4%m2%d2%h2.%n2.00.x${RES}L${N_MODEL_LEV}.nc +# Definindo G ou R no MONAN_DIAG +if [[ $MODERUN == "R" ]]; then + RORG=R +elif [[ $MODERUN == "G" ]]; then + RORG=G +else + echo -e "\n${RED}==>${NC} ***** ATTENTION *****\n" + echo -e "${RED}==>${NC} Make post template phase fails! Please select MODERUN=R (Regional) or MODERUN=G (Global) in 'setenv.bash'.\n" + echo -e "${RED}==>${NC} Exiting script. \n" + exit -1 +fi +diag_name_post=MONAN_DIAG_${RORG}_POS_${EXP}_${YYYYMMDDHHi}_${YYYYMMDDHHi}.00.00.x${RES}L${N_MODEL_LEV}.nc +diag_name_templ=MONAN_DIAG_${RORG}_POS_${EXP}_${YYYYMMDDHHi}_%y4%m2%d2%h2.%n2.00.x${RES}L${N_MODEL_LEV}.nc rm -fr ${DIRRUN}/qctlinfo.gs diff --git a/scripts/namelists/include_fields.diag b/scripts/namelists/include_fields.diag deleted file mode 100755 index b39754f..0000000 --- a/scripts/namelists/include_fields.diag +++ /dev/null @@ -1,72 +0,0 @@ -initial_time -xtime -Time -t_iso_levels -zgeo_isobaric -cldfrac_isobaric -temperature_isobaric -dewpoint_isobaric -relhum_isobaric -w_isobaric -uzonal_isobaric -umeridional_isobaric -vorticity_isobaric -height_isobaric -spechum_isobaric -omega_isobaric -rqvblten_isobaric -rthblten_isobaric -rqvcuten_isobaric -rthcuten_isobaric -rthratenlw_isobaric -rthratensw_isobaric -rucuten_isobaric -rvcuten_isobaric -rvblten_isobaric -rublten_isobaric -kzq_isobaric -kzh_isobaric -kzm_isobaric -ni_isobaric -nr_isobaric -qr_isobaric -qs_isobaric -qv_isobaric -qc_isobaric -qg_isobaric -qi_isobaric -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb diff --git a/scripts/namelists/include_fields.diag.CD-CT b/scripts/namelists/include_fields.diag.CD-CT deleted file mode 100755 index 3de9759..0000000 --- a/scripts/namelists/include_fields.diag.CD-CT +++ /dev/null @@ -1,695 +0,0 @@ -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -relhum_15hPa -relhum_20hPa -relhum_30hPa -relhum_50hPa -relhum_70hPa -relhum_100hPa -relhum_150hPa -relhum_200hPa -relhum_250hPa -relhum_300hPa -relhum_400hPa -relhum_500hPa -relhum_600hPa -relhum_700hPa -relhum_825hPa -relhum_850hPa -relhum_875hPa -relhum_900hPa -relhum_925hPa -relhum_950hPa -relhum_975hPa -relhum_1000hPa -geoph_15hPa -geoph_20hPa -geoph_30hPa -geoph_50hPa -geoph_70hPa -geoph_100hPa -geoph_150hPa -geoph_200hPa -geoph_250hPa -geoph_300hPa -geoph_400hPa -geoph_500hPa -geoph_600hPa -geoph_700hPa -geoph_825hPa -geoph_850hPa -geoph_875hPa -geoph_900hPa -geoph_925hPa -geoph_950hPa -geoph_975hPa -geoph_1000hPa -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb -w_15hPa -w_20hPa -w_30hPa -w_50hPa -w_70hPa -w_100hPa -w_150hPa -w_200hPa -w_250hPa -w_300hPa -w_400hPa -w_500hPa -w_600hPa -w_700hPa -w_825hPa -w_850hPa -w_875hPa -w_900hPa -w_925hPa -w_950hPa -w_975hPa -w_1000hPa -uzonal_15hPa -uzonal_20hPa -uzonal_30hPa -uzonal_50hPa -uzonal_70hPa -uzonal_100hPa -uzonal_150hPa -uzonal_200hPa -uzonal_250hPa -uzonal_300hPa -uzonal_400hPa -uzonal_500hPa -uzonal_600hPa -uzonal_700hPa -uzonal_825hPa -uzonal_850hPa -uzonal_875hPa -uzonal_900hPa -uzonal_925hPa -uzonal_950hPa -uzonal_975hPa -uzonal_1000hPa -umeridional_15hPa -umeridional_20hPa -umeridional_30hPa -umeridional_50hPa -umeridional_70hPa -umeridional_100hPa -umeridional_150hPa -umeridional_200hPa -umeridional_250hPa -umeridional_300hPa -umeridional_400hPa -umeridional_500hPa -umeridional_600hPa -umeridional_700hPa -umeridional_825hPa -umeridional_850hPa -umeridional_875hPa -umeridional_900hPa -umeridional_925hPa -umeridional_950hPa -umeridional_975hPa -umeridional_1000hPa -temperature_15hPa -temperature_20hPa -temperature_30hPa -temperature_50hPa -temperature_70hPa -temperature_100hPa -temperature_150hPa -temperature_200hPa -temperature_250hPa -temperature_300hPa -temperature_400hPa -temperature_500hPa -temperature_600hPa -temperature_700hPa -temperature_825hPa -temperature_850hPa -temperature_875hPa -temperature_900hPa -temperature_925hPa -temperature_950hPa -temperature_975hPa -temperature_1000hPa -spechum_15hPa -spechum_20hPa -spechum_30hPa -spechum_50hPa -spechum_70hPa -spechum_100hPa -spechum_150hPa -spechum_200hPa -spechum_250hPa -spechum_300hPa -spechum_400hPa -spechum_500hPa -spechum_600hPa -spechum_700hPa -spechum_825hPa -spechum_850hPa -spechum_875hPa -spechum_900hPa -spechum_925hPa -spechum_950hPa -spechum_975hPa -spechum_1000hPa -rthratenlw_15hPa -rthratenlw_20hPa -rthratenlw_30hPa -rthratenlw_50hPa -rthratenlw_70hPa -rthratenlw_100hPa -rthratenlw_150hPa -rthratenlw_200hPa -rthratenlw_250hPa -rthratenlw_300hPa -rthratenlw_400hPa -rthratenlw_500hPa -rthratenlw_600hPa -rthratenlw_700hPa -rthratenlw_825hPa -rthratenlw_850hPa -rthratenlw_875hPa -rthratenlw_900hPa -rthratenlw_925hPa -rthratenlw_950hPa -rthratenlw_975hPa -rthratenlw_1000hPa -rqvcuten_15hPa -rqvcuten_20hPa -rqvcuten_30hPa -rqvcuten_50hPa -rqvcuten_70hPa -rqvcuten_100hPa -rqvcuten_150hPa -rqvcuten_200hPa -rqvcuten_250hPa -rqvcuten_300hPa -rqvcuten_400hPa -rqvcuten_500hPa -rqvcuten_600hPa -rqvcuten_700hPa -rqvcuten_825hPa -rqvcuten_850hPa -rqvcuten_875hPa -rqvcuten_900hPa -rqvcuten_925hPa -rqvcuten_950hPa -rqvcuten_975hPa -rqvcuten_1000hPa -rqvblten_15hPa -rqvblten_20hPa -rqvblten_30hPa -rqvblten_50hPa -rqvblten_70hPa -rqvblten_100hPa -rqvblten_150hPa -rqvblten_200hPa -rqvblten_250hPa -rqvblten_300hPa -rqvblten_400hPa -rqvblten_500hPa -rqvblten_600hPa -rqvblten_700hPa -rqvblten_825hPa -rqvblten_850hPa -rqvblten_875hPa -rqvblten_900hPa -rqvblten_925hPa -rqvblten_950hPa -rqvblten_975hPa -rqvblten_1000hPa -kzh_15hPa -kzh_20hPa -kzh_30hPa -kzh_50hPa -kzh_70hPa -kzh_100hPa -kzh_150hPa -kzh_200hPa -kzh_250hPa -kzh_300hPa -kzh_400hPa -kzh_500hPa -kzh_600hPa -kzh_700hPa -kzh_825hPa -kzh_850hPa -kzh_875hPa -kzh_900hPa -kzh_925hPa -kzh_950hPa -kzh_975hPa -kzh_1000hPa -kzm_15hPa -kzm_20hPa -kzm_30hPa -kzm_50hPa -kzm_70hPa -kzm_100hPa -kzm_150hPa -kzm_200hPa -kzm_250hPa -kzm_300hPa -kzm_400hPa -kzm_500hPa -kzm_600hPa -kzm_700hPa -kzm_825hPa -kzm_850hPa -kzm_875hPa -kzm_900hPa -kzm_925hPa -kzm_950hPa -kzm_975hPa -kzm_1000hPa -kzq_15hPa -kzq_20hPa -kzq_30hPa -kzq_50hPa -kzq_70hPa -kzq_100hPa -kzq_150hPa -kzq_200hPa -kzq_250hPa -kzq_300hPa -kzq_400hPa -kzq_500hPa -kzq_600hPa -kzq_700hPa -kzq_825hPa -kzq_850hPa -kzq_875hPa -kzq_900hPa -kzq_925hPa -kzq_950hPa -kzq_975hPa -kzq_1000hPa -height_15hPa -height_20hPa -height_30hPa -height_50hPa -height_70hPa -height_100hPa -height_150hPa -height_200hPa -height_250hPa -height_300hPa -height_400hPa -height_500hPa -height_600hPa -height_700hPa -height_825hPa -height_850hPa -height_875hPa -height_900hPa -height_925hPa -height_950hPa -height_975hPa -height_1000hPa -qc_15hPa -qc_20hPa -qc_30hPa -qc_50hPa -qc_70hPa -qc_100hPa -qc_150hPa -qc_200hPa -qc_250hPa -qc_300hPa -qc_400hPa -qc_500hPa -qc_600hPa -qc_700hPa -qc_825hPa -qc_850hPa -qc_875hPa -qc_900hPa -qc_925hPa -qc_950hPa -qc_975hPa -qc_1000hPa -qg_15hPa -qg_20hPa -qg_30hPa -qg_50hPa -qg_70hPa -qg_100hPa -qg_150hPa -qg_200hPa -qg_250hPa -qg_300hPa -qg_400hPa -qg_500hPa -qg_600hPa -qg_700hPa -qg_825hPa -qg_850hPa -qg_875hPa -qg_900hPa -qg_925hPa -qg_950hPa -qg_975hPa -qg_1000hPa -qi_15hPa -qi_20hPa -qi_30hPa -qi_50hPa -qi_70hPa -qi_100hPa -qi_150hPa -qi_200hPa -qi_250hPa -qi_300hPa -qi_400hPa -qi_500hPa -qi_600hPa -qi_700hPa -qi_825hPa -qi_850hPa -qi_875hPa -qi_900hPa -qi_925hPa -qi_950hPa -qi_975hPa -qi_1000hPa -qv_15hPa -qv_20hPa -qv_30hPa -qv_50hPa -qv_70hPa -qv_100hPa -qv_150hPa -qv_200hPa -qv_250hPa -qv_300hPa -qv_400hPa -qv_500hPa -qv_600hPa -qv_700hPa -qv_825hPa -qv_850hPa -qv_875hPa -qv_900hPa -qv_925hPa -qv_950hPa -qv_975hPa -qv_1000hPa -qr_15hPa -qr_20hPa -qr_30hPa -qr_50hPa -qr_70hPa -qr_100hPa -qr_150hPa -qr_200hPa -qr_250hPa -qr_300hPa -qr_400hPa -qr_500hPa -qr_600hPa -qr_700hPa -qr_825hPa -qr_850hPa -qr_875hPa -qr_900hPa -qr_925hPa -qr_950hPa -qr_975hPa -qr_1000hPa -qs_15hPa -qs_20hPa -qs_30hPa -qs_50hPa -qs_70hPa -qs_100hPa -qs_150hPa -qs_200hPa -qs_250hPa -qs_300hPa -qs_400hPa -qs_500hPa -qs_600hPa -qs_700hPa -qs_825hPa -qs_850hPa -qs_875hPa -qs_900hPa -qs_925hPa -qs_950hPa -qs_975hPa -qs_1000hPa -ni_15hPa -ni_20hPa -ni_30hPa -ni_50hPa -ni_70hPa -ni_100hPa -ni_150hPa -ni_200hPa -ni_250hPa -ni_300hPa -ni_400hPa -ni_500hPa -ni_600hPa -ni_700hPa -ni_825hPa -ni_850hPa -ni_875hPa -ni_900hPa -ni_925hPa -ni_950hPa -ni_975hPa -ni_1000hPa -nr_15hPa -nr_20hPa -nr_30hPa -nr_50hPa -nr_70hPa -nr_100hPa -nr_150hPa -nr_200hPa -nr_250hPa -nr_300hPa -nr_400hPa -nr_500hPa -nr_600hPa -nr_700hPa -nr_825hPa -nr_850hPa -nr_875hPa -nr_900hPa -nr_925hPa -nr_950hPa -nr_975hPa -nr_1000hPa -rucuten_15hPa -rucuten_20hPa -rucuten_30hPa -rucuten_50hPa -rucuten_70hPa -rucuten_100hPa -rucuten_150hPa -rucuten_200hPa -rucuten_250hPa -rucuten_300hPa -rucuten_400hPa -rucuten_500hPa -rucuten_600hPa -rucuten_700hPa -rucuten_825hPa -rucuten_850hPa -rucuten_875hPa -rucuten_900hPa -rucuten_925hPa -rucuten_950hPa -rucuten_975hPa -rucuten_1000hPa -rvcuten_15hPa -rvcuten_20hPa -rvcuten_30hPa -rvcuten_50hPa -rvcuten_70hPa -rvcuten_100hPa -rvcuten_150hPa -rvcuten_200hPa -rvcuten_250hPa -rvcuten_300hPa -rvcuten_400hPa -rvcuten_500hPa -rvcuten_600hPa -rvcuten_700hPa -rvcuten_825hPa -rvcuten_850hPa -rvcuten_875hPa -rvcuten_900hPa -rvcuten_925hPa -rvcuten_950hPa -rvcuten_975hPa -rvcuten_1000hPa -rvblten_15hPa -rvblten_20hPa -rvblten_30hPa -rvblten_50hPa -rvblten_70hPa -rvblten_100hPa -rvblten_150hPa -rvblten_200hPa -rvblten_250hPa -rvblten_300hPa -rvblten_400hPa -rvblten_500hPa -rvblten_600hPa -rvblten_700hPa -rvblten_825hPa -rvblten_850hPa -rvblten_875hPa -rvblten_900hPa -rvblten_925hPa -rvblten_950hPa -rvblten_975hPa -rvblten_1000hPa -cldfrac_15hPa -cldfrac_20hPa -cldfrac_30hPa -cldfrac_50hPa -cldfrac_70hPa -cldfrac_100hPa -cldfrac_150hPa -cldfrac_200hPa -cldfrac_250hPa -cldfrac_300hPa -cldfrac_400hPa -cldfrac_500hPa -cldfrac_600hPa -cldfrac_700hPa -cldfrac_825hPa -cldfrac_850hPa -cldfrac_875hPa -cldfrac_900hPa -cldfrac_925hPa -cldfrac_950hPa -cldfrac_975hPa -cldfrac_1000hPa -rublten_15hPa -rublten_20hPa -rublten_30hPa -rublten_50hPa -rublten_70hPa -rublten_100hPa -rublten_150hPa -rublten_200hPa -rublten_250hPa -rublten_300hPa -rublten_400hPa -rublten_500hPa -rublten_600hPa -rublten_700hPa -rublten_825hPa -rublten_850hPa -rublten_875hPa -rublten_900hPa -rublten_925hPa -rublten_950hPa -rublten_975hPa -rublten_1000hPa -rthratensw_15hPa -rthratensw_20hPa -rthratensw_30hPa -rthratensw_50hPa -rthratensw_70hPa -rthratensw_100hPa -rthratensw_150hPa -rthratensw_200hPa -rthratensw_250hPa -rthratensw_300hPa -rthratensw_400hPa -rthratensw_500hPa -rthratensw_600hPa -rthratensw_700hPa -rthratensw_825hPa -rthratensw_850hPa -rthratensw_875hPa -rthratensw_900hPa -rthratensw_925hPa -rthratensw_950hPa -rthratensw_975hPa -rthratensw_1000hPa -omega_15hPa -omega_20hPa -omega_30hPa -omega_50hPa -omega_70hPa -omega_100hPa -omega_150hPa -omega_200hPa -omega_250hPa -omega_300hPa -omega_400hPa -omega_500hPa -omega_600hPa -omega_700hPa -omega_825hPa -omega_850hPa -omega_875hPa -omega_900hPa -omega_925hPa -omega_950hPa -omega_975hPa -omega_1000hPa -zgeo_15hPa -zgeo_20hPa -zgeo_30hPa -zgeo_50hPa -zgeo_70hPa -zgeo_100hPa -zgeo_150hPa -zgeo_200hPa -zgeo_250hPa -zgeo_300hPa -zgeo_400hPa -zgeo_500hPa -zgeo_600hPa -zgeo_700hPa -zgeo_825hPa -zgeo_850hPa -zgeo_875hPa -zgeo_900hPa -zgeo_925hPa -zgeo_950hPa -zgeo_975hPa -zgeo_1000hPa diff --git a/scripts/namelists/include_fields.diag.GCC b/scripts/namelists/include_fields.diag.GCC deleted file mode 100755 index b39754f..0000000 --- a/scripts/namelists/include_fields.diag.GCC +++ /dev/null @@ -1,72 +0,0 @@ -initial_time -xtime -Time -t_iso_levels -zgeo_isobaric -cldfrac_isobaric -temperature_isobaric -dewpoint_isobaric -relhum_isobaric -w_isobaric -uzonal_isobaric -umeridional_isobaric -vorticity_isobaric -height_isobaric -spechum_isobaric -omega_isobaric -rqvblten_isobaric -rthblten_isobaric -rqvcuten_isobaric -rthcuten_isobaric -rthratenlw_isobaric -rthratensw_isobaric -rucuten_isobaric -rvcuten_isobaric -rvblten_isobaric -rublten_isobaric -kzq_isobaric -kzh_isobaric -kzm_isobaric -ni_isobaric -nr_isobaric -qr_isobaric -qs_isobaric -qv_isobaric -qc_isobaric -qg_isobaric -qi_isobaric -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb diff --git a/scripts/namelists/namelist.atmosphere.TEMPLATE b/scripts/namelists/namelist.atmosphere.TEMPLATE index d234253..c4f103d 100755 --- a/scripts/namelists/namelist.atmosphere.TEMPLATE +++ b/scripts/namelists/namelist.atmosphere.TEMPLATE @@ -34,7 +34,7 @@ config_xnutr = 0.2 / &limited_area - config_apply_lbcs = false + config_apply_lbcs = #APPLY_LBCS# / &io config_pio_num_iotasks = 0 diff --git a/scripts/namelists/namelist.init_atmosphere.LBCS b/scripts/namelists/namelist.init_atmosphere.LBCS new file mode 100755 index 0000000..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 100755 index b39754f..0000000 --- a/scripts/namelists/stream_list.atmosphere.diagnostics +++ /dev/null @@ -1,72 +0,0 @@ -initial_time -xtime -Time -t_iso_levels -zgeo_isobaric -cldfrac_isobaric -temperature_isobaric -dewpoint_isobaric -relhum_isobaric -w_isobaric -uzonal_isobaric -umeridional_isobaric -vorticity_isobaric -height_isobaric -spechum_isobaric -omega_isobaric -rqvblten_isobaric -rthblten_isobaric -rqvcuten_isobaric -rthcuten_isobaric -rthratenlw_isobaric -rthratensw_isobaric -rucuten_isobaric -rvcuten_isobaric -rvblten_isobaric -rublten_isobaric -kzq_isobaric -kzh_isobaric -kzm_isobaric -ni_isobaric -nr_isobaric -qr_isobaric -qs_isobaric -qv_isobaric -qc_isobaric -qg_isobaric -qi_isobaric -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb diff --git a/scripts/namelists/stream_list.atmosphere.diagnostics.CD-CT b/scripts/namelists/stream_list.atmosphere.diagnostics.CD-CT deleted file mode 100755 index 3de9759..0000000 --- a/scripts/namelists/stream_list.atmosphere.diagnostics.CD-CT +++ /dev/null @@ -1,695 +0,0 @@ -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -relhum_15hPa -relhum_20hPa -relhum_30hPa -relhum_50hPa -relhum_70hPa -relhum_100hPa -relhum_150hPa -relhum_200hPa -relhum_250hPa -relhum_300hPa -relhum_400hPa -relhum_500hPa -relhum_600hPa -relhum_700hPa -relhum_825hPa -relhum_850hPa -relhum_875hPa -relhum_900hPa -relhum_925hPa -relhum_950hPa -relhum_975hPa -relhum_1000hPa -geoph_15hPa -geoph_20hPa -geoph_30hPa -geoph_50hPa -geoph_70hPa -geoph_100hPa -geoph_150hPa -geoph_200hPa -geoph_250hPa -geoph_300hPa -geoph_400hPa -geoph_500hPa -geoph_600hPa -geoph_700hPa -geoph_825hPa -geoph_850hPa -geoph_875hPa -geoph_900hPa -geoph_925hPa -geoph_950hPa -geoph_975hPa -geoph_1000hPa -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb -w_15hPa -w_20hPa -w_30hPa -w_50hPa -w_70hPa -w_100hPa -w_150hPa -w_200hPa -w_250hPa -w_300hPa -w_400hPa -w_500hPa -w_600hPa -w_700hPa -w_825hPa -w_850hPa -w_875hPa -w_900hPa -w_925hPa -w_950hPa -w_975hPa -w_1000hPa -uzonal_15hPa -uzonal_20hPa -uzonal_30hPa -uzonal_50hPa -uzonal_70hPa -uzonal_100hPa -uzonal_150hPa -uzonal_200hPa -uzonal_250hPa -uzonal_300hPa -uzonal_400hPa -uzonal_500hPa -uzonal_600hPa -uzonal_700hPa -uzonal_825hPa -uzonal_850hPa -uzonal_875hPa -uzonal_900hPa -uzonal_925hPa -uzonal_950hPa -uzonal_975hPa -uzonal_1000hPa -umeridional_15hPa -umeridional_20hPa -umeridional_30hPa -umeridional_50hPa -umeridional_70hPa -umeridional_100hPa -umeridional_150hPa -umeridional_200hPa -umeridional_250hPa -umeridional_300hPa -umeridional_400hPa -umeridional_500hPa -umeridional_600hPa -umeridional_700hPa -umeridional_825hPa -umeridional_850hPa -umeridional_875hPa -umeridional_900hPa -umeridional_925hPa -umeridional_950hPa -umeridional_975hPa -umeridional_1000hPa -temperature_15hPa -temperature_20hPa -temperature_30hPa -temperature_50hPa -temperature_70hPa -temperature_100hPa -temperature_150hPa -temperature_200hPa -temperature_250hPa -temperature_300hPa -temperature_400hPa -temperature_500hPa -temperature_600hPa -temperature_700hPa -temperature_825hPa -temperature_850hPa -temperature_875hPa -temperature_900hPa -temperature_925hPa -temperature_950hPa -temperature_975hPa -temperature_1000hPa -spechum_15hPa -spechum_20hPa -spechum_30hPa -spechum_50hPa -spechum_70hPa -spechum_100hPa -spechum_150hPa -spechum_200hPa -spechum_250hPa -spechum_300hPa -spechum_400hPa -spechum_500hPa -spechum_600hPa -spechum_700hPa -spechum_825hPa -spechum_850hPa -spechum_875hPa -spechum_900hPa -spechum_925hPa -spechum_950hPa -spechum_975hPa -spechum_1000hPa -rthratenlw_15hPa -rthratenlw_20hPa -rthratenlw_30hPa -rthratenlw_50hPa -rthratenlw_70hPa -rthratenlw_100hPa -rthratenlw_150hPa -rthratenlw_200hPa -rthratenlw_250hPa -rthratenlw_300hPa -rthratenlw_400hPa -rthratenlw_500hPa -rthratenlw_600hPa -rthratenlw_700hPa -rthratenlw_825hPa -rthratenlw_850hPa -rthratenlw_875hPa -rthratenlw_900hPa -rthratenlw_925hPa -rthratenlw_950hPa -rthratenlw_975hPa -rthratenlw_1000hPa -rqvcuten_15hPa -rqvcuten_20hPa -rqvcuten_30hPa -rqvcuten_50hPa -rqvcuten_70hPa -rqvcuten_100hPa -rqvcuten_150hPa -rqvcuten_200hPa -rqvcuten_250hPa -rqvcuten_300hPa -rqvcuten_400hPa -rqvcuten_500hPa -rqvcuten_600hPa -rqvcuten_700hPa -rqvcuten_825hPa -rqvcuten_850hPa -rqvcuten_875hPa -rqvcuten_900hPa -rqvcuten_925hPa -rqvcuten_950hPa -rqvcuten_975hPa -rqvcuten_1000hPa -rqvblten_15hPa -rqvblten_20hPa -rqvblten_30hPa -rqvblten_50hPa -rqvblten_70hPa -rqvblten_100hPa -rqvblten_150hPa -rqvblten_200hPa -rqvblten_250hPa -rqvblten_300hPa -rqvblten_400hPa -rqvblten_500hPa -rqvblten_600hPa -rqvblten_700hPa -rqvblten_825hPa -rqvblten_850hPa -rqvblten_875hPa -rqvblten_900hPa -rqvblten_925hPa -rqvblten_950hPa -rqvblten_975hPa -rqvblten_1000hPa -kzh_15hPa -kzh_20hPa -kzh_30hPa -kzh_50hPa -kzh_70hPa -kzh_100hPa -kzh_150hPa -kzh_200hPa -kzh_250hPa -kzh_300hPa -kzh_400hPa -kzh_500hPa -kzh_600hPa -kzh_700hPa -kzh_825hPa -kzh_850hPa -kzh_875hPa -kzh_900hPa -kzh_925hPa -kzh_950hPa -kzh_975hPa -kzh_1000hPa -kzm_15hPa -kzm_20hPa -kzm_30hPa -kzm_50hPa -kzm_70hPa -kzm_100hPa -kzm_150hPa -kzm_200hPa -kzm_250hPa -kzm_300hPa -kzm_400hPa -kzm_500hPa -kzm_600hPa -kzm_700hPa -kzm_825hPa -kzm_850hPa -kzm_875hPa -kzm_900hPa -kzm_925hPa -kzm_950hPa -kzm_975hPa -kzm_1000hPa -kzq_15hPa -kzq_20hPa -kzq_30hPa -kzq_50hPa -kzq_70hPa -kzq_100hPa -kzq_150hPa -kzq_200hPa -kzq_250hPa -kzq_300hPa -kzq_400hPa -kzq_500hPa -kzq_600hPa -kzq_700hPa -kzq_825hPa -kzq_850hPa -kzq_875hPa -kzq_900hPa -kzq_925hPa -kzq_950hPa -kzq_975hPa -kzq_1000hPa -height_15hPa -height_20hPa -height_30hPa -height_50hPa -height_70hPa -height_100hPa -height_150hPa -height_200hPa -height_250hPa -height_300hPa -height_400hPa -height_500hPa -height_600hPa -height_700hPa -height_825hPa -height_850hPa -height_875hPa -height_900hPa -height_925hPa -height_950hPa -height_975hPa -height_1000hPa -qc_15hPa -qc_20hPa -qc_30hPa -qc_50hPa -qc_70hPa -qc_100hPa -qc_150hPa -qc_200hPa -qc_250hPa -qc_300hPa -qc_400hPa -qc_500hPa -qc_600hPa -qc_700hPa -qc_825hPa -qc_850hPa -qc_875hPa -qc_900hPa -qc_925hPa -qc_950hPa -qc_975hPa -qc_1000hPa -qg_15hPa -qg_20hPa -qg_30hPa -qg_50hPa -qg_70hPa -qg_100hPa -qg_150hPa -qg_200hPa -qg_250hPa -qg_300hPa -qg_400hPa -qg_500hPa -qg_600hPa -qg_700hPa -qg_825hPa -qg_850hPa -qg_875hPa -qg_900hPa -qg_925hPa -qg_950hPa -qg_975hPa -qg_1000hPa -qi_15hPa -qi_20hPa -qi_30hPa -qi_50hPa -qi_70hPa -qi_100hPa -qi_150hPa -qi_200hPa -qi_250hPa -qi_300hPa -qi_400hPa -qi_500hPa -qi_600hPa -qi_700hPa -qi_825hPa -qi_850hPa -qi_875hPa -qi_900hPa -qi_925hPa -qi_950hPa -qi_975hPa -qi_1000hPa -qv_15hPa -qv_20hPa -qv_30hPa -qv_50hPa -qv_70hPa -qv_100hPa -qv_150hPa -qv_200hPa -qv_250hPa -qv_300hPa -qv_400hPa -qv_500hPa -qv_600hPa -qv_700hPa -qv_825hPa -qv_850hPa -qv_875hPa -qv_900hPa -qv_925hPa -qv_950hPa -qv_975hPa -qv_1000hPa -qr_15hPa -qr_20hPa -qr_30hPa -qr_50hPa -qr_70hPa -qr_100hPa -qr_150hPa -qr_200hPa -qr_250hPa -qr_300hPa -qr_400hPa -qr_500hPa -qr_600hPa -qr_700hPa -qr_825hPa -qr_850hPa -qr_875hPa -qr_900hPa -qr_925hPa -qr_950hPa -qr_975hPa -qr_1000hPa -qs_15hPa -qs_20hPa -qs_30hPa -qs_50hPa -qs_70hPa -qs_100hPa -qs_150hPa -qs_200hPa -qs_250hPa -qs_300hPa -qs_400hPa -qs_500hPa -qs_600hPa -qs_700hPa -qs_825hPa -qs_850hPa -qs_875hPa -qs_900hPa -qs_925hPa -qs_950hPa -qs_975hPa -qs_1000hPa -ni_15hPa -ni_20hPa -ni_30hPa -ni_50hPa -ni_70hPa -ni_100hPa -ni_150hPa -ni_200hPa -ni_250hPa -ni_300hPa -ni_400hPa -ni_500hPa -ni_600hPa -ni_700hPa -ni_825hPa -ni_850hPa -ni_875hPa -ni_900hPa -ni_925hPa -ni_950hPa -ni_975hPa -ni_1000hPa -nr_15hPa -nr_20hPa -nr_30hPa -nr_50hPa -nr_70hPa -nr_100hPa -nr_150hPa -nr_200hPa -nr_250hPa -nr_300hPa -nr_400hPa -nr_500hPa -nr_600hPa -nr_700hPa -nr_825hPa -nr_850hPa -nr_875hPa -nr_900hPa -nr_925hPa -nr_950hPa -nr_975hPa -nr_1000hPa -rucuten_15hPa -rucuten_20hPa -rucuten_30hPa -rucuten_50hPa -rucuten_70hPa -rucuten_100hPa -rucuten_150hPa -rucuten_200hPa -rucuten_250hPa -rucuten_300hPa -rucuten_400hPa -rucuten_500hPa -rucuten_600hPa -rucuten_700hPa -rucuten_825hPa -rucuten_850hPa -rucuten_875hPa -rucuten_900hPa -rucuten_925hPa -rucuten_950hPa -rucuten_975hPa -rucuten_1000hPa -rvcuten_15hPa -rvcuten_20hPa -rvcuten_30hPa -rvcuten_50hPa -rvcuten_70hPa -rvcuten_100hPa -rvcuten_150hPa -rvcuten_200hPa -rvcuten_250hPa -rvcuten_300hPa -rvcuten_400hPa -rvcuten_500hPa -rvcuten_600hPa -rvcuten_700hPa -rvcuten_825hPa -rvcuten_850hPa -rvcuten_875hPa -rvcuten_900hPa -rvcuten_925hPa -rvcuten_950hPa -rvcuten_975hPa -rvcuten_1000hPa -rvblten_15hPa -rvblten_20hPa -rvblten_30hPa -rvblten_50hPa -rvblten_70hPa -rvblten_100hPa -rvblten_150hPa -rvblten_200hPa -rvblten_250hPa -rvblten_300hPa -rvblten_400hPa -rvblten_500hPa -rvblten_600hPa -rvblten_700hPa -rvblten_825hPa -rvblten_850hPa -rvblten_875hPa -rvblten_900hPa -rvblten_925hPa -rvblten_950hPa -rvblten_975hPa -rvblten_1000hPa -cldfrac_15hPa -cldfrac_20hPa -cldfrac_30hPa -cldfrac_50hPa -cldfrac_70hPa -cldfrac_100hPa -cldfrac_150hPa -cldfrac_200hPa -cldfrac_250hPa -cldfrac_300hPa -cldfrac_400hPa -cldfrac_500hPa -cldfrac_600hPa -cldfrac_700hPa -cldfrac_825hPa -cldfrac_850hPa -cldfrac_875hPa -cldfrac_900hPa -cldfrac_925hPa -cldfrac_950hPa -cldfrac_975hPa -cldfrac_1000hPa -rublten_15hPa -rublten_20hPa -rublten_30hPa -rublten_50hPa -rublten_70hPa -rublten_100hPa -rublten_150hPa -rublten_200hPa -rublten_250hPa -rublten_300hPa -rublten_400hPa -rublten_500hPa -rublten_600hPa -rublten_700hPa -rublten_825hPa -rublten_850hPa -rublten_875hPa -rublten_900hPa -rublten_925hPa -rublten_950hPa -rublten_975hPa -rublten_1000hPa -rthratensw_15hPa -rthratensw_20hPa -rthratensw_30hPa -rthratensw_50hPa -rthratensw_70hPa -rthratensw_100hPa -rthratensw_150hPa -rthratensw_200hPa -rthratensw_250hPa -rthratensw_300hPa -rthratensw_400hPa -rthratensw_500hPa -rthratensw_600hPa -rthratensw_700hPa -rthratensw_825hPa -rthratensw_850hPa -rthratensw_875hPa -rthratensw_900hPa -rthratensw_925hPa -rthratensw_950hPa -rthratensw_975hPa -rthratensw_1000hPa -omega_15hPa -omega_20hPa -omega_30hPa -omega_50hPa -omega_70hPa -omega_100hPa -omega_150hPa -omega_200hPa -omega_250hPa -omega_300hPa -omega_400hPa -omega_500hPa -omega_600hPa -omega_700hPa -omega_825hPa -omega_850hPa -omega_875hPa -omega_900hPa -omega_925hPa -omega_950hPa -omega_975hPa -omega_1000hPa -zgeo_15hPa -zgeo_20hPa -zgeo_30hPa -zgeo_50hPa -zgeo_70hPa -zgeo_100hPa -zgeo_150hPa -zgeo_200hPa -zgeo_250hPa -zgeo_300hPa -zgeo_400hPa -zgeo_500hPa -zgeo_600hPa -zgeo_700hPa -zgeo_825hPa -zgeo_850hPa -zgeo_875hPa -zgeo_900hPa -zgeo_925hPa -zgeo_950hPa -zgeo_975hPa -zgeo_1000hPa diff --git a/scripts/namelists/stream_list.atmosphere.diagnostics.GCC b/scripts/namelists/stream_list.atmosphere.diagnostics.GCC deleted file mode 100755 index b39754f..0000000 --- a/scripts/namelists/stream_list.atmosphere.diagnostics.GCC +++ /dev/null @@ -1,72 +0,0 @@ -initial_time -xtime -Time -t_iso_levels -zgeo_isobaric -cldfrac_isobaric -temperature_isobaric -dewpoint_isobaric -relhum_isobaric -w_isobaric -uzonal_isobaric -umeridional_isobaric -vorticity_isobaric -height_isobaric -spechum_isobaric -omega_isobaric -rqvblten_isobaric -rthblten_isobaric -rqvcuten_isobaric -rthcuten_isobaric -rthratenlw_isobaric -rthratensw_isobaric -rucuten_isobaric -rvcuten_isobaric -rvblten_isobaric -rublten_isobaric -kzq_isobaric -kzh_isobaric -kzm_isobaric -ni_isobaric -nr_isobaric -qr_isobaric -qs_isobaric -qv_isobaric -qc_isobaric -qg_isobaric -qi_isobaric -t2m -rainc -rainnc -uzonal_surface -umeridional_surface -u10 -v10 -surface_pressure -sst -q2 -mslp -lh -hpbl -hfx -delta -cldfrac_tot_UPP -chs -cd -acswuptc -acswupt -acswupbc -acswupb -acswdntc -acswdnt -acswdnbc -acswdnb -acsnow -aclwuptc -aclwupt -aclwupbc -aclwupb -aclwdntc -aclwdnt -aclwdnbc -aclwdnb diff --git a/scripts/namelists/streams.atmosphere.TEMPLATE b/scripts/namelists/streams.atmosphere.TEMPLATE index 04def1c..9e9ff6a 100755 --- a/scripts/namelists/streams.atmosphere.TEMPLATE +++ b/scripts/namelists/streams.atmosphere.TEMPLATE @@ -14,7 +14,7 @@ @@ -23,7 +23,7 @@ @@ -45,4 +45,11 @@ packages="iau" input_interval="initial_only" /> + + diff --git a/scripts/namelists/streams.init_atmosphere.LBCS b/scripts/namelists/streams.init_atmosphere.LBCS new file mode 100755 index 0000000..234cd40 --- /dev/null +++ b/scripts/namelists/streams.init_atmosphere.LBCS @@ -0,0 +1,20 @@ + + + + + + + diff --git a/scripts/setenv.bash b/scripts/setenv.bash index fa2f731..8873d73 100755 --- a/scripts/setenv.bash +++ b/scripts/setenv.bash @@ -1,6 +1,10 @@ #!/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 diff --git a/scripts/stools/setenv_PBS_ian_cray.bash b/scripts/stools/setenv_PBS_ian_cray.bash index 0280b15..97bf3b3 100755 --- a/scripts/stools/setenv_PBS_ian_cray.bash +++ b/scripts/stools/setenv_PBS_ian_cray.bash @@ -27,7 +27,6 @@ export STATIC_nthreads=1 export STATIC_jobname="Pre.static" export STATIC_walltime="02:00:00" - # PRE-Degrib phase: export DEGRIB_QUEUE="pesqextra" export DEGRIB_ncores=1 @@ -48,6 +47,16 @@ export INITATMOS_nthreads=1 export INITATMOS_jobname="Pre.InitAtmos" export INITATMOS_walltime="02:00:00" +# PRE-LBCs phase: +export LBCS_QUEUE="pesqextra" +export LBCS_ncores=64 +export LBCS_nnodes=1 +export LBCS_ncpus=64 +export LBCS_ncpn=64 +export LBCS_nthreads=1 +export LBCS_jobname="Pre.LBCS" +export LBCS_walltime="02:00:00" + # Model phase: export MODEL_QUEUE="pesqextra" export MODEL_ncores=2048 diff --git a/scripts/stools/setenv_PBS_ian_gnu.bash b/scripts/stools/setenv_PBS_ian_gnu.bash index a2cf615..2e64a54 100755 --- a/scripts/stools/setenv_PBS_ian_gnu.bash +++ b/scripts/stools/setenv_PBS_ian_gnu.bash @@ -27,7 +27,6 @@ export STATIC_nthreads=1 export STATIC_jobname="Pre.static" export STATIC_walltime="02:00:00" - # PRE-Degrib phase: export DEGRIB_QUEUE="pesqextra" export DEGRIB_ncores=1 @@ -48,6 +47,16 @@ export INITATMOS_nthreads=1 export INITATMOS_jobname="Pre.InitAtmos" export INITATMOS_walltime="02:00:00" +# PRE-LBCs phase: +export LBCS_QUEUE="pesqextra" +export LBCS_ncores=64 +export LBCS_nnodes=1 +export LBCS_ncpus=64 +export LBCS_ncpn=64 +export LBCS_nthreads=1 +export LBCS_jobname="Pre.LBCS" +export LBCS_walltime="02:00:00" + # Model phase: export MODEL_QUEUE="pesqextra" export MODEL_ncores=2048 @@ -86,7 +95,6 @@ export GCCCIS=/p/projetos/monan_adm/monan/CIs export PIO= export LD_LIBRARY_PATH=$NETCDF/lib:$PNETCDF/lib:$PIO/lib64:$LD_LIBRARY_PATH - # --- Others Variables --- # HPE Slingshot/Libfabric: export FI_CXI_REQ_BUF_SIZE=25165824 diff --git a/scripts/stools/setenv_PBS_ian_intel.bash b/scripts/stools/setenv_PBS_ian_intel.bash index 22a7c5e..02cdc33 100755 --- a/scripts/stools/setenv_PBS_ian_intel.bash +++ b/scripts/stools/setenv_PBS_ian_intel.bash @@ -27,7 +27,6 @@ export STATIC_nthreads=1 export STATIC_jobname="Pre.static" export STATIC_walltime="02:00:00" - # PRE-Degrib phase: export DEGRIB_QUEUE="pesqextra" export DEGRIB_ncores=1 @@ -38,7 +37,6 @@ export DEGRIB_nthreads=1 export DEGRIB_jobname="Pre.degrib" export DEGRIB_walltime="02:00:00" - # PRE-Init Atmosphere phase: export INITATMOS_QUEUE="pesqextra" export INITATMOS_ncores=512 @@ -49,6 +47,15 @@ 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" @@ -88,7 +95,6 @@ export GCCCIS=/p/projetos/monan_adm/monan/CIs export PIO= export LD_LIBRARY_PATH=$NETCDF/lib:$PNETCDF/lib:$PIO/lib64:$LD_LIBRARY_PATH - # --- Others Variables --- # HPE Slingshot/Libfabric: export FI_CXI_REQ_BUF_SIZE=25165824 diff --git a/scripts/stools/setenv_SLURM_egeon_gnu.bash b/scripts/stools/setenv_SLURM_egeon_gnu.bash index 5efd038..fb38a4e 100755 --- a/scripts/stools/setenv_SLURM_egeon_gnu.bash +++ b/scripts/stools/setenv_SLURM_egeon_gnu.bash @@ -40,6 +40,15 @@ export INITATMOS_ncpn=64 export INITATMOS_jobname="Pre.InitAtmos" export INITATMOS_walltime="02:00:00" +# PRE-LBCs phase: +export LBCS_QUEUE="batch" +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="batch" @@ -49,7 +58,6 @@ 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 @@ -61,8 +69,6 @@ export POST_walltime="8:00:00" - - # Libraries paths: export NETCDF=/mnt/beegfs/monan/libs_openmpi/netcdf export PNETCDF=/mnt/beegfs/monan/libs_openmpi/PnetCDF diff --git a/scripts/stools/submit_SLURM_egeon.bash_TEMPLATE b/scripts/stools/submit_SLURM_egeon.bash_TEMPLATE index 3ffe9a6..89cef18 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#%j -#SBATCH --error=#ERRORJOB#%j +#SBATCH --output=#OUTPUTJOB#.%j +#SBATCH --error=#ERRORJOB#.%j #SBATCH --exclusive