安装手册

  • the directory structure is:
> cd /g5/nwpc_ep8/obsproc
> tree -L 1 nwprod
nwprod
├── batch_run_global_obsproc.py
├── build2.bash
├── build_obsproc.bash
├── com
├── crontab_job.bash
├── dcom
├── decoders
├── exec
├── fix -> decoders/decod_shared/fix
├── gempak
├── lib
├── obsproc_dump_post.v3.2.0
├── obsproc_dump.v3.2.1
├── obsproc_global.v3.1.2
├── obsproc_prep_post.v3.0.1
├── obsproc_prep.v5.2.0
├── obsproc_rap.v3.1.0
├── obsproc_shared
├── rap.v4.0.2
├── read_qcf.py
├── run_global_obsproc.bash
├── run_obsproc.py
├── run_rap_obsproc.bash
├── sorc
├── tmpprod
├── ush
├── util
└── versions

20 directories, 8 files

Building NCEP libraries

  • enter into NCEP libraries’ directory:

    > cd nwprod/lib
    
  • compile the libraries:

    > ./build1.bash
    
  • If successfully compiled:

    > tree -L 1
    .
    ├── build1.bash
    ├── clean.bash
    ├── graphics
    ├── incmod
    ├── libCRTM_2.0.5.a
    ├── libCRTM_2.0.6.a
    ├── libCRTM_2.1.3.a
    ├── libbacio_4.a
    ├── libbacio_8.a
    ├── libbufr_11.1.0_4_64.a
    ├── libbufr_11.1.0_4_64_DA.a
    ├── libbufr_11.1.0_8_64.a
    ├── libbufr_11.1.0_8_64_DA.a
    ├── libbufr_11.1.0_d_64.a
    ├── libbufr_11.1.0_d_64_DA.a
    ├── libbufr_11.1.0_s_64.a
    ├── libbufr_v10.2.5_4_64.a
    ├── libbufr_v10.2.5_8_64.a
    ├── libbufr_v10.2.5_d_64.a
    ├── libbufr_v10.2.5_s_64.a
    ├── libg2_4.a
    ├── libg2_d.a
    ├── libg2tmpl.a
    ├── libgfsio_4.a
    ├── libip_4.a
    ├── libip_8.a
    ├── libip_d.a
    ├── libnemsio_v2.2.2.a
    ├── libsfcio_big_4.a
    ├── libsigio_v2.0.1.a
    ├── libsp_v2.0.2_4.a
    ├── libsp_v2.0.2_8.a
    ├── libsp_v2.0.2_d.a
    ├── libtransutil_4.a
    ├── libtransutil_8.a
    ├── libtransutil_d.a
    ├── libw3emc_4.a
    ├── libw3emc_8.a
    ├── libw3emc_d.a
    ├── libw3nco_4.a
    ├── libw3nco_8.a
    ├── libw3nco_d.a
    ├── libxmlparse.a
    ├── make.log
    ├── progress.stat
    └── sorc
    

Building gempak

  • User can clone gempak from gempak_github and follow the instruction to build and install.

  • Enter into gempak directory:

    > cd nwprod/gempak
    > ln -s GEMPAK7/ NAWIPS
    
  • Edit GEMPAK7/Gemenviron.profile to set $NAWIPS to the new GEMPAK7 directory:

    # Please configure the following definitions to reflect your system:
    #
    # Top level directory:
        setenv NAWIPS /g5/nwpc_ep8/obsproc/nwprod/gempak/GEMPAK7
    #
    
  • Edit GEMPAK7/config/Makeinc.common to add hdf5 libraries to $NETCDF:

    NETCDF = $(OS_LIB)/libnetcdf.a $(OS_LIB)/libhdf5_hl.a $(OS_LIB)/libhdf5.a -ldl -lm -lz
    
  • Assume we are using gfortran in Linux, edit GEMPAK7/config/Makeinc.linux64_gfortran to add -I$(OS_INC) to $NCOPT:

    NCOPT = "CPPFLAGS=-DNDEBUG -Df2cFortran -I$(OS_INC)" "FFLAGS=-O -Wno-globals" "CFLAGS=-O $(NCII)" "CXX= "
    
  • cd to GEMPAK7, source Gemenviron.profile, and build:

    > cd GEMPAK7
    > . Gemenviron.profile
    > make everything
    
  • it makes lots of libs which will be used by decoders:

    > tree -L 1 os/linux64
    os/linux64
    ├── bin
    ├── include
    ├── lib
    └── share
    

Building utilities

  • enter into directory:

    > cd  /g5/nwpc_ep8/obsproc/nwprod
    
  • compile:

    > ./build2.bash
    
  • it compiles some utilities related to the grib file operators:

    > tree -L 1 util/exec/
    util/exec/
    ├── cnvgrib
    ├── copygb
    ├── copygb2
    ├── cwordsh
    ├── debufr
    ├── grb2index
    ├── grbindex
    ├── ndate
    ├── nhour
    ├── tocgrib
    ├── tocgrib2
    ├── wgrib
    └── wgrib2
    

