快速示範安裝WRF及WPS,並自行建立特殊路徑外部函示庫netcdf(classic build)及grib2函式庫。
凡是使用者自行定義名稱或非常規環境變數皆使用全小寫或大小寫混用的bash變數符號,如:"${varNAME}"
${srcROOT}: tarball原始碼放置路徑
${build}: 編譯原始碼的路徑
${target}: 安裝路徑
${project}: WRF/WPS安裝路徑
自行定義編譯器環境變數值,預設是讀取系統的編譯器,GNU/Linux預設為gcc編譯器
變數 描述
CC C compiler driver
CXX C++ compiler driver
FC Fortran 90/03/08... compiler driver
F90 Fortran 90 compiler driver
F77 Fortran 77 compiler driver
CPP C/C++ preprocessor driver (C預處理器)
Quick Reference: https://man.twcc.ai/@TWCC-III-manual/SkgZUHhi_
References:
GNU Compiler Collections (GCC): GCC online documentation >> 3.21 Environment Variables Affecting GCC
Intel C++ Compiler Classic (ICC)
# build "編譯工作區"的路徑位置
cd ${build}
# 下載Tarball
wget -c https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.8.0.tar.gz -P ${srcROOT} -O netcdf-c-4.8.0.tar.gz
# 解壓縮tarball
tar -zxf ${srcROOT}/netcdf-c-4.8.0.tar.gz
cd netcdf-c-4.8.0
./configure --prefix=${target} --disable-netcdf-4 --disable-dap
make check install 2>&1 | tee -a log
ls -l ${target}/*
cd ../
# 設置環境變數
export NETCDF="${target}"
export PATH="${NETCDF}/bin:${PATH}"
export CPATH="${NETCDF}/include:${CPATH}"
export LIBRARY_PATH="${NETCDF}/lib:${LIBRARY_PATH}"
export LD_LIBRARY_PATH="${NETCDF}/lib:${LD_LIBRARY_PATH}"
export PKG_CONFIG_PATH="${NETCDF}/lib/pkgconfig:${PKG_CONFIG_PATH}"
export MANPATH="${NETCDF}/share/man:${MANPATH}"
export CPPFLAGS="-I${NETCDF}/include"
export LDFLAGS="-L${NETCDF}/lib"
export LIBS="-L${NETCDF}/lib -lnetcdf"
# build "編譯工作區"的路徑位置
cd ${build}
#下載Tarball
wget -c https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.5.4.tar.gz -P ${srcROOT} -O netcdf-fortran-4.5.4.tar.gz
#解壓縮
tar -zxf ${srcROOT}/netcdf-fortran-4.5.4.tar.gz
cd netcdf-fortran-4.5.4
./configure --prefix=${target}
make check install 2>&1 | tee -a log
ls -l ${target}/*
cd ../
export LIBS="-L${NETCDF}/lib -lnetcdff -lnetcdf"
# build "編譯工作區"的路徑位置
cd ${build}
#下載Tarball
wget -c https://github.com/madler/zlib/archive/refs/tags/v1.3.1.tar.gz -P ${srcROOT} -O zlib-1.3.1.tar.gz
#解壓縮
tar -zxf ${srcROOT}/zlib-1.3.1.tar.gz
cd zlib-1.3.1
./configure --prefix=${target}
make check install 2>&1 | tee -a log
ls -l ${target}/*
cd ../
export LIBS="-L${NETCDF}/lib -lnetcdff -lnetcdf -lz"
# build "編譯工作區"的路徑位置
cd ${build}
#下載Tarball
wget -c https://github.com/pnggroup/libpng/archive/refs/tags/v1.2.50.tar.gz -P ${srcROOT} -O libpng-1.2.50.tar.gz
#解壓縮
tar -zxf ${srcROOT}/libpng-1.2.50.tar.gz
cd libpng-1.2.50
./configure --prefix=${target}
make check install 2>&1 | tee -a log
ls -l ${target}/*
cd ../
export LIBS="-L${NETCDF}/lib -lnetcdff -lnetcdf -lpng -lz"
# build "編譯工作區"的路徑位置
cd ${build}
#下載Tarball
wget -c https://github.com/jasper-software/jasper/archive/refs/tags/version-1.900.1.tar.gz -P ${srcROOT} -O jasper-1.900.1.tar.gz
#解壓縮
tar -zxf ${srcROOT}/jasper-1.900.1.tar.gz
cd jasper-1.900.1
./configure --prefix=${target}
make check install 2>&1 | tee -a log
ls -l ${target}/*
cd ../
export LIBS="-L${NETCDF}/lib -lnetcdff -lnetcdf -ljasper -lpng -lz"
export JASPERINC=${target}/include
export JASPERLIB=${target}/lib
# project 為"WRF topROOT"資料夾所在的路徑位置
cd ${project}
#下載Tarball
wget -c https://github.com/wrf-model/WRF/releases/download/v4.5.2/v4.5.2.tar.gz -P ${srcROOT} -O WRF-4.5.2.tar.gz
#解壓縮
tar -zxf ${srcROOT}/WRF-4.5.2.tar.gz
cd WRF-4.5.2
./configure # choosed properly
vi configure.wrf # modified if necessary
./compile em_real 2>&1 | tee -a log
ls -l ${WRF_DIR}/run/*.exe
cd ../
export WRF_DIR="${project}/WRF-4.5.2"
# project 為"WPS topROOT"資料夾所在的路徑位置
cd ${project}
#下載Tarball
wget -c https://github.com/wrf-model/WPS/archive/refs/tags/v4.5.tar.gz -P ${srcROOT} -O WPS-4.5.tar.gz
#解壓縮
tar -zxf ${srcROOT}/WPS-4.5.tar.gz
cd WPS-4.5
./configure # choosed properly
vi configure.wps # modified if necessary
./compile 2>&1 | tee -a log
ls -l *.exe
cd ../
#!/bin/bash
#PBS -P ACD11***8 #請填iService上的計畫代碼
#PBS -N WPS_TY #自己隨便自己知道的工作名
#PBS -l select=1:ncpus=1:mpiprocs=1 #使用1個節點1個核心1個執行緒
#PBS -q serial #單核的工作請排serial群組,短時間30分鐘內結束的工作也可以試試ctest群組排隊
#PBS -M user@ntu.edu.tw #填自己的email信箱
#PBS -m abe #什麼時候會寄信通知,a = abort; b = begin; e = end
module load intel/2018_u1
cd /work1/${user}/WPS #填寫geogrid.exe所在的資料夾路徑