Installation
======================
Airflow
------------
安装redis
.. code-block:: bash
apt-get install redis
vi /etc/redis/redis.conf
#bind 127.0.0.1
# requirepass foobared
requirepass redis #指定密码redis
#启动redis
systemctl restart redis.service
安装postgre
.. code-block:: bash
apt-get install postgresql-10 -y
apt-get install postgis postgresql -y
#修改密码
sudo -u postgres psql
CREATE USER airflow WITH PASSWORD '123456';
CREATE DATABASE airflow OWNER airflow;
#bind 127.0.0.1
# requirepass foobared
requirepass redis #指定密码redis
#启动redis
systemctl restart redis.service
安装airflow
登陆服务器切换到root用户,然后新建目录用于存放Python项目代码:
.. code-block:: bash
mkdir /home/data/projects/code
#新建airflow的用户并修改文件权限
groupadd devs
useradd -g devs -m airflow -s bash
# 修改该用户对logs文件、代码文件目录的权限:
chown aiflow:aiflow /data/projects
新建目录:
mkdir -p /data/projects/airflow_config
mkdir -p /data/projects/code
下载并安装anaconda:miniconda
下载
root用户下,下载anaconda安装包:
a.打开 anaconda清华镜像源
b.选择linux-x86的一个版本,右键拷贝链接地址。
c.下载:例如,
cd /data
# wget url
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
如果连接超时,看是否是因为禁止访问外网。
如果下载特别慢,那就本地下载后上传包至服务器。
安装anaconda
#sh [安装包名]
sh Miniconda3-latest-Linux-x86_64.sh
注意:安装过程中,会提示安装目录,修改一下,选择 /home/data/install/anaconda3 作为安装目录(必须是一个不存在的目录)。
b.确保添加了环境变量:vim /etc/profile,如果没有,则末尾一行添加:export PATH="/home/data/install/anaconda3/bin:$PATH"
2.3 新建airflow的python环境
创建环境,root用户下:
conda create -n airflow-py38 python=3.8
切换到新建的af_user用户:
su -l aiflow
初始化anaconda:conda init,如果前面没有在/etc/profile添加anaconda的PATH,那就得这样:/home/data/install/anaconda3/bin/conda init
激活刚刚创建的py环境并安装包:
# 激活环境
conda activate airflow-py38
# 看下当前的pip是否正确:应该输出的是 airflow-py38下的bin/pip
which pip
安装所需的包:
pip install apache-airflow
pip install 'apache-airflow[async]'
pip install 'apache-airflow[celery]'
pip install 'apache-airflow[redis]'
pip install pymysql # 报错的话 需apt-get install libmysqlclient-dev
pip install mysqlclient
pip install flask_bcrypt # 安这个是因为后面initdb时报缺少包的错误
pip install psycopg2
airflow被安装到了/home/af_user/.local/下。
添加环境变量
由root用户切换到aiflow 并编辑.bashrc文件
su -l aiflow
vim ~/.bashrc
export AIRFLOW_HOME="/home/data/projects/airflow_config"
export PYTHONPATH="/home/data/projects/code/airflow:$PYTHONPATH"
export PATH="/home/data/install/anaconda3/envs/air-py36/bin:$PATH"
a. export第一行,若不指定AIRFLOW_HOME,则默认是~/airflow,
b. export 第二行,Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找,这里可以把项目路径添加进来。
c.export第三行,添加airflow的python路径。
重新加载环境变量
source ~/.bashrc
airflow db init
airflow users create --lastname admin --firstname admin --username admin --email yanshuaiqwe321@126.com --role Admin --password admin
airflow webserver -p 8080
Software Stack
----------------
We are using `Spack `_ to install and manage the required software stack.
After install `Spack `_, please make sure you already have GNU compilers (at least C and C++ compilers) on your system.
1. Install softwares
.. code-block:: bash
nwp@VM-0-8-ubuntu:~$ spack install gcc
nwp@VM-0-8-ubuntu:~$ spack gc
nwp@VM-0-8-ubuntu:~$ spack install py-sphinx-rtd-theme
nwp@VM-0-8-ubuntu:~$ spack install ncl
nwp@VM-0-8-ubuntu:~$ spack install py-pip
nwp@VM-0-8-ubuntu:~$ spack install jasper@1.900.1
nwp@VM-0-8-ubuntu:~$ spack install boost+python+pic
.. note::
jasper version 2.0.0 above is not working, please install version 1.900.1
check what we have installed:
.. code-block:: bash
nwp@VM-0-8-ubuntu:~$ spack find
==> 128 installed packages
-- linux-ubuntu18.04-cascadelake / gcc@10.2.0 -------------------
autoconf@2.69 gperf@3.1 libuuid@1.0.3 netcdf-fortran@4.5.3 py-markupsafe@1.1.1 python@3.8.6
bdftopcf@1.0.5 hdf5@1.10.7 libx11@1.7.0 ninja@1.10.2 py-packaging@19.2 readline@8.0
berkeley-db@18.1.40 help2man@1.47.16 libxau@1.0.8 node-js@14.15.1 py-pip@20.2 renderproto@0.11.1
bison@3.7.4 hwloc@1.11.11 libxaw@1.0.13 npm@6.14.9 py-pygments@2.6.1 sqlite@3.33.0
bzip2@1.0.8 inputproto@2.3.2 libxcb@1.14 numactl@2.0.14 py-pyparsing@2.4.2 tar@1.32
cairo@1.16.0 kbproto@1.0.7 libxdmcp@1.1.2 openblas@0.3.12 py-pytest-runner@5.1 tcsh@6.22.02
cmake@3.19.1 libbsd@0.10.0 libxext@1.3.3 openmpi@3.1.6 py-pytz@2020.1 texinfo@6.5
curl@7.74.0 libffi@3.3 libxfont@1.5.2 openssl@1.1.1i py-requests@2.24.0 udunits@2.2.24
diffutils@3.7 libfontenc@1.1.3 libxml2@2.9.10 parallel-netcdf@1.12.1 py-setuptools@50.3.2 util-macros@1.19.1
esmf@7.1.0r libice@1.0.9 libxmu@1.1.2 pcre@8.44 py-setuptools-scm@4.1.2 xcb-proto@1.14.1
expat@2.2.10 libiconv@1.16 libxpm@3.5.12 perl@5.32.0 py-six@1.14.0 xerces-c@3.2.3
findutils@4.6.0 libidn2@2.3.0 libxrender@0.9.10 pixman@0.40.0 py-snowballstemmer@2.0.0 xextproto@7.3.0
flex@2.6.4 libjpeg-turbo@2.0.4 libxt@1.1.5 pkgconf@1.7.3 py-sphinx@3.2.0 xproto@7.0.31
font-util@1.3.2 libpciaccess@0.16 m4@1.4.18 py-alabaster@0.7.12 py-sphinx-rtd-theme@0.5.0 xtrans@1.3.5
fontconfig@2.13.1 libpng@1.6.37 meson@0.56.0 py-babel@2.7.0 py-sphinxcontrib-applehelp@1.0.1 xz@5.2.5
fontsproto@2.1.3 libpthread-stubs@0.4 mkfontdir@1.0.7 py-certifi@2020.6.20 py-sphinxcontrib-devhelp@1.0.1 zlib@1.2.11
freetype@2.10.1 libsigsegv@2.12 mkfontscale@1.1.2 py-chardet@3.0.4 py-sphinxcontrib-htmlhelp@1.0.2
gdbm@1.18.1 libsm@1.2.3 nasm@2.15.05 py-docutils@0.15.2 py-sphinxcontrib-jsmath@1.0.1
gettext@0.21 libszip@2.1.1 ncl@6.6.2 py-idna@2.8 py-sphinxcontrib-qthelp@1.0.2
glib@2.66.2 libtool@2.4.6 ncurses@6.2 py-imagesize@1.1.0 py-sphinxcontrib-serializinghtml@1.1.3
gmake@4.2.1 libunistring@0.9.10 netcdf-c@4.7.4 py-jinja2@2.10.3 py-urllib3@1.25.6
-- linux-ubuntu18.04-skylake_avx512 / gcc@7.5.0 -----------------
gcc@10.2.0 gmp@6.1.2 isl@0.21 mpc@1.1.0 mpfr@4.0.2 zlib@1.2.11 zstd@1.4.5
2. Adds to system-wide settings
after installing required softwares, please add following lines in :code:`~/.bashrc`:
.. code-block:: bash
. /home/data/install/spack/share/spack/setup-env.sh
spack unload --all
spack load -r gcc@10.2.0
spack load -r py-sphinx-rtd-theme@0.5.0
spack load -r py-pip@20.2
spack load -r ncl
spack load -r cmake@3.19.1
spack load -r openmpi@3.1.6
spack load -r netcdf-fortran@4.5.3
spack load -r openblas@0.3.12
spack load -r jasper@1.900.1
spack load -r libpng@1.6.37
spack load -r zlib@1.2.11%gcc@10.2.0
spack load -r gmake@4.2.1
spack load -r boost@1.75.0
spack unload tcsh
环境变量设置
----------------
1. 环境变量设置
在 :code:`$HOME/.bashrc` 中加入以下设置:
.. code-block:: bash
# Define the archor/top directory
# --------------------------------
$ export ROOT_DIR=/home/nwp/src/repository
# Define common libs
# ------------------------
$ export NETCDF=$(spack location -i netcdf-fortran)
$ export PNETCDF=$(spack location -i parallel-netcdf)
# Define the nwp libs
# ------------------------
export BACIO_VER=v2.0.1
export SIGIO_VER=v2.0.1
export W3EMC_VER=v2.2.0
export SFCIO_VER=v1.0.0
# Defin the include paths
# -------------------------
export JASPER_INC=$(spack location -i jasper@1.900.1)/include
export PNG_INC=$(spack location -i libpng@1.6.37)/include
export Z_INC=$(spack location -i zlib@1.2.11%gcc@10.2.0)/include
export XMLPARSE_INC=${ROOT_DIR}/nwprod/lib/xmlparse/v2.0.0/gnu/xmlparse-2.0.0/include
export G2TMPL_INC=${ROOT_DIR}/nwprod/lib/g2tmpl/v1.4.0/gnu/include
export G2_INC4=${ROOT_DIR}/nwprod/lib/g2/v2.5.2/gnu/include/g2_4
export G2_INCd=${ROOT_DIR}/nwprod/lib/g2/v2.5.2/gnu/include/g2_d
export NEMSIO_INC=${ROOT_DIR}/nwprod/lib/nemsio/incmod/nemsio
export GFSIO_INC4=${ROOT_DIR}/nwprod/lib/gfsio/v1.1.0/gnu/include/gfsio_4
export SIGIO_INC4=${ROOT_DIR}/nwprod/lib/sigio/v2.0.1/src/sigio_v2.0.1/include
export SFCIO_INC4=${ROOT_DIR}/nwprod/lib/sfcio/v1.0.0/gnu/include/sfcio_v1.0.0_4
export W3EMC_INC4=${ROOT_DIR}/nwprod/lib/w3emc/v2.2.0/src/gnu/w3emc_v2.2.0_4
export W3EMC_INCd=${ROOT_DIR}/nwprod/lib/w3emc/v2.2.0/src/gnu/w3emc_v2.2.0_d
export CRTM_INC=${ROOT_DIR}/nwprod/lib/crtm/v2.2.3/gnu/include/crtm_v2.2.3/
# Defin the library paths
# -------------------------
export JASPER_LIB="-L$(spack location -i jasper@1.900.1)/lib -ljasper"
export PNG_LIB="-L$(spack location -i libpng@1.6.37)/lib -lpng"
export Z_LIB="-L$(spack location -i zlib@1.2.11%gcc@10.2.0)/lib -lz"
export XMLPARSE_LIB=${ROOT_DIR}/nwprod/lib/xmlparse/v2.0.0/gnu/xmlparse-2.0.0/lib/libxmlparse.a
export G2TMPL_LIB=${ROOT_DIR}/nwprod/lib/g2tmpl/v1.4.0/gnu/libg2tmpl.a
export G2_LIB4=${ROOT_DIR}/nwprod/lib/g2/v2.5.2/gnu/libg2_4.a
export G2_LIBd=${ROOT_DIR}/nwprod/lib/g2/v2.5.2/gnu/libg2_d.a
export NEMSIO_LIB=${ROOT_DIR}/nwprod/lib/nemsio/libnemsio.a
export GFSIO_LIB4=${ROOT_DIR}/nwprod/lib/gfsio/v1.1.0/gnu/libgfsio_4.a
export SIGIO_LIB4=${ROOT_DIR}/nwprod/lib/sigio/v2.0.1/src/sigio_v2.0.1/lib/libsigio_v2.0.1_4.a
export SFCIO_LIB4=${ROOT_DIR}/nwprod/lib/sfcio/v1.0.0/gnu/libsfcio_v1.0.0_4.a
export IP_LIB=${ROOT_DIR}/nwprod/lib/ip/v2.0.0/gnu/libip_v2.0.0_4.a
export IP_LIB4=${ROOT_DIR}/nwprod/lib/ip/v2.0.0/gnu/libip_v2.0.0_4.a
export SP_LIB4=${ROOT_DIR}/nwprod/lib/sp/libsp_4.a
export SP_LIBd=${ROOT_DIR}/nwprod/lib/sp/libsp_d.a
export W3NCO_LIB4=${ROOT_DIR}/nwprod/lib/w3nco/v2.0.6/gnu/libw3nco_v2.0.1_4.a
export W3NCO_LIB8=${ROOT_DIR}/nwprod/lib/w3nco/v2.0.6/gnu/libw3nco_v2.0.1_8.a
export W3NCO_LIBd=${ROOT_DIR}/nwprod/lib/w3nco/v2.0.6/gnu/libw3nco_v2.0.1_d.a
export W3EMC_LIB4=${ROOT_DIR}/nwprod/lib/w3emc/v2.2.0/src/gnu/libw3emc_v2.2.0_4.a
export W3EMC_LIB8=${ROOT_DIR}/nwprod/lib/w3emc/v2.2.0/src/gnu/libw3emc_v2.2.0_8.a
export W3EMC_LIBd=${ROOT_DIR}/nwprod/lib/w3emc/v2.2.0/src/gnu/libw3emc_v2.2.0_d.a
export BACIO_LIB4=${ROOT_DIR}/nwprod/lib/bacio/v2.0.1/gnu/libbacio_4.a
export BACIO_LIB8=${ROOT_DIR}/nwprod/lib/bacio/v2.0.1/gnu/libbacio_8.a
export CRTM_LIB=${ROOT_DIR}/nwprod/lib/crtm/v2.2.3/gnu/libcrtm_v2.2.3.a
export BUFR_LIB4_DA=${ROOT_DIR}/nwprod/lib/bufr/v11.0.1/gnu/libbufr_v11.0.1_4_64_DA.a
export BUFR_LIB4=${BUFR_LIB4_DA}
export BUFR_LIB8_DA=${ROOT_DIR}/nwprod/lib/bufr/v11.0.1/gnu/libbufr_v11.0.1_8_64_DA.a
export BUFR_LIB8=${BUFR_LIB8_DA}
export BUFR_LIBd_DA=${ROOT_DIR}/nwprod/lib/bufr/v11.0.1/gnu/libbufr_v11.0.1_d_64_DA.a
export BUFR_LIBd=${BUFR_LIBd_DA}
export PATH=${ROOT_DIR}/nwprod/prod_util.v1.1.3/ush:$PATH
# ecflow
export PATH=/home/nwp/src/repository/ecflow/bin:$PATH
export PYTHONPATH=$PYTHONPATH:/home/nwp/src/repository/ecflow/lib/python3.8/site-packages/ecflow
export ECF_HOST=101.32.204.175
export ECF_PORT=3141
2. 模块版本信息
在 :code:`${ROOT_DIR}/nwprod/` 下加入各个模块的版本信息。
.. note::
当测试新的模块版本的时候,可以在此修改版本号,系统会去相应的目录寻找可执行程序和脚本:
.. code-block:: bash
nwp@VM-0-8-ubuntu:~/src/repository$ tree -L 1 nwprod/versions
nwprod/versions
|-- hrly_realtime.ver
|-- hrrr.ver
|-- obsproc_dump_monitor.ver
|-- obsproc_rap.ver
`-- rap.ver
0 directories, 5 files
安装 `ecflow `_
---------------------------------------------------------------
1. 下载最新版本的 `ecflow `_, 并按说明安装
2. 更新环境变量,测试安装是否成功
.. code:: bash
# add the following lines .bashrc
export PATH=/home/nwp/src/repository/ecflow/bin:$PATH
export PYTHONPATH=$PYTHONPATH:/home/nwp/src/repository/ecflow/lib/python3.8/site-packages/ecflow
export ECF_HOST=VM-0-8-ubuntu
export ECF_PORT=3141
.. code-block:: bash
$ . ~/.bashrc
$ which ecflow_client
/home/nwp/src/repository/ecflow/bin/ecflow_client
* 启动 :code:`ecflow`
.. code-block:: bash
$ ecflow_start.sh -p 3141
[03:25:12 21.12.2020] Request( --ping ), Failed to connect to VM-0-8-ubuntu:3141. After 2 attempts. Is the server running ?
Mon Dec 21 03:25:12 UTC 2020
User "1000" attempting to start ecf server on "VM-0-8-ubuntu" using ECF_PORT "3141" and with:
ECF_HOME : "/home/nwp/ecflow_server"
ECF_LOG : "VM-0-8-ubuntu.3141.ecf.log"
ECF_CHECK : "VM-0-8-ubuntu.3141.check"
ECF_CHECKOLD : "VM-0-8-ubuntu.3141.check.b"
ECF_OUT : "/dev/null"
client version is Ecflow version(5.6.0) boost(1.75.0) compiler(gcc 10.2.0) protocol(JSON cereal 1.3.0) openssl(enabled) Compiled on Dec 20 2020 22:21:38
Checking if the server is already running on VM-0-8-ubuntu and port 3141
[03:25:13 21.12.2020] Request( --ping ), Failed to connect to VM-0-8-ubuntu:3141. After 2 attempts. Is the server running ?
Backing up check point and log files
OK starting ecFlow server...
Placing server into RESTART mode...
To view server on ecflow_ui - goto Servers/Manage Servers... and enter
Name :
Host : VM-0-8-ubuntu
Port Number : 3141
* 测试 :code:`ecflow server` 是否启动
.. code-block:: bash
$ ecflow_client --ping
ping server(VM-0-8-ubuntu:3141) succeeded in 00:00:00.002548 ~2 milliseconds
安装 :code:`NCEPLIBS`
-----------------------
1. bacio
.. code-block:: bash
export COMP=gnu
cd ${ROOT_DIR}/nwprod/lib/bacio/v2.0.1/src
chmod +x makebacio_wcoss.sh
rm -f ../gnu/libbacio_*.a
./makebacio_wcoss.sh
v2.0.1/src> tree -L 1 ../gnu/
../gnu/
├── libbacio_4.a
└── libbacio_8.a
0 directories, 2 files
2. bufr
.. code-block:: bash
export COMP=gnu
cd ${ROOT_DIR}/nwprod/lib/bufr/v11.0.1/src
rm -fr ../gnu/libbufr*.a
chmod +x makebufrlib.sh
./clean.sh
./makebufrlib.sh
v11.0.1/src> tree -L 1 ../gnu/
../gnu/
├── libbufr_v11.0.1_4_64_DA.a
├── libbufr_v11.0.1_8_64_DA.a
└── libbufr_v11.0.1_d_64_DA.a
0 directories, 3 files
#. g2
.. code-block:: bash
export COMP=gnu
cd ${ROOT_DIR}/nwprod/lib/g2/v2.5.2/src
chmod +x makeg2lib.sh
rm ../gnu/*.a
./makeg2lib.sh
v2.5.2/src> tree -L 3 ../gnu/
../gnu/
├── include
│ ├── g2_4
│ │ ├── drstemplates.mod
│ │ ├── g2grids.mod
│ │ ├── grib_mod.mod
│ │ ├── gridtemplates.mod
│ │ ├── params_ecmwf.mod
│ │ ├── params.mod
│ │ ├── pdstemplates.mod
│ │ └── re_alloc.mod
│ └── g2_d
│ ├── drstemplates.mod
│ ├── g2grids.mod
│ ├── grib_mod.mod
│ ├── gridtemplates.mod
│ ├── params_ecmwf.mod
│ ├── params.mod
│ ├── pdstemplates.mod
│ └── re_alloc.mod
├── libg2_4.a
└── libg2_d.a
3 directories, 18 files
#. g2tmpl
.. code-block:: bash
export COMP=gnu
cd ${ROOT_DIR}/nwprod/lib/g2tmpl/v1.4.0/src
chmod +x makeg2tmpllib.sh
rm -f ../gnu/libg2tmpl.a
./makeg2tmpllib.sh
v1.4.0/src> tree -L 2 ../gnu/
../gnu/
├── include
│ ├── gdtsec3.mod
│ └── grib2_all_tables_module.mod
└── libg2tmpl.a
1 directory, 3 files
#. gfsio
.. code-block:: bash
export COMP=gnu
cd ${ROOT_DIR}/nwprod/lib/gfsio/v1.1.0/src
chmod +x make_wcoss.sh
rm -f ../gnu/libgfsio_4.a
./make_wcoss.sh
v1.1.0/src> tree -L 3 ../gnu/
../gnu/
├── include
│ └── gfsio_4
│ └── gfsio_module.mod
└── libgfsio_4.a
2 directories, 2 files
#. ip
.. code-block:: bash
export COMP=gnu
export IP_VER=v2.0.0
cd ${ROOT_DIR}/nwprod/lib/ip/v2.0.0/src
cp makefile.gnu.conf makefile.conf
chmod +x makelibip.sh
./makelibip.sh
v2.0.0/src> tree -L 1 ../gnu/
../gnu/
├── libip_v2.0.0_4.a
├── libip_v2.0.0_8.a
└── libip_v2.0.0_d.a
0 directories, 3 files
cd ${ROOT_DIR}/nwprod/lib/ip/v3.0.0
./make_ip_lib_wcoss-cray.sh gfortran.setup
ip/v3.0.0> tree -L 3 ip/v3.0.0/gnu/
ip/v3.0.0/gnu/
├── config.log.ip_v3.0.0_4
├── config.log.ip_v3.0.0_8
├── config.log.ip_v3.0.0_d
├── include
│ ├── ip_v3.0.0_4
│ │ ├── gdswzd00_mod.mod
│ │ ├── gdswzd01_mod.mod
│ │ ├── gdswzd03_mod.mod
│ │ ├── gdswzd04_mod.mod
│ │ ├── gdswzd05_mod.mod
│ │ ├── gdswzdcb_mod.mod
│ │ ├── gdswzdcd_mod.mod
│ │ ├── gdswzd_mod.mod
│ │ └── iplib.h
│ ├── ip_v3.0.0_8
│ │ ├── gdswzd00_mod.mod
│ │ ├── gdswzd01_mod.mod
│ │ ├── gdswzd03_mod.mod
│ │ ├── gdswzd04_mod.mod
│ │ ├── gdswzd05_mod.mod
│ │ ├── gdswzdcb_mod.mod
│ │ ├── gdswzdcd_mod.mod
│ │ ├── gdswzd_mod.mod
│ │ └── iplib.h
│ └── ip_v3.0.0_d
│ ├── gdswzd00_mod.mod
│ ├── gdswzd01_mod.mod
│ ├── gdswzd03_mod.mod
│ ├── gdswzd04_mod.mod
│ ├── gdswzd05_mod.mod
│ ├── gdswzdcb_mod.mod
│ ├── gdswzdcd_mod.mod
│ ├── gdswzd_mod.mod
│ └── iplib.h
├── libip_v3.0.0_4.a
├── libip_v3.0.0_8.a
└── libip_v3.0.0_d.a
4 directories, 33 files
#. nemsio
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/lib/nemsio/v2.2.2/src
cp conf/configure.Linux.gnu conf/configure
chmod +x compile
rm -f *.mod *.o
./compile
v2.2.2/src> tree -L 3 ../..
../..
├── incmod
│ └── nemsio
│ ├── nemsio_module.mod
│ ├── nemsio_module_mpi.mod
│ ├── nemsio_openclose.mod
│ ├── nemsio_read.mod
│ └── nemsio_write.mod
├── libnemsio.a
└── v2.2.2
└── src
├── compile
├── compile-cray.log
├── compile-gnu.log
├── conf
├── FOR_SPA
├── incmod
├── Makefile
├── nemsio_module.f90
├── nemsio_module_mpi.f90
├── nemsio_openclose.f90
├── nemsio_read.f90
├── nemsio_write.f90
└── readme
6 directories, 17 files
#. sfcio
.. code-block:: bash
export COMP=gnu
export SFCIO_VER=v1.0.0
cd ${ROOT_DIR}/nwprod/lib/sfcio/v1.0.0/src
rm ../../libsfcio_big_4.a
chmod +x make.sh
./make.sh
v1.0.0/src> tree -L 3 ../gnu/
../gnu/
├── include
│ └── sfcio_v1.0.0_4
│ └── sfcio_module.mod
└── libsfcio_v1.0.0_4.a
2 directories, 2 files
#. sigio
.. code-block:: bash
export COMP=gnu
export SIGIO_VER=v2.0.1
cd ${ROOT_DIR}/nwprod/lib/sigio/v2.0.1/src
make clean
make
touch ../config.log
make install
v2.0.1/src> tree -L 2 sigio_v2.0.1/
sigio_v2.0.1/
├── config.log
├── include
│ ├── sigio_module.mod
│ └── sigio_r_module.mod
└── lib
└── libsigio_v2.0.1_4.a
2 directories, 4 files
#. sp
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/lib/sp/v2.0.2/src
chmod +x makelibsp.sh_gnu
rm ../../libsp_*a
./makelibsp.sh_gnu
v2.0.2/src> tree -L 1 ../..
../..
├── libsp_4.a
├── libsp_8.a
├── libsp_d.a
└── v2.0.2
#. w3emc
.. code-block:: bash
export COMP=gnu
export W3EMC_VER=v2.2.0
cd ${ROOT_DIR}/nwprod/lib/w3emc/v2.2.0/src
export W3EMC_SRC=`pwd`
chmod +x configure
chmod +x make_w3emc_lib.sh
./make_w3emc_lib.sh gfortran.setup
v2.2.0/src> tree -L 2 gnu/
gnu/
├── libw3emc_v2.2.0_4.a
├── libw3emc_v2.2.0_8.a
├── libw3emc_v2.2.0_d.a
├── w3emc_v2.2.0_4
│ ├── args_mod.mod
│ ├── gblevn_module.mod
│ └── mersenne_twister.mod
├── w3emc_v2.2.0_8
│ ├── args_mod.mod
│ ├── gblevn_module.mod
│ └── mersenne_twister.mod
└── w3emc_v2.2.0_d
├── args_mod.mod
├── gblevn_module.mod
└── mersenne_twister.mod
3 directories, 12 files
#. w3nco
.. code-block:: bash
export COMP=gnu
cd ${ROOT_DIR}/nwprod/lib/w3nco/v2.0.6/src
rm ../gnu/libw3nco_*.a
chmod +x makelibw3_nco.sh
./makelibw3_nco.sh
v2.0.6/src> tree -L 1 ../gnu/
../gnu/
├── libw3nco_v2.0.1_4.a
├── libw3nco_v2.0.1_8.a
└── libw3nco_v2.0.1_d.a
0 directories, 3 files
#. xmlparse
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/lib/xmlparse/v2.0.0/src
export COMP=gnu
make clean
./configure --prefix=${ROOT_DIR}/nwprod/lib/xmlparse/v2.0.0/${COMP} FC=gfortran
make clean
make
make install
v2.0.0/src> tree -L 3 ../gnu/
../gnu/
└── xmlparse-2.0.0
├── include
│ ├── read_xml_primitives.mod
│ └── xmlparse.mod
└── lib
└── libxmlparse.a
3 directories, 3 files
#. crtm
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/lib/crtm/v2.0.6/src
chmod +x configure/gfortran.csh.setup
. configure/gfortran.setup
make clean
make
mkdir -p ../gnu/include/crtm_v2.0.6
mv libsrc/libCRTM.a ../gnu/libcrtm_v2.0.6.a
mv libsrc/*.mod ../gnu/include/crtm_v2.0.6/
v2.0.6/src> tree -L 3 ../gnu/
../gnu/
├── include
│ └── crtm_v2.0.6
│ ├── aerosolcoeff_binary_io.mod
│ ├── aerosolcoeff_define.mod
│ ├── antcorr_binary_io.mod
│ ├── antcorr_define.mod
│ ├── asvar_define.mod
│ ├── becoeff_binary_io.mod
│ ├── becoeff_define.mod
│ ├── binary_file_utility.mod
│ ├── cloudcoeff_binary_io.mod
│ ├── cloudcoeff_define.mod
│ ├── compare_float_numbers.mod
│ ├── crtm_adjoint_module.mod
│ ├── crtm_aerosolcoeff.mod
│ ├── crtm_aerosol_define.mod
│ ├── crtm_aerosol_io.mod
│ ├── crtm_aerosolscatter.mod
│ ├── crtm_ancillaryinput_define.mod
│ ├── crtm_antcorr.mod
│ ├── crtm_atmabsorption.mod
│ ├── crtm_atmoptics.mod
│ ├── crtm_atmosphere_define.mod
│ ├── crtm_atmosphere_io.mod
│ ├── crtm_atmosphere.mod
│ ├── crtm_atmscatter_define.mod
│ ├── crtm_becoeff.mod
│ ├── crtm_channelinfo_define.mod
│ ├── crtm_cloudcoeff.mod
│ ├── crtm_cloud_define.mod
│ ├── crtm_cloud_io.mod
│ ├── crtm_cloudscatter.mod
│ ├── crtm_emiscoeff.mod
│ ├── crtm_fastem1.mod
│ ├── crtm_fastem3.mod
│ ├── crtm_forward_module.mod
│ ├── crtm_geometry_define.mod
│ ├── crtm_geometryinfo_define.mod
│ ├── crtm_geometryinfo.mod
│ ├── crtm_geometry_io.mod
│ ├── crtm_interpolation.mod
│ ├── crtm_ir_ice_sfcoptics.mod
│ ├── crtm_ir_land_sfcoptics.mod
│ ├── crtm_ir_snow_sfcoptics.mod
│ ├── crtm_irssem.mod
│ ├── crtm_ir_water_sfcoptics.mod
│ ├── crtm_k_matrix_module.mod
│ ├── crtm_lifecycle.mod
│ ├── crtm_lowfrequency_mwssem.mod
│ ├── crtm_model_profiles.mod
│ ├── crtm_module.mod
│ ├── crtm_moleculescatter.mod
│ ├── crtm_mw_ice_sfcoptics.mod
│ ├── crtm_mw_land_sfcoptics.mod
│ ├── crtm_mw_snow_sfcoptics.mod
│ ├── crtm_mw_water_sfcoptics.mod
│ ├── crtm_options_define.mod
│ ├── crtm_parameters.mod
│ ├── crtm_planck_functions.mod
│ ├── crtm_rtsolution_define.mod
│ ├── crtm_rtsolution_io.mod
│ ├── crtm_rtsolution.mod
│ ├── crtm_sensordata_define.mod
│ ├── crtm_sensordata_io.mod
│ ├── crtm_sensorinfo.mod
│ ├── crtm_sfcoptics_define.mod
│ ├── crtm_sfcoptics.mod
│ ├── crtm_spccoeff.mod
│ ├── crtm_surface_define.mod
│ ├── crtm_surface_io.mod
│ ├── crtm_surface_ir_emissivity.mod
│ ├── crtm_tangent_linear_module.mod
│ ├── crtm_taucoeff.mod
│ ├── crtm_utility.mod
│ ├── crtm_vis_water_sfcoptics.mod
│ ├── csvar_define.mod
│ ├── date_utility.mod
│ ├── emiscoeff_binary_io.mod
│ ├── emiscoeff_define.mod
│ ├── endian_utility.mod
│ ├── file_utility.mod
│ ├── fresnel.mod
│ ├── fundamental_constants.mod
│ ├── iatm_define.mod
│ ├── message_handler.mod
│ ├── nesdis_amsre_siceem_module.mod
│ ├── nesdis_amsre_snowem_module.mod
│ ├── nesdis_amsu_siceem_module.mod
│ ├── nesdis_amsu_snowem_module.mod
│ ├── nesdis_landem_module.mod
│ ├── nesdis_mhs_siceem_module.mod
│ ├── nesdis_mhs_snowem_module.mod
│ ├── nesdis_oceanem_module.mod
│ ├── nesdis_seaice_phyem_module.mod
│ ├── nesdis_snowem_parameters.mod
│ ├── nesdis_ssmi_module.mod
│ ├── nesdis_ssmi_siceem_module.mod
│ ├── nesdis_ssmi_snowem_module.mod
│ ├── nesdis_ssmis_seaiceem_module.mod
│ ├── nesdis_ssmis_snowem_module.mod
│ ├── ocean_permittivity.mod
│ ├── odas_atmabsorption.mod
│ ├── odas_binary_io.mod
│ ├── odas_define.mod
│ ├── odas_predictor_define.mod
│ ├── odas_predictor.mod
│ ├── odas_taucoeff.mod
│ ├── odps_atmabsorption.mod
│ ├── odps_binary_io.mod
│ ├── odps_coordinatemapping.mod
│ ├── odps_define.mod
│ ├── odps_predictor_define.mod
│ ├── odps_predictor.mod
│ ├── odps_taucoeff.mod
│ ├── odssu_atmabsorption.mod
│ ├── odssu_binary_io.mod
│ ├── odssu_define.mod
│ ├── odssu_taucoeff.mod
│ ├── odzeeman_atmabsorption.mod
│ ├── odzeeman_predictor.mod
│ ├── odzeeman_taucoeff.mod
│ ├── profile_utility_parameters.mod
│ ├── rtv_define.mod
│ ├── search_utility.mod
│ ├── sensorinfo_parameters.mod
│ ├── sort_utility.mod
│ ├── spccoeff_binary_io.mod
│ ├── spccoeff_define.mod
│ ├── spectral_units_conversion.mod
│ ├── ssu_input_define.mod
│ ├── taucoeff_define.mod
│ ├── type_kinds.mod
│ ├── zeeman_input_define.mod
│ └── zeeman_utility.mod
└── libcrtm_v2.0.6.a
2 directories, 133 files
# Used by compiling gsi and wrfpost
cd ${ROOT_DIR}/nwprod/lib/crtm/v2.2.3/src
chmod +x make_crtm_lib.sh
chmod +x configure
rm -fr ../gnu
./make_crtm_lib.sh gfortran.setup
mkdir -p ../gnu/include/crtm_v2.2.3
mv libsrc/libcrtm.a ../gnu/libcrtm_v2.2.3.a
mv libsrc/*.mod ../gnu/include/crtm_v2.2.3/.
chmod +x link_crtm_coeffs.sh
./link_crtm_coeffs.sh fix ${ROOT_DIR}/nwprod/lib/crtm/v2.2.3/fix
v2.2.3/src> tree -L 3 ../gnu/
../gnu/
├── include
│ └── crtm_v2.2.3
│ ├── accoeff_binary_io.mod
│ ├── accoeff_define.mod
│ ├── ada_module.mod
│ ├── aerosolcoeff_binary_io.mod
│ ├── aerosolcoeff_define.mod
│ ├── aovar_define.mod
│ ├── asvar_define.mod
│ ├── azimuth_emissivity_f6_module.mod
│ ├── azimuth_emissivity_module.mod
│ ├── binary_file_utility.mod
│ ├── cloudcoeff_binary_io.mod
│ ├── cloudcoeff_define.mod
│ ├── common_rtsolution.mod
│ ├── compare_float_numbers.mod
│ ├── crtm_adjoint_module.mod
│ ├── crtm_aerosolcoeff.mod
│ ├── crtm_aerosol_define.mod
│ ├── crtm_aerosolscatter.mod
│ ├── crtm_ancillaryinput_define.mod
│ ├── crtm_antennacorrection.mod
│ ├── crtm_aod_module.mod
│ ├── crtm_atmabsorption.mod
│ ├── crtm_atmoptics_define.mod
│ ├── crtm_atmoptics.mod
│ ├── crtm_atmosphere_define.mod
│ ├── crtm_atmosphere.mod
│ ├── crtm_channelinfo_define.mod
│ ├── crtm_cloudcoeff.mod
│ ├── crtm_cloud_define.mod
│ ├── crtm_cloudscatter.mod
│ ├── crtm_fastem1.mod
│ ├── crtm_fastemx.mod
│ ├── crtm_forward_module.mod
│ ├── crtm_geometry_define.mod
│ ├── crtm_geometryinfo_define.mod
│ ├── crtm_geometryinfo.mod
│ ├── crtm_interpolation.mod
│ ├── crtm_iricecoeff.mod
│ ├── crtm_ir_ice_sfcoptics.mod
│ ├── crtm_irlandcoeff.mod
│ ├── crtm_ir_land_sfcoptics.mod
│ ├── crtm_irsnowcoeff.mod
│ ├── crtm_ir_snow_sfcoptics.mod
│ ├── crtm_irssem.mod
│ ├── crtm_irwatercoeff.mod
│ ├── crtm_ir_water_sfcoptics.mod
│ ├── crtm_k_matrix_module.mod
│ ├── crtm_lifecycle.mod
│ ├── crtm_lowfrequency_mwssem.mod
│ ├── crtm_model_profiles.mod
│ ├── crtm_module.mod
│ ├── crtm_moleculescatter.mod
│ ├── crtm_mw_ice_sfcoptics.mod
│ ├── crtm_mw_land_sfcoptics.mod
│ ├── crtm_mw_snow_sfcoptics.mod
│ ├── crtm_mwwatercoeff.mod
│ ├── crtm_mw_water_sfcoptics.mod
│ ├── crtm_nltecorrection.mod
│ ├── crtm_options_define.mod
│ ├── crtm_parameters.mod
│ ├── crtm_planck_functions.mod
│ ├── crtm_predictor_define.mod
│ ├── crtm_predictor.mod
│ ├── crtm_rtsolution_define.mod
│ ├── crtm_rtsolution.mod
│ ├── crtm_secategory.mod
│ ├── crtm_sensordata_define.mod
│ ├── crtm_sensorinfo.mod
│ ├── crtm_sfcoptics_define.mod
│ ├── crtm_sfcoptics.mod
│ ├── crtm_spccoeff.mod
│ ├── crtm_surface_define.mod
│ ├── crtm_tangent_linear_module.mod
│ ├── crtm_taucoeff.mod
│ ├── crtm_utility.mod
│ ├── crtm_visicecoeff.mod
│ ├── crtm_vis_ice_sfcoptics.mod
│ ├── crtm_vislandcoeff.mod
│ ├── crtm_vis_land_sfcoptics.mod
│ ├── crtm_vissnowcoeff.mod
│ ├── crtm_vis_snow_sfcoptics.mod
│ ├── crtm_viswatercoeff.mod
│ ├── crtm_vis_water_sfcoptics.mod
│ ├── csvar_define.mod
│ ├── datetime_utility.mod
│ ├── date_utility.mod
│ ├── ellison.mod
│ ├── emission_module.mod
│ ├── endian_utility.mod
│ ├── file_utility.mod
│ ├── fitcoeff_define.mod
│ ├── foam_utility_module.mod
│ ├── fresnel.mod
│ ├── fundamental_constants.mod
│ ├── guillou.mod
│ ├── hyperbolic_step.mod
│ ├── iatm_define.mod
│ ├── irwatercoeff_define.mod
│ ├── large_scale_correction_module.mod
│ ├── liu.mod
│ ├── lseatlas_define.mod
│ ├── message_handler.mod
│ ├── mwwatercoeff_define.mod
│ ├── mwwaterlut_define.mod
│ ├── nesdis_amsre_siceem_module.mod
│ ├── nesdis_amsre_snowem_module.mod
│ ├── nesdis_amsu_siceem_module.mod
│ ├── nesdis_amsu_snowem_module.mod
│ ├── nesdis_atms_snowem_module.mod
│ ├── nesdis_landem_module.mod
│ ├── nesdis_mhs_siceem_module.mod
│ ├── nesdis_mhs_snowem_module.mod
│ ├── nesdis_seaice_phyem_module.mod
│ ├── nesdis_snowem_atms_parameters.mod
│ ├── nesdis_snowem_parameters.mod
│ ├── nesdis_ssmi_module.mod
│ ├── nesdis_ssmi_siceem_module.mod
│ ├── nesdis_ssmi_snowem_module.mod
│ ├── nesdis_ssmis_seaiceem_module.mod
│ ├── nesdis_ssmis_snowem_module.mod
│ ├── nltecoeff_binary_io.mod
│ ├── nltecoeff_define.mod
│ ├── nlte_parameters.mod
│ ├── nlte_predictor_define.mod
│ ├── nlte_predictor_io.mod
│ ├── odas_atmabsorption.mod
│ ├── odas_binary_io.mod
│ ├── odas_define.mod
│ ├── odas_predictor_define.mod
│ ├── odas_predictor.mod
│ ├── odas_taucoeff.mod
│ ├── odps_atmabsorption.mod
│ ├── odps_binary_io.mod
│ ├── odps_coordinatemapping.mod
│ ├── odps_define.mod
│ ├── odps_predictor_define.mod
│ ├── odps_predictor.mod
│ ├── odps_taucoeff.mod
│ ├── odssu_atmabsorption.mod
│ ├── odssu_binary_io.mod
│ ├── odssu_define.mod
│ ├── odssu_taucoeff.mod
│ ├── odzeeman_atmabsorption.mod
│ ├── odzeeman_predictor.mod
│ ├── odzeeman_taucoeff.mod
│ ├── pafv_define.mod
│ ├── profile_utility_parameters.mod
│ ├── reflection_correction_module.mod
│ ├── rtv_define.mod
│ ├── search_utility.mod
│ ├── secategory_define.mod
│ ├── sensorinfo_parameters.mod
│ ├── slope_variance.mod
│ ├── small_scale_correction_module.mod
│ ├── soi_module.mod
│ ├── sort_utility.mod
│ ├── spccoeff_binary_io.mod
│ ├── spccoeff_define.mod
│ ├── spectral_units_conversion.mod
│ ├── ssu_input_define.mod
│ ├── string_utility.mod
│ ├── subset_define.mod
│ ├── taucoeff_define.mod
│ ├── timing_utility.mod
│ ├── type_kinds.mod
│ ├── unittest_define.mod
│ ├── zeeman_input_define.mod
│ └── zeeman_utility.mod
└── libcrtm_v2.2.3.a
2 directories, 169 files
安装 :code:`gempak`
---------------------
* 下载最新版本的 `gempark `_
.. code-block:: bash
mkdir -p ${ROOT_DIR}/nwprod/gempak
cd ${ROOT_DIR}/nwprod/gempak
tar xvf gempak-7.5.1.tar ; rm gempak-7.5.1.tar
ln -s GEMPAK7/ NAWIPS
cd ${ROOT_DIR}/nwprod/gempak/NAWIPS
* edit :code:`Gemenviron.profile`
.. code-block:: bash
export NAWIPS=${ROOT_DIR}/nwprod/gempak/GEMPAK7
.. note::
libxslt need to be installed
Python version 3 is not working likely
* compile
.. code-block:: bash
. Gemenviron.profile
make everything |& tee make.log
安装 :code:`decoders`
--------------------------
.. code-block:: bash
# Use gempak envirs
# ------------------------
export NAWIPS=${ROOT_DIR}/nwprod/gempak/GEMPAK7
cd ${ROOT_DIR}/nwprod/gempak
cp NAWIPS/Gemenviron.profile .gempak
chmod +x .gempak
. .gempak
cd ${ROOT_DIR}/nwprod/decoders/decod_shared/lib
# Compile crex
# -------------------------
cd crex
rm libcrex.a
./makecrex.sh
cd ..
ln -sf crex/libcrex.a libcrex.a
# Compile madis
# ---------------------------
cd madis/src
make clean
make
cd ../..
ln -sf madis/lib/madislib.a libmadis.a
# Compile decod_ut
# ---------------------------
cd decod_ut
rm libdecod_ut.a
./makedecod_ut.sh
cd ..
ln -sf decod_ut/libdecod_ut.a libdecod_ut.a
# Compile bridge
# ---------------------------
cd bridge
rm libbridge.a
./makebridge.sh
cd ..
ln -fs bridge/libbridge.a libbridge.a
ln -fs ${ROOT_DIR}/nwprod/gempak/NAWIPS/os/linux64/lib/rsl.a librsl.a
# Compile decoders
# --------------------------
cd ${ROOT_DIR}/nwprod/gempak/NAWIPS/os/aix/lib
ln -fs gemlib.a libgemlib.a
ln -fs cgemlib.a libcgemlib.a
cd ${ROOT_DIR}/nwprod/decoders/decod_shared/include
ln -fs ${ROOT_DIR}/nwprod/gempak/NAWIPS/Gemenviron.profile .gempak
. .gempak
chmod +x make_decoder_links.sh
./make_decoder_links.sh
chmod +x make_all_decoders.sh
./make_all_decoders.sh
ecod_dccrad is not compiled due to the rsl.a
安装 :code:`obsproc`
-----------------------
1. 环境变量的设置
.. code-block:: bash
export obsproc_dump_ver=v5.0.1
export obsproc_dump_post_ver=v3.3.1
export obsproc_prep_ver=v5.2.1
export obsproc_prep_post_ver=v3.1.0
export obsproc_rap_ver=v3.1.0
export obsproc_shared_bufr_remorest_ver=v2.1.0
export obsproc_shared_bufr_dumplist_ver=v2.0.2
2. obsproc_shared
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/obsproc_shared/bufr_avgdata.v2.1.0/sorc
./clean.sh
./build.sh
./install.sh
cd ${ROOT_DIR}/nwprod/obsproc_shared/bufr_cword.v1.0.0/sorc
./build.sh
./install.sh
cd ${ROOT_DIR}/nwprod/obsproc_shared/bufr_remorest.${obsproc_shared_bufr_remorest_ver}/sorc
./clean.sh
./build.sh
./install.sh
#. obsproc_dump
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/obsproc_dump.${obsproc_dump_ver}/sorc
chmod +x clobber.sh
./clobber.sh
chmod +x build.sh
./build.sh
chmod +x install.sh
./install.sh
#. obsproc_dump_post
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/obsproc_dump_post.${obsproc_dump_post_ver}/sorc
mkdir -p ../exec
chmod +x clean.sh
./clean.sh
cd bufr_datacount.fd
make
make install
cd -
cd bufr_listdumps.fd
make
make install
#. obsproc_prep
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/obsproc_prep.${obsproc_prep_ver}/sorc
mkdir -p ../exec
chmod +x clean.sh
./clean.sh
chmod +x build.sh
./build.sh
chmod +x install.sh
./install.sh
#. obsproc_prep_post
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/obsproc_prep_post.${obsproc_prep_post_ver}/sorc
mkdir -p ../exec
chmod +x clean.sh
./clean.sh
cd gdascounts_ave.fd
make
make install
cd -
cd global_postevents.fd
make
make install
cd -
安装 :code:`prod_util`
-----------------------
1. :code:`fsync_file.cd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/prod_util.v1.1.3/sorc/fsync_file.cd
rm -f fsync_file
make
mv fsync_file ${ROOT_DIR}/nwprod/prod_util.v1.1.3/ush/.
2. :code:`mdate.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/prod_util.v1.1.3/sorc/mdate.fd
rm -f mdate
make
mv mdate ${ROOT_DIR}/nwprod/prod_util.v1.1.3/ush/.
#. :code:`ndate`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/prod_util.v1.1.3/sorc/ndate.fd
rm -f ndate
make
mv ndate ${ROOT_DIR}/nwprod/prod_util.v1.1.3/ush/.
#. :code:`nhour`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/prod_util.v1.1.3/sorc/nhour.fd
rm -f nhour
make
mv nhour ${ROOT_DIR}/nwprod/prod_util.v1.1.3/ush/.
#. :code:`~/.profile`
.. code-block:: bash
export PATH=${ROOT_DIR}/nwprod/prod_util.v1.1.3/ush:$PATH
安装 :code:`grib_util`
-----------------------
1. :code:`copygb2.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/copygb2.fd
export IP_INCd=${ROOT_DIR}/nwprod/lib/ip/v3.0.0/ip/v3.0.0/gnu/include/ip_v3.0.0_d
export IP_LIBd=${ROOT_DIR}/nwprod/lib/ip/v3.0.0/ip/v3.0.0/gnu/libip_v3.0.0_d.a
cp makefile_ubuntu_gnu makefile
make clean
make
make install
2. :code:`degrib2.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/degrib2.fd
cp makefile_ubuntu_gnu makefile
make clean
make
make install
#. :code:`grbindex.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/grbindex.fd
cp makefile_ubuntu_gnu makefile
make clean
make
make install
#. :code:`tocgrib2.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/tocgrib2.fd
cp makefile_ubuntu_gnu makefile
make clean
make
make install
#. :code:`tocgrib.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/tocgrib.fd
cp makefile_ubuntu_gnu makefile
make clean
make
make install
#. :code:`cnvgrib.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/cnvgrib.fd
cp makefile_ubuntu_gnu makefile
make clean
make
make install
#. :code:`copygb.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/copygb.fd
cp makefile_ubuntu_gnu makefile
make clean
make
make install
#. :code:`grb2index.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/grb2index.fd
cp makefile_ubuntu_gnu makefile
make clean
make
make install
#. :code:`grib2grib.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/grib2grib.fd
cp makefile_ubuntu_gnu makefile
make clean
make
make install
#. :code:`tocgrib2super.fd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/tocgrib2super.fd
cp makefile_ubuntu_gnu makefile
make clean
make
make install
#. :code:`wgrib.cd`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/sorc/wgrib.cd
cp makefile_wcoss_theia makefile
rm wgrib
make
make install
#. :code:`wgrib2`
必须使用较新版本的 :code:`wgrib2` , 下载 `wgrib2.v2.0.8 `_
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/grib_util.v1.1.1/
mv wgrib2.tgz.v2.0.8 wgrib2.tgz
tar xvf wgrib2.tgz
rm -fr sorc/wgrib2.cd
mv grib2 sorc/wgrib2.cd
cd sorc/wgrib2.cd
export CC=gcc
export CPP=/usr/bin/cpp
export FC=gfortran
make
cp wgrib2/wgrib2 ../../exec/.
#. check
.. code-block:: bash
grib_util.v1.1.1/sorc> tree -L 1 ../exec/
../exec/
├── cnvgrib
├── copygb
├── copygb2
├── degrib2
├── grb2index
├── grbindex
├── grib2grib
├── tocgrib
├── tocgrib2
├── tocgrib2super
├── wgrib
└── wgrib2
0 directories, 12 files
安装 :code:`bufr_util`
--------------------------
1. :code:`bufr_tranjb`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/bufr_util/sorc/bufr_tranjb.fd
mkdir -p ${ROOT_DIR}/nwprod/bufr_util/exc
make
make install
#. :code:`cwordsh`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/bufr_util/sorc/cwordsh.fd
make
mv cwordsh ../../exec/.
#. :code:`debufr`
编译步骤:
.. code-block:: bash
cd ${ROOT_DIR}/nwprod/bufr_util/sorc/debufr.fd
make
make install
#. check
.. code-block:: bash
nwp@VM-0-8-ubuntu:~/src/repository/nwprod/bufr_util/sorc/debufr.fd$ tree -L 1 ../../exec/
../../exec/
|-- bufr_tranjb
|-- cwordsh
-- debufr
0 directories, 3 files
安装 :code:`rap`
------------------
1. 公用环境变量
将如下环境变量加入到 :code:`~/.bashrc` 中
.. code-block:: bash
export NETCDF=$(spack location -i netcdf-fortran)
export PNETCDF=$(spack location -i parallel-netcdf)
export WRFIO_NCD_LARGE_FILE_SUPPORT=1
export WRF_DFI_RADAR=1
temporary enviromental variable:
export BASE=${ROOT_DIR}/nwprod/rap.v4.0.12/sorc
2. :code:`rap_wrfarw_serial`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_wrfarw.fd/WRFV3.8.1
./clean -aa
./clean -a
./clean
cd external/io_int/
rm -f *.f *.o *.obj *.i *.mod *.a diffwrf io_int_idx_tags.h
cd -
cp configure.wrf.serial configure.wrf
./compile em_real |& tee make.log
#. :code:`rap_wrfpost`
.. note::
我们使用 *community* 版本的 `UPP下载 `_ :
.. code-block:: bash
cd ${BASE}
# 解压缩在该目录下
cd UPPV4.0.1
./clean -a
cp configure.upp.gnu configure.upp
mkdir -p include lib bin
./compile |& tee make.log
cp bin/unipost.exe ../../exec/rap_wrfpost
#. :code:`rap_update_bc`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_update_bc.fd
make clean
make
#. :code:`rap_wps`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_wps.fd/WPSV3.9.0.1
./clean -aa
./clean -a
./clean
cp configure.wps.optim configure.wps
./compile |& tee make.log
cp ungrib/src/ungrib.exe ${BASE}/../exec/rap_wps_ungrib
cp metgrid/src/metgrid.exe ${BASE}/../exec/rap_wps_metgrid
.. note::
:code:`${BASE}/../parm/rap_Vtable.gfs` 必须替换成为 :code:`WRF-WPS` 提供的给**community**用户使用的 :code:`Vtable`
#. :code:`rap_wrfarw`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_wrfarw.fd/WRFV3.8.1
./clean -aa
./clean -a
./clean
cd external/io_int/
rm -f *.f *.o *.obj *.i *.mod *.a diffwrf io_int_idx_tags.h
cd -
cp configure.wrf.optim configure.wrf
./compile em_real |& tee make.log
cp main/real.exe ${BASE}/../exec/rap_wrfarw_real
cp main/wrf.exe ${BASE}/../exec/rap_wrfarw_fcst
#. :code:`rap_gsi`
编译步骤:
.. code-block:: bash
export NETCDF_INCLUDE="${NETCDF}/include"
export NETCDF_LDFLAGS_F="-L${NETCDF}/lib -lnetcdff -lnetcdf"
cd ${BASE}/rap_gsi.fd
cp Makefile.conf.wcoss Makefile.conf
make clean
cd gsdcloud
cp Makefile.conf.wcoss Makefile.conf
make clean
make
cd ..
make
make install
make library
#. :code:`rap_process_enkf`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_process_enkf.fd
cp Makefile.conf_gnu Makefile.conf
make clean
make
# it will fail, you have to manually build two files with fixed-form
mpif90 -FI -D_REAL8_ -DWRF -DRR_CLOUDANALYSIS -I./ -I/glade/work/xinzhang/repository/nwprod/rap.v4.0.12/sorc/rap_gsi.fd -I/glade/work/xinzhang/repository/nwprod/lib/crtm/v2.2.3/gnu/include/crtm_v2.2.3/ -I/glade/work/xinzhang/repository/nwprod/lib/sfcio/v1.0.0/gnu/include/sfcio_v1.0.0_4 -I/glade/work/xinzhang/repository/nwprod/lib/sigio/v2.0.1/src/sigio_v2.0.1/include -I/glade/work/xinzhang/repository/nwprod/lib/nemsio/incmod/nemsio -I/glade/u/home/xinzhang/spack/opt/spack/linux-sles12-broadwell/gnu-19.0.5.281/netcdf-fortran-4.5.2-iiqxmna2ejlv4c6g5oot4t4l5wicuau2/include -I/glade/work/xinzhang/repository/nwprod/lib/w3emc/v2.2.0/src/gnu/w3emc_v2.2.0_d -O3 -traceback -convert big_endian -assume byterecl -g -fp-model source -qopenmp -c dlarnv.f90
mpif90 -FI -D_REAL8_ -DWRF -DRR_CLOUDANALYSIS -I./ -I/glade/work/xinzhang/repository/nwprod/rap.v4.0.12/sorc/rap_gsi.fd -I/glade/work/xinzhang/repository/nwprod/lib/crtm/v2.2.3/gnu/include/crtm_v2.2.3/ -I/glade/work/xinzhang/repository/nwprod/lib/sfcio/v1.0.0/gnu/include/sfcio_v1.0.0_4 -I/glade/work/xinzhang/repository/nwprod/lib/sigio/v2.0.1/src/sigio_v2.0.1/include -I/glade/work/xinzhang/repository/nwprod/lib/nemsio/incmod/nemsio -I/glade/u/home/xinzhang/spack/opt/spack/linux-sles12-broadwell/gnu-19.0.5.281/netcdf-fortran-4.5.2-iiqxmna2ejlv4c6g5oot4t4l5wicuau2/include -I/glade/work/xinzhang/repository/nwprod/lib/w3emc/v2.2.0/src/gnu/w3emc_v2.2.0_d -O3 -traceback -convert big_endian -assume byterecl -g -fp-model source -qopenmp -c dlaruv.f90
make
make install
#. :code:`rap_full_cycle_surface`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_full_cycle_surface.fd
make clean
make
#. :code:`rap_process_cloud`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_process_cloud.fd
make clean
make
#. :code:`rap_update_fields`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_update_fields.fd
make clean
make
#. :code:`rap_process_sst`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_process_sst.fd
make clean
make
#. :code:`rap_update_gvf`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_update_gvf.fd
make clean
make
#. :code:`rap_process_imssnow.fd`
编译步骤:
.. code-block:: bash
cd ${BASE}/rap_process_imssnow.fd
make clean
make