Issues Linking WRFDA with NetCDF

Setting up the 3DVAR package within WRF.

Issues Linking WRFDA with NetCDF

Postby jfinch » Tue Aug 25, 2015 11:56 am

Greetings, I've been working to install WRFDA for several weeks without any success. The main issues I've discovered looking through the compilation log are undefined references to a few functions within netCDF. I'm linking to the same installation of netCDF-C and netCDF-Fortran that I used when installing WRFV3, WPS, and the Unified Post Processor, all of which function properly. The commands I'm running to configure and compile are below along with system specs, and the compilation log and configuration file are attached. Any help would be greatly appreciated.

Code: Select all
./configure wrfda
option 34 (DMPAR GNU (gfortran/gcc))
./compile all_wrfvar 2>&1 | tee compile.log


Code: Select all
# configure.wrf
#
# This file was automatically generated by the configure script in the
# top level directory. You may make changes to the settings in this
# file but be aware they will be overwritten each time you run configure.
# Ordinarily, it is necessary to run configure once, when the code is
# first installed.
#
# To permanently change options, change the settings for your platform
# in the file arch/configure.defaults then rerun configure.
#
SHELL           =       /bin/sh
DEVTOP          =       `pwd`
LIBINCLUDE      =       .
.SUFFIXES: .F .i .o .f90 .c

#### Get core settings from environment (set in compile script)
#### Note to add a core, this has to be added to.

COREDEFS = -DEM_CORE=1 \
           -DNMM_CORE=0 -DNMM_MAX_DIM=2600 \
      -DCOAMPS_CORE=0 \
      -DDA_CORE=1 \
           -DEXP_CORE=0

#### Single location for defining total number of domains.  You need
#### at least 1 + 2*(number of total nests).  For example, 1 coarse
#### grid + three fine grids = 1 + 2(3) = 7, so MAX_DOMAINS=7.

MAX_DOMAINS   =   21

#### DM buffer length for the configuration flags.

CONFIG_BUF_LEN   =   65536

#### Size of bitmasks (in 4byte integers) of stream masks for WRF I/O

MAX_HISTORY = 25

IWORDSIZE = 4
DWORDSIZE = 8
LWORDSIZE = 4

##############################################################################
#### The settings in this section are defaults that may be overridden by the
#### architecture-specific settings in the next section. 
##############################################################################

##############################################################################
#### NOTE:  Do not modify these default values here.  To override these
####        values, make changes after "Architecture specific settings". 
##############################################################################

#### Native size (in bytes) of Fortran REAL data type on this architecture ####
#### Note:  to change real wordsize (for example, to promote REALs from
####        4-byte to 8-byte), modify the definition of RWORDSIZE in the
####        section following "Architecture specific settings".  Do not
####        change NATIVE_RWORDSIZE as is it architecture-specific. 
NATIVE_RWORDSIZE = 4

#### Default sed command and script for Fortran source files ####
#SED_FTN = sed -f $(WRF_SRC_ROOT_DIR)/arch/standard.sed
SED_FTN = $(WRF_SRC_ROOT_DIR)/tools/standard.exe

# Hack to work around $(PWD) not changing during OSF1 build. 
# $(IO_GRIB_SHARE_DIR) is reset during the OSF1 build only. 
IO_GRIB_SHARE_DIR =

#### ESMF switches                 ####
#### These are set up by Config.pl ####
# switch to use separately installed ESMF library for coupling:  1==true
ESMF_COUPLING       = 0
# select dependences on module_utility.o
ESMF_MOD_DEPENDENCE = $(WRF_SRC_ROOT_DIR)/external/esmf_time_f90/module_utility.o
# select -I options for external/io_esmf vs. external/esmf_time_f90
ESMF_IO_INC         = -I$(WRF_SRC_ROOT_DIR)/external/esmf_time_f90
# select -I options for separately installed ESMF library, if present
ESMF_MOD_INC        =  $(ESMF_IO_INC)
# select cpp token for external/io_esmf vs. external/esmf_time_f90
ESMF_IO_DEFS        =
# select build target for external/io_esmf vs. external/esmf_time_f90
ESMF_TARGET         = esmf_time