Building obsproc

  • enter into directory:

    > cd  /g5/nwpc_ep8/obsproc/nwprod
    
  • compile:

    > ./build_obsproc.bash
    
  • it compiles all the obsproc executables:

    > tree -L 1 obsproc_*/exec
    obsproc_dump_post.v3.2.0/exec
    ├── bufr_datacount
    └── bufr_listdumps
    obsproc_dump.v3.2.1/exec
    ├── bufr_chkbfr
    ├── bufr_combfr
    ├── bufr_dcodwindsat
    ├── bufr_dumpmd
    ├── bufr_dupair
    ├── bufr_dupcor
    ├── bufr_dupmar
    ├── bufr_dupmrg
    ├── bufr_duprad
    ├── bufr_dupsat
    ├── bufr_dupshp
    ├── bufr_dupsst
    ├── bufr_edtbfr
    ├── bufr_geofil
    ├── bufr_quipc
    ├── bufr_raddate
    ├── bufr_supertmi
    ├── prepobs_prepssmi
    └── wave_dcodquikscat
    obsproc_prep_post.v3.0.1/exec
    ├── gdascounts_ave
    ├── global_postevents
    └── timetwin
    obsproc_prep.v5.2.0/exec
    ├── prepobs_cqcbufr
    ├── prepobs_cqcvad
    ├── prepobs_glerladj
    ├── prepobs_listheaders
    ├── prepobs_monoprepbufr
    ├── prepobs_mpcopybufr
    ├── prepobs_oiqcbufr
    ├── prepobs_prepacpf
    ├── prepobs_prepacqc
    ├── prepobs_prepanow
    ├── prepobs_prepdata
    ├── prepobs_prevents
    ├── prepobs_profcqc
    └── syndat_syndata
    
    0 directories, 38 files
    

