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