# ESMFINCLUDEGOESHERE


#### NETCDF4 pieces

NETCDF4_IO_OPTS = -DUSE_NETCDF4_FEATURES -DWRFIO_NCD_LARGE_FILE_SUPPORT
GPFS            =
CURL            = -L/opt/netcdf/lib -lcurl
HDF5            = -L/opt/netcdf/lib -lhdf5_hl -lhdf5
ZLIB            = -L/opt/netcdf/lib -lz
DEP_LIB_PATH    =
NETCDF4_DEP_LIB = $(DEP_LIB_PATH) $(HDF5) $(ZLIB) $(GPFS) $(CURL)

# NETCDF4INCLUDEGOESHERE


##############################################################################

LIBWRFLIB = libwrflib.a


#### Architecture specific settings ####

# Settings for    Linux x86_64 ppc64le, gfortran compiler with gcc   (serial)
#
DESCRIPTION     =       GNU ($SFC/$SCC)
DMPARALLEL      =       # 1
OMPCPP          =       # -D_OPENMP
OMP             =       # -fopenmp
OMPCC           =       # -fopenmp
SFC             =       gfortran
SCC             =       gcc
CCOMP           =       gcc
DM_FC           =       mpif90 -f90=$(SFC)
DM_CC           =       mpicc -cc=$(SCC)
FC              =       time $(SFC)
CC              =       $(SCC) -DFSEEKO64_OK
LD              =       $(FC)
RWORDSIZE       =       8
PROMOTION       =       -fdefault-real-8
ARCH_LOCAL      =       -DNONSTANDARD_SYSTEM_SUBR -DWRF_USE_CLM -DNO_IEEE_MODULE
CFLAGS_LOCAL    =       -w -O3 -c
LDFLAGS_LOCAL   =       
CPLUSPLUSLIB    =       
ESMF_LDFLAG     =       $(CPLUSPLUSLIB)
FCOPTIM         =       -O2 -ftree-vectorize -funroll-loops
FCREDUCEDOPT   =       $(FCOPTIM)
FCNOOPT      =       -O0
FCDEBUG         =       # -g $(FCNOOPT) # -ggdb -fbacktrace -fbounds-check -ffpe-trap=invalid,zero,overflow
FORMAT_FIXED    =       -ffixed-form
FORMAT_FREE     =       -ffree-form -ffree-line-length-none
FCSUFFIX        =       
BYTESWAPIO      =       -fconvert=big-endian -frecord-marker=4
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO)
FCBASEOPTS      =       $(FCBASEOPTS_NO_G) $(FCDEBUG)
MODULE_SRCH_FLAG =     
TRADFLAG        =      -traditional
CPP             =      /lib/cpp -P
AR              =      ar
ARFLAGS         =      ru
M4              =      m4 -G
RANLIB          =      ranlib
CC_TOOLS        =      $(SCC)

###########################################################
######################
# POSTAMBLE

FGREP = fgrep -iq

ARCHFLAGS       =    $(COREDEFS) -DIWORDSIZE=$(IWORDSIZE) -DDWORDSIZE=$(DWORDSIZE) -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=$(LWORDSIZE) \
                     $(ARCH_LOCAL) \
                     $(DA_ARCHFLAGS) \
                       \
                       \
                      -DNETCDF \
                       \
                       \
                       \
                       \
                      -DCRTM \
                       \
                       \
                       \
                       \
                      -DUSE_ALLOCATABLES \
                      -DGRIB1 \
                      -DINTIO \
                      -DLIMIT_ARGS \
                      -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) \
                      -DMAX_DOMAINS_F=$(MAX_DOMAINS) \
                      -DMAX_HISTORY=$(MAX_HISTORY) \
            -DNMM_NEST=$(WRF_NMM_NEST)
CFLAGS          =    $(CFLAGS_LOCAL)   \
                      -DMAX_HISTORY=$(MAX_HISTORY) -DNMM_CORE=0