Building decoders

  • enter into gempak directory:

    > cd /g5/nwpc_ep8/obsproc/nwprod/gempak
    > ln -fs GEMPAK7/Gemenviron.profile .gempak
    
  • edit .gempak, add following lines:

    GEMINC=$GEMPAK/include
    export GEMINC
    
  • enter into directory:

    > cd /g5/nwpc_ep8/obsproc/nwprod/decoders/decod_shared
    
  • compile:

    > ./build.bash
    
  • it compiles the decoders for different type obs.:

    > cd /g5/nwpc_ep8/obsproc/nwprod
    > tree -L 1 -I "tmp|*tbl|*headers|*log|fort*|*ksh|bufrtab*" decoders/decod_*/exec
    decoders/decod_dcacft_v3.3.0/exec
    └── decod_dcmicapsadmar
    decoders/decod_dcamdr_v3.4.1/exec
    └── decod_dcamdr
    decoders/decod_dcaxbt/exec
    └── decod_dcaxbt
    decoders/decod_dcaxbt_v3.0.0/exec
    └── decod_dcaxbt
    decoders/decod_dcbthy/exec
    └── decod_dcbthy
    decoders/decod_dcbthy_v3.0.0/exec
    └── decod_dcbthy
    decoders/decod_dccgrd/exec
    └── decod_dccgrd
    decoders/decod_dccgrd_v3.0.0/exec
    └── decod_dccgrd
    decoders/decod_dccimiss/exec
    └── decod_dccimiss
    decoders/decod_dccimisssatwind/exec
    └── decod_dccimisssatwind
    decoders/decod_dccimisssurf/exec
    ├── decod_dccimiss
    ├── decod_dccimisssurf
    └── run_dccimisssurf.py
    decoders/decod_dccimisssurf_v3.0.0/exec
    ├── decod_dccimiss
    ├── decod_dccimisssurf
    └── run_dccimisssurf.py
    decoders/decod_dccimissupr/exec
    ├── decod_dccimissupr
    └── run_dccimissupr.py
    decoders/decod_dccimissupr_v3.0.0/exec
    ├── decod_dccimissupr
    └── run_dccimissupr.py
    decoders/decod_dccimiss_v3.0.0/exec
    └── decod_dccimiss
    decoders/decod_dccoop/exec
    decoders/decod_dccoop_v3.0.0/exec
    decoders/decod_dccrn/exec
    decoders/decod_dccrn_v3.0.0/exec
    decoders/decod_dccsev/exec
    └── decod_dccsev
    decoders/decod_dccsev_v3.0.0/exec
    └── decod_dccsev
    decoders/decod_dccsjp/exec
    decoders/decod_dccsjp_v3.0.0/exec
    decoders/decod_dcdrbu/exec
    └── decod_dcdrbu
    decoders/decod_dcdrbu_v3.0.0/exec
    └── decod_dcdrbu
    decoders/decod_dcelrw/exec
    └── decod_dcelrw
    decoders/decod_dcelrw_v3.0.0/exec
    └── decod_dcelrw
    decoders/decod_dcepfl/exec
    └── decod_dcepfl
    decoders/decod_dcepfl_v3.0.0/exec
    └── decod_dcepfl
    decoders/decod_dcgpsw/exec
    └── decod_dcgpsw
    decoders/decod_dcgpsw_v3.0.0/exec
    └── decod_dcgpsw
    decoders/decod_dchydr/exec
    decoders/decod_dchydr_v3.0.0/exec
    decoders/decod_dcigdr/exec
    └── decod_dcigdr
    decoders/decod_dcigdr_v3.0.0/exec
    └── decod_dcigdr
    decoders/decod_dcjpfl/exec
    └── decod_dcjpfl
    decoders/decod_dcjpfl_v3.0.0/exec
    └── decod_dcjpfl
    decoders/decod_dckora/exec
    └── decod_dckora
    decoders/decod_dckora_v3.0.0/exec
    └── decod_dckora
    decoders/decod_dclsfc/exec
    └── decod_dccimiss
    decoders/decod_dclsfc_v3.0.0/exec
    └── decod_dccimiss
    decoders/decod_dcmap/exec
    decoders/decod_dcmap_v3.0.0/exec
    decoders/decod_dcmeso/exec
    decoders/decod_dcmeso_v3.0.0/exec
    decoders/decod_dcmetr_v3.1.0/exec
    └── decod_dcmetr
    decoders/decod_dcmicapsamdar/exec
    ├── decod_dcmicapsamdar
    └── run_dcmicapsamdar.py
    decoders/decod_dcmicapsamdar_v3.0.0/exec
    ├── decod_dcmicapsamdar
    └── run_dcmicapsamdar.py
    decoders/decod_dcmopf/exec
    └── decod_dcmopf
    decoders/decod_dcmopf_v3.0.0/exec
    └── decod_dcmopf
    decoders/decod_dcmssf/exec
    └── decod_dcmssf
    decoders/decod_dcmssf_v3.0.0/exec
    └── decod_dcmssf
    decoders/decod_dcnxrd/exec
    └── decod_dcnxrd
    decoders/decod_dcnxrd_v3.0.0/exec
    └── decod_dcnxrd
    decoders/decod_dcozon/exec
    └── decod_dcozon
    decoders/decod_dcozon_v3.0.0/exec
    └── decod_dcozon
    decoders/decod_dcp3rd/exec
    └── decod_dcp3rd
    decoders/decod_dcp3rd_v3.0.0/exec
    └── decod_dcp3rd
    decoders/decod_dcpflr/exec
    └── decod_dcpflr
    decoders/decod_dcpflr_v3.0.0/exec
    └── decod_dcpflr
    decoders/decod_dcrast/exec
    └── decod_dcrast
    decoders/decod_dcrast_v3.0.0/exec
    └── decod_dcrast
    decoders/decod_dcrocc/exec
    └── decod_dcrocc
    decoders/decod_dcrocc_v3.0.0/exec
    └── decod_dcrocc
    decoders/decod_dcscd/exec
    └── decod_dcscd
    decoders/decod_dcscd_v3.0.0/exec
    └── decod_dcscd
    decoders/decod_dcsynp_v3.7.0/exec
    └── decod_dcsynp
    decoders/decod_dctidg/exec
    decoders/decod_dctidg_v3.0.0/exec
    decoders/decod_dcusnd/exec
    ├── decod_dcusnd
    └── upr_data -> ../../upr_data
    decoders/decod_dcusnd_v3.0.0/exec
    └── decod_dcmssf
    decoders/decod_dcnxrd/exec
    └── decod_dcnxrd
    decoders/decod_dcnxrd_v3.0.0/exec
    └── decod_dcnxrd
    decoders/decod_dcozon/exec
    └── decod_dcozon
    decoders/decod_dcozon_v3.0.0/exec
    └── decod_dcozon
    decoders/decod_dcp3rd/exec
    └── decod_dcp3rd
    decoders/decod_dcp3rd_v3.0.0/exec
    └── decod_dcp3rd
    decoders/decod_dcpflr/exec
    └── decod_dcpflr
    decoders/decod_dcpflr_v3.0.0/exec
    └── decod_dcpflr
    decoders/decod_dcrast/exec
    └── decod_dcrast
    decoders/decod_dcrast_v3.0.0/exec
    └── decod_dcrast
    decoders/decod_dcrocc/exec
    └── decod_dcrocc
    decoders/decod_dcrocc_v3.0.0/exec
    └── decod_dcrocc
    decoders/decod_dcscd/exec
    └── decod_dcscd
    decoders/decod_dcscd_v3.0.0/exec
    └── decod_dcscd
    decoders/decod_dcsynp_v3.7.0/exec
    └── decod_dcsynp
    decoders/decod_dctidg/exec
    decoders/decod_dctidg_v3.0.0/exec
    decoders/decod_dcusnd/exec
    ├── decod_dcusnd
    └── upr_data -> ../../upr_data
    decoders/decod_dcusnd_v3.0.0/exec
    ├── decod_dcusnd
    └── upr_data -> ../../upr_data
    decoders/decod_dczsfc/exec
    ├── decod_dczsfc
    └── run_dczsfc.py
    
    0 directories, 71 files