Library Needed
--------------
1. NetCDF --> for WRF/WPS, NetCDF Fortran, version >=4.4
2. MPICH --> for multiprocessor
3. zlib --> for WPS
4. libpng --> for WPS
5. Jasper --> for WPS
Download: http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compilation_tutorial.php
Environment Variables
---------------------
1. Before Any/NetCDF Installation
DIR=/home/ardhi/Build_WRF/LIBRARIES
CC=gcc
CXX=g++
FC=gfortran
FCFLAGS=-m64
F77=gfortran
FFLAGS=-m64
2. After NetCDF Installation
PATH=$DIR/netcdf/bin:$PATH
NETCDF=$DIR/netcdf
3. After MPICH Installation
PATH=$DIR/mpich/bin:$PATH
4. Before zlib Installation
LDFLAGS=-L$DIR/grib2/lib
CPPFLAGS=-I$DIR/grib2/include
Library Compatibility Tests --> http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compilation_tutorial.php
----------------------------------------------------------------------------------------------------
Building WRF
------------
1. Without Chem
setenv WRF_CHEM=0
setenv J "-j 2"
setenv LD_LIBRARY_PATH $DIR/mpich/lib64:$DIR/netcdf/lib64 (for 64bit)
./configure --> Serial (32)/ dmpar (34), nesting 0 or 1
configure.wrf --> LIB_EXTERNAL --> -L/home/ardhi/Build_WRF/LIBRARIES/netcdf/lib64 -lnetcdff -lnetcdf (for 64bit)
2. With Chem
Same WRF version with Chem (e.g. both V.3.8.1)
setenv WRF_KPP 0
setenv WRF_CHEM 1
setenv EM_CORE 1
setenv NMM_CORE 0
setenv J "-j 2"
setenv LD_LIBRARY_PATH $DIR/mpich/lib64:$DIR/netcdf/lib64 (for 64bit)
./configure --> Serial (32)/ dmpar (34), nesting 0 or 1
configure.wrf --> LIB_EXTERNAL --> -L/home/ardhi/Build_WRF/LIBRARIES/netcdf/lib64 -lnetcdff -lnetcdf (for 64bit)
Building WPS
-----------
setenv JASPERLIB $DIR/grib2/lib
setenv JASPERINC $DIR/grib2/include
./configure --> Serial, GRIB2 (1) or dmpar, GRIB2 (3)
configure.wps --> WRF_LIB --> -L$(NETCDF)/lib64 -lnetcdff -lnetcdf (for 64bit)
Some useful LINUX/UNIX commands during installation:
- setenv (csh,tcsh), export (bash) : sets environment variables
- setenv (csh,tcsh), env | more/less : shows environment variables
- . ~/.bashrc (bash) : run configuration script/permanent environment variables
- echo $0 : shows the type of current shell
- lscpu : shows cpu, core and thread numbers (total cpu=socket x core x thread)
- uname -r : shows kernel release version
- uname -m, arch : shows whether linux is 32bit or 64bit
- lsb_release -a : shows distribution release name