FCFLAGS         =    $(FCOPTIM) $(FCBASEOPTS)
ESMF_LIB_FLAGS  =   
# ESMF 5 -- these are defined in esmf.mk, included above
 ESMF_IO_LIB     =    -L$(WRF_SRC_ROOT_DIR)/external/esmf_time_f90 -lesmf_time
ESMF_IO_LIB_EXT =    -L$(WRF_SRC_ROOT_DIR)/external/esmf_time_f90 -lesmf_time
INCLUDE_MODULES =    $(MODULE_SRCH_FLAG) \
                     $(ESMF_MOD_INC) $(ESMF_LIB_FLAGS) \
                      -I$(WRF_SRC_ROOT_DIR)/main \
                      -I$(WRF_SRC_ROOT_DIR)/external/io_netcdf \
                      -I$(WRF_SRC_ROOT_DIR)/external/io_int \
                      -I$(WRF_SRC_ROOT_DIR)/frame \
                      -I$(WRF_SRC_ROOT_DIR)/share \
                      -I$(WRF_SRC_ROOT_DIR)/phys \
                      -I$(WRF_SRC_ROOT_DIR)/chem -I$(WRF_SRC_ROOT_DIR)/inc \
                      -I$(NETCDFPATH)/include \
                     
REGISTRY        =    Registry
CC_TOOLS_CFLAGS = -DNMM_CORE=0

 LIB_BUNDLED     = \
                      $(WRF_SRC_ROOT_DIR)/external/fftpack/fftpack5/libfftpack.a \
                      $(WRF_SRC_ROOT_DIR)/external/io_grib1/libio_grib1.a \
                      $(WRF_SRC_ROOT_DIR)/external/io_grib_share/libio_grib_share.a \
                      $(WRF_SRC_ROOT_DIR)/external/io_int/libwrfio_int.a \
                      $(ESMF_IO_LIB) \
                       \
                      $(WRF_SRC_ROOT_DIR)/frame/module_internal_header_util.o \
                      $(WRF_SRC_ROOT_DIR)/frame/pack_utils.o

 LIB_EXTERNAL    = \
                      -L$(WRF_SRC_ROOT_DIR)/external/io_netcdf -lwrfio_nf -L/opt/netcdf/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz -lcurl -lm -ldl

LIB             =    $(LIB_BUNDLED) $(LIB_EXTERNAL) $(LIB_LOCAL) $(LIB_WRF_HYDRO)
LDFLAGS         =    $(OMP) $(FCFLAGS) $(LDFLAGS_LOCAL)
ENVCOMPDEFS     =   
WRF_CHEM   =   0
CPPFLAGS        =    $(ARCHFLAGS) $(ENVCOMPDEFS) -I$(LIBINCLUDE) $(TRADFLAG)
NETCDFPATH      =    /opt/netcdf
PNETCDFPATH     =   

bundled:  io_only
external: io_only gen_comms_serial module_dm_serial $(ESMF_TARGET)
io_only:  esmf_time wrfio_nf   \
     wrf_ioapi_includes wrfio_grib_share wrfio_grib1 wrfio_int fftpack


######################
externals: io_only bundled external

gen_comms_serial :
   ( /bin/rm -f $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c )

module_dm_serial :
   ( if [ ! -e module_dm.F ] ; then /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F ; fi )

gen_comms_rsllite :
   ( if [ ! -e $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c ] ; then \
          /bin/cp $(WRF_SRC_ROOT_DIR)/tools/gen_comms_warning $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c ; \
          cat $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/gen_comms.c >> $(WRF_SRC_ROOT_DIR)/tools/gen_comms.c ; fi )

module_dm_rsllite :
   ( if [ ! -e module_dm.F ] ; then /bin/cp module_dm_warning module_dm.F ; \
          cat $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/module_dm.F >> module_dm.F ; fi )

wrfio_nf :
   ( cd $(WRF_SRC_ROOT_DIR)/external/io_netcdf ; \
          make $(J) NETCDFPATH="$(NETCDFPATH)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
          CC="$(SCC)" CFLAGS="$(CFLAGS)" \
          FC="$(SFC) $(PROMOTION) $(OMP) $(FCFLAGS)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )

wrfio_pnf :
   ( cd $(WRF_SRC_ROOT_DIR)/external/io_pnetcdf ; \
          make $(J) NETCDFPATH="$(PNETCDFPATH)" RANLIB="$(RANLIB)" CPP="$(CPP) $(ARCHFLAGS)" \
          FC="$(FC) $(PROMOTION) $(OMP) $(FCFLAGS)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )

wrfio_grib_share :
   ( cd $(WRF_SRC_ROOT_DIR)/external/io_grib_share ; \
          make $(J) CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
          FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" archive)

wrfio_grib1 :
   ( cd $(WRF_SRC_ROOT_DIR)/external/io_grib1 ; \
          make $(J) CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
          FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" archive)

wrfio_grib2 :
   ( cd $(WRF_SRC_ROOT_DIR)/external/io_grib2 ; \
          make $(J) CC="$(SCC)" CFLAGS="$(CFLAGS) " RM="$(RM)" RANLIB="$(RANLIB)" \
          CPP="$(CPP)" \
          FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="-traditional" AR="$(AR)" ARFLAGS="$(ARFLAGS)" \
          FIXED="$(FORMAT_FIXED)" archive)

wrfio_int :
   ( cd $(WRF_SRC_ROOT_DIR)/external/io_int ; \
          make $(J) CC="$(CC)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
          FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) $(OMP)" FGREP="$(FGREP)" \
          TRADFLAG="$(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" ARCHFLAGS="$(ARCHFLAGS)" all )

esmf_time :
   ( cd $(WRF_SRC_ROOT_DIR)/external/esmf_time_f90 ; \
          make $(J) FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" \
          CPP="$(CPP) -I$(WRF_SRC_ROOT_DIR)/inc -I. $(ARCHFLAGS) $(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )

fftpack :
   ( cd $(WRF_SRC_ROOT_DIR)/external/fftpack/fftpack5 ; \
          make $(J) FC="$(SFC)" FFLAGS="$(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" AR="$(AR)" \
          ARFLAGS="$(ARFLAGS)" CPP="$(CPP)" CPPFLAGS="$(CPPFLAGS)" RM="$(RM)" )

atm_ocn :
   ( cd $(WRF_SRC_ROOT_DIR)/external/atm_ocn ; \
          make $(J) CC="$(SCC)" CFLAGS="$(CFLAGS) " RM="$(RM)" RANLIB="$(RANLIB)" \
          CPP="$(CPP)" CPPFLAGS="$(CPPFLAGS)" \
          FC="$(DM_FC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) $(FCSUFFIX)" TRADFLAG="-traditional" AR="$(AR)" ARFLAGS="$(ARFLAGS)" \
          FIXED="$(FORMAT_FIXED)" )

$(WRF_SRC_ROOT_DIR)/external/RSL_LITE/librsl_lite.a :
   ( cd $(WRF_SRC_ROOT_DIR)/external/RSL_LITE ; make $(J) CC="$(CC) $(CFLAGS)" \
          FC="$(FC) $(FCFLAGS) $(OMP) $(PROMOTION) $(BYTESWAPIO)" \
          CPP="$(CPP) -I. $(ARCHFLAGS) $(OMPCPP) $(TRADFLAG)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" ;\
          $(RANLIB) $(WRF_SRC_ROOT_DIR)/external/RSL_LITE/librsl_lite.a )

######################
#   Macros, these should be generic for all machines

LN   =   ln -sf
MAKE   =   make -i -r
RM   =    rm -f


# These sub-directory builds are identical across all architectures

wrf_ioapi_includes :
   ( cd $(WRF_SRC_ROOT_DIR)/external/ioapi_share ; \
          $(MAKE) NATIVE_RWORDSIZE="$(NATIVE_RWORDSIZE)" RWORDSIZE="$(RWORDSIZE)" AR="$(AR)" ARFLAGS="$(ARFLAGS)" )

wrfio_esmf :
   ( cd $(WRF_SRC_ROOT_DIR)/external/io_esmf ; \
          make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) $(ESMF_MOD_INC)" \
          RANLIB="$(RANLIB)" CPP="$(CPP) $(POUND_DEF) " AR="$(AR)" ARFLAGS="$(ARFLAGS)" )

#   There is probably no reason to modify these rules

.F.i:
   $(RM) $@
   $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $*.F > $@
   mv $*.i $(DEVTOP)/pick/$*.f90
   cp $*.F $(DEVTOP)/pick

.F.o:
   $(RM) $@
   $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $(OMPCPP) $*.F  > $*.bb
   $(SED_FTN) $*.bb | $(CPP) $(TRADFLAG) > $*.f90
   $(RM) $*.b $*.bb
   @ if echo $(ARCHFLAGS) | $(FGREP) 'DVAR4D'; then \
          echo COMPILING $*.F for 4DVAR ; \
          $(WRF_SRC_ROOT_DIR)/var/build/da_name_space.pl $*.f90 > $*.f90.tmp ; \
          mv $*.f90.tmp $*.f90 ; \
        fi
   $(FC) -o $@ -c $(FCFLAGS) $(OMP) $(MODULE_DIRS) $(PROMOTION) $(FCSUFFIX) $*.f90
       

.F.f90:
   $(RM) $@
   $(SED_FTN) $*.F > $*.b
   $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $*.b  > $@
   $(RM) $*.b

.f90.o:
   $(RM) $@
   $(FC) -o $@ -c $(FCFLAGS) $(PROMOTION) $(FCSUFFIX) $*.f90

setfeenv.o : setfeenv.c
   $(RM) $@
   $(CCOMP) -o $@ -c $(CFLAGS) $(OMPCC) $*.c

.c.o:
   $(RM) $@
   $(CC) -o $@ -c $(CFLAGS) $*.c

# A little more adventurous.  Allow full opt on
# mediation_integrate.o \
# shift_domain_em.o \
# solve_em.o  <-- gets a little kick from SOLVE_EM_SPECIAL too, if defined
# mediation_feedback_domain.o : mediation_feedback_domain.F
# mediation_force_domain.o : mediation_force_domain.F
# mediation_interp_domain.o : mediation_interp_domain.F

# compile these without high optimization to speed compile
mediation_integrate.o : mediation_integrate.F
track_driver.o : track_driver.F
convert_nmm.o : convert_nmm.F
init_modules_em.o : init_modules_em.F
input_wrf.o : input_wrf.F
module_io.o : module_io.F
module_comm_dm.o : module_comm_dm.F
module_comm_dm_0.o : module_comm_dm_0.F
module_comm_dm_1.o : module_comm_dm_1.F
module_comm_dm_2.o : module_comm_dm_2.F
module_comm_dm_3.o : module_comm_dm_3.F
module_comm_nesting_dm.o : module_comm_nesting_dm.F
module_configure.o : module_configure.F
module_dm.o : module_dm.F
module_domain.o : module_domain.F
module_domain_type.o : module_domain_type.F
module_alloc_space_0.o : module_alloc_space_0.F
module_alloc_space_1.o : module_alloc_space_1.F
module_alloc_space_2.o : module_alloc_space_2.F
module_alloc_space_3.o : module_alloc_space_3.F
module_alloc_space_4.o : module_alloc_space_4.F
module_alloc_space_5.o : module_alloc_space_5.F
module_alloc_space_6.o : module_alloc_space_6.F
module_alloc_space_7.o : module_alloc_space_7.F
module_alloc_space_8.o : module_alloc_space_8.F
module_alloc_space_9.o : module_alloc_space_9.F
module_tiles.o : module_tiles.F
module_fddaobs_rtfdda.o : module_fddaobs_rtfdda.F
module_initialize.o : module_initialize.F
module_physics_init.o : module_physics_init.F
module_initialize_b_wave.o : module_initialize_b_wave.F
module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
module_initialize_real.o : module_initialize_real.F
module_initialize_real.o: module_initialize_real.F
module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
module_initialize_scm_xy.o : module_initialize_scm_xy.F
module_integrate.o : module_integrate.F
module_io_mm5.o : module_io_mm5.F
module_io_wrf.o : module_io_wrf.F
module_si_io.o : module_si_io.F
module_wps_io_arw.o : module_wps_io_arw.F
module_state_description.o : module_state_description.F
output_wrf.o : output_wrf.F
solve_interface.o : solve_interface.F
start_domain.o : start_domain.F
start_em.o : start_em.F
wrf_bdyin.o : wrf_bdyin.F
wrf_bdyout.o : wrf_bdyout.F
wrf_ext_read_field.o : wrf_ext_read_field.F
wrf_ext_write_field.o : wrf_ext_write_field.F
wrf_fddaobs_in.o : wrf_fddaobs_in.F
wrf_histin.o : wrf_histin.F
wrf_histout.o : wrf_histout.F
wrf_inputin.o : wrf_inputin.F
wrf_inputout.o : wrf_inputout.F
wrf_restartin.o : wrf_restartin.F
wrf_restartout.o : wrf_restartout.F
wrf_tsin.o : wrf_tsin.F
nl_get_0_routines.o : nl_get_0_routines.F
nl_get_1_routines.o : nl_get_1_routines.F
nl_set_0_routines.o : nl_set_0_routines.F
nl_set_1_routines.o : nl_set_1_routines.F

mediation_integrate.o \
track_driver.o \
convert_nmm.o \
init_modules_em.o \
module_dm.o \
module_fddaobs_rtfdda.o \
module_initialize.o \
module_initialize_b_wave.o \
module_initialize_hill2d_x.o \
module_initialize_quarter_ss.o \
module_initialize_real.o \
module_initialize_squall2d_x.o \
module_initialize_squall2d_y.o \
module_initialize_scm_xy.o \
module_integrate.o \
module_io_mm5.o \
module_io_wrf.o \
module_si_io.o \
module_wps_io_arw.o \
module_tiles.o \
output_wrf.o \
solve_interface.o \
start_domain.o \
start_em.o \
wrf_fddaobs_in.o \
wrf_tsin.o :
   $(RM) $@
   $(SED_FTN) $*.F > $*.b
   $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
   $(RM) $*.b
   @ if echo $(ARCHFLAGS) | $(FGREP) 'DVAR4D'; then \
          echo COMPILING $*.F for 4DVAR ; \
          $(WRF_SRC_ROOT_DIR)/var/build/da_name_space.pl $*.f90 > $*.f90.tmp ; \
          mv $*.f90.tmp $*.f90 ; \
        fi
   if $(FGREP) '!$$OMP' $*.f90 ; then \
          if [ -n "$(OMP)" ] ; then echo COMPILING $*.F WITH OMP ; fi ; \
     $(FC) -c $(PROMOTION) $(FCNOOPT) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $(OMP) $*.f90 ; \
        else \
          if [ -n "$(OMP)" ] ; then echo COMPILING $*.F WITHOUT OMP ; fi ; \
     $(FC) -c $(PROMOTION) $(FCNOOPT) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $*.f90 ; \
        fi

#solve_em.o :
#   $(RM) $@
#   $(SED_FTN) $*.F > $*.b
#   $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $*.b  > $*.f90
#   $(RM) $*.b
#   $(FC) -o $@ -c $(FCFLAGS) $(MODULE_DIRS) $(PROMOTION) $(FCSUFFIX) $(SOLVE_EM_SPECIAL) $(OMP) $*.f90

module_sf_ruclsm.o : module_sf_ruclsm.F

module_sf_ruclsm.o :
   $(RM) $@
   $(SED_FTN) $*.F > $*.b
   $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
   $(RM) $*.b
   if $(FGREP) '!$$OMP' $*.f90 ; then \
          echo COMPILING $*.F WITH OMP ; \
          if [ -n "$(OMP)" ] ; then echo COMPILING $*.F WITH OMP ; fi ; \
     $(FC) -c $(PROMOTION) $(FCREDUCEDOPT) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $(OMP) $*.f90 ; \
        else \
          if [ -n "$(OMP)" ] ; then echo COMPILING $*.F WITHOUT OMP ; fi ; \
     $(FC) -c $(PROMOTION) $(FCREDUCEDOPT) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $*.f90 ; \
        fi

# compile without OMP
input_wrf.o \
module_domain.o \
module_domain_type.o \
module_physics_init.o \
module_io.o \
wrf_bdyin.o \
wrf_bdyout.o \
wrf_ext_read_field.o \
wrf_ext_write_field.o \
wrf_histin.o \
wrf_histout.o \
wrf_inputin.o \
wrf_inputout.o \
wrf_restartin.o \
wrf_restartout.o \
module_state_description.o \
module_alloc_space.o \
module_alloc_space_0.o \
module_alloc_space_1.o \
module_alloc_space_2.o \
module_alloc_space_3.o \
module_alloc_space_4.o \
module_alloc_space_5.o \
module_alloc_space_6.o \
module_alloc_space_7.o \
module_alloc_space_8.o \
module_alloc_space_9.o \
module_comm_dm.o \
module_comm_dm_0.o \
module_comm_dm_1.o \
module_comm_dm_2.o \
module_comm_dm_3.o \
module_comm_nesting_dm.o \
module_configure.o :
   $(RM) $@
   $(CPP) -I$(WRF_SRC_ROOT_DIR)/inc $(CPPFLAGS) $(OMPCPP) $*.F  > $*.bb
   $(SED_FTN) $*.bb | $(CPP) $(TRADFLAG) > $*.f90
   @ if echo $(ARCHFLAGS) | $(FGREP) 'DVAR4D'; then \
          echo COMPILING $*.F for 4DVAR ; \
          $(WRF_SRC_ROOT_DIR)/var/build/da_name_space.pl $*.f90 > $*.f90.tmp ; \
          mv $*.f90.tmp $*.f90 ; \
        fi
   $(RM) $*.b $*.bb
   $(FC) -c $(PROMOTION) $(FCSUFFIX) $(FCNOOPT) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90


Some of the failing code:
Code: Select all
/lib/cpp -P -DNNN=7 -I./inc -DNL_set_ROUTINES nl_access_routines.F > xx7.f90
time gfortran -o nl_set_7_routines.o -c -fdefault-real-8 -O0 -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4    xx7.f90
6.20user 0.25system 0:06.47elapsed 99%CPU (0avgtext+0avgdata 338204maxresident)k
0inputs+392outputs (0major+83765minor)pagefaults 0swaps
rm -f xx6.f90
gfortran  -O2 -ftree-vectorize -funroll-loops -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4    -o da_update_bc.exe da_update_bc.o \
           da_netcdf_interface.o \
           da_module_couple_uv.o -L/home/vwadmin/downloads/WRFDA/external/io_netcdf -lwrfio_nf -L/opt/netcdf/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz -lcurl -lm -ldl
da_update_bc.o: In function `MAIN__':
da_update_bc.f:(.text+0xe84): undefined reference to `ncopn_'
da_update_bc.f:(.text+0xa0e9): undefined reference to `ncopn_'
da_netcdf_interface.o: In function `__da_netcdf_interface_MOD_da_get_bdytimestr_cdf':
da_netcdf_interface.f:(.text+0x332): undefined reference to `ncopn_'
da_netcdf_interface.f:(.text+0x4b5): undefined reference to `ncvid_'
da_netcdf_interface.f:(.text+0x7e5): undefined reference to `ncclos_'
da_netcdf_interface.o: In function `__da_netcdf_interface_MOD_da_put_var_2d_int_cdf':
da_netcdf_interface.f:(.text+0x1445): undefined reference to `ncopn_'
da_netcdf_interface.f:(.text+0x147c): undefined reference to `ncvid_'
da_netcdf_interface.f:(.text+0x1850): undefined reference to `ncvpt_'
da_netcdf_interface.f:(.text+0x1861): undefined reference to `ncclos_'
Jack Finch
Software Engineer
PEMDAS® Technologies and Innovations
jfinch
 
Posts: 5
Joined: Tue Aug 25, 2015 10:03 am

Re: Issues Linking WRFDA with NetCDF

Postby kwthomas » Tue Aug 25, 2015 4:16 pm

Hi..

It sounds like the version of netCDF that you are linking with wasn't built with the same compiler that you are using to build your program. A common symptom of this is to have unresolved external references that end in an underscore, which is what you have.
Kevin W. Thomas
Center for Analysis and Prediction of Storms
University of Oklahoma
kwthomas
 
Posts: 171
Joined: Thu Aug 07, 2008 6:53 pm

Re: Issues Linking WRFDA with NetCDF

Postby jfinch » Wed Aug 26, 2015 10:00 am

Hi Kevin, thank you for the reply. I've included the output of nc-config and nf-config below, indicating which compilers are being used to compile both the C and fortran versions of netCDF, which do correspond with what I'm using for WRFDA. Just to be sure, I'll build netCDF again from scratch today and report back if there's any change. Thank you again.

Code: Select all
./nc-config --all

This netCDF 4.3.3.1 has been built with the following features:

  --cc        -> gcc
  --cflags    ->  -I/opt/netcdf/include -I/opt/netcdf/include
  --libs      -> -L/opt/netcdf/lib -L/opt/netcdf/lib -lnetcdf -lhdf5_hl -lhdf5 -ldl -lm -lz

  --has-c++   -> no
  --cxx       ->
  --has-c++4  -> no
  --cxx4      ->

  --fc        ->
  --fflags    ->
  --flibs     ->
  --has-f90   -> no

  --has-dap   -> no
  --has-nc2   -> yes
  --has-nc4   -> yes
  --has-hdf5  -> yes
  --has-hdf4  -> no
  --has-pnetcdf-> no

  --prefix    -> /opt/netcdf
  --includedir-> /opt/netcdf/include
  --version   -> netCDF 4.3.3.1


Code: Select all
./nf-config --all

This netCDF-Fortran 4.4.2 has been built with the following features:

  --cc        -> gcc
  --cflags    ->  -I/opt/netcdf/include -I/opt/netcdf/include -I/opt/netcdf/include

  --fc        -> gfortran
  --fflags    -> -I/opt/netcdf/include
  --flibs     -> -L/opt/netcdf/lib -lnetcdff -L/opt/netcdf/lib -L/opt/netcdf/lib -lnetcdf -lnetcdf -lhdf5_hl -lhdf5 -lz -lcurl
  --has-f90   -> no
  --has-f03   -> yes

  --has-nc2   -> no
  --has-nc4   -> yes

  --prefix    -> /opt/netcdf
  --includedir-> /opt/netcdf/include
  --version   -> netCDF-Fortran 4.4.2
Jack Finch
Software Engineer
PEMDAS® Technologies and Innovations
jfinch
 
Posts: 5
Joined: Tue Aug 25, 2015 10:03 am

Re: Issues Linking WRFDA with NetCDF

Postby jfinch » Wed Aug 26, 2015 12:22 pm

After doing a complete reinstall of gcc, gfortran, netcdf-c, and netcdf-f, the WRFDA compilation continues to throw the same errors. Any other suggestions would be greatly appreciated.
Jack Finch
Software Engineer
PEMDAS® Technologies and Innovations
jfinch
 
Posts: 5
Joined: Tue Aug 25, 2015 10:03 am

Re: Issues Linking WRFDA with NetCDF

Postby jfinch » Thu Aug 27, 2015 9:57 am

For posterity's sake, we were able to solve this issue by reinstalling netCDF-c with the flag "--disable-netcdf4". This requires a separate installation of netCDF for WRFDA than for WRFV3, as WRFDA apparently doesn't support netcdf4, while it's desirable to be available for WRFV3.
Jack Finch
Software Engineer
PEMDAS® Technologies and Innovations
jfinch
 
Posts: 5
Joined: Tue Aug 25, 2015 10:03 am

Re: Issues Linking WRFDA with NetCDF

Postby wraner » Fri Jun 02, 2017 8:05 am

Yes, jfinch. I've tried to do it and everything became ok. I need a good forecasting because in my job it is not a game
Hi!
wraner
 
Posts: 1
Joined: Thu Jun 01, 2017 6:39 pm


Return to Installation

Who is online

Users browsing this forum: No registered users and 2 guests