intro story General

General

At this page you can post questions or start discussions on general topics related to Delft3D:

At the bottom of the page an overview is given of the various available pre-and post-processing tools and their status regarding the open-source policy. More background information on the tools can be found here.

Please select a proper category below (if possible), to post your message or reply to an existing post. Please add tags to your posts to simplify searching.

 

** PLEASE TAG YOUR POST! **

 

 

Sub groups
D-Flow Flexible Mesh
DELWAQ
Cohesive sediments & muddy systems

 


Message Boards

RE: Compiling Delft3d in OpenSuse 13.1

Giovanni Besio, modified 5 Years ago.

Compiling Delft3d in OpenSuse 13.1

Youngling Posts: 24 Join Date: 10/25/12 Recent Posts
Dear all,
I am compiling tag 5425 in Open Suse with ifort 14, netcdf_4.3.3.1 for c and netcdf_4.4.2 for fortran
I include both the netcdf libraries through the build file using these commands

export NETCDFROOT=/opt/netcdf_4.3.3.1_cc
export PKG_CONFIG_PATH=/$NETCDFROOT/lib64/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NETCDFROOT/lib64
export NETCDFROOT=/opt/netcdf_4.4.2_fortran
export PKG_CONFIG_PATH=/$NETCDFROOT/lib64/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NETCDFROOT/lib64

I am getting errors in the building procedure:
datagroups.f90(559): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [NETCDF]
use netcdf
--------^
datagroups.f90(657): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [NETCDF]
use netcdf
--------^
datagroups.f90(775): error #6404: This name does not have a type, and must have an explicit type. [NF90_SHORT]
nctype = nf90_short
---------------------^
datagroups.f90(779): error #6404: This name does not have a type, and must have an explicit type. [NF90_INT]
nctype = nf90_int
---------------------^
datagroups.f90(787): error #6404: This name does not have a type, and must have an explicit type. [NF90_FLOAT]
nctype = nf90_float
---------------------^
datagroups.f90(791): error #6404: This name does not have a type, and must have an explicit type. [NF90_DOUBLE]
nctype = nf90_double
---------------------^
datagroups.f90(803): error #6404: This name does not have a type, and must have an explicit type. [NF90_CHAR]
nctype = nf90_char
---------------------^
datagroups.f90(927): error #6404: This name does not have a type, and must have an explicit type. [NF90_DEF_DIM]
error = nf90_def_dim(fds, file%dim_name(idm), file%dim_length(idm), idf)
------------------------^
datagroups.f90(936): error #6404: This name does not have a type, and must have an explicit type. [NF90_DEF_VAR]
error = nf90_def_var(fds, elm_name(ie), nctype, localdim, varid)
------------------^
datagroups.f90(943): error #6404: This name does not have a type, and must have an explicit type. [NF90_PUT_ATT]
error = nf90_put_att(fds, varid, 'standard_name', elm_sname(ie))
---------------------^
compilation aborted for datagroups.f90 (code 1)
make[6]: *** [datagroups.lo] Error 1
make[6]: Leaving directory `/opt/Delft3D/tags/tag_5425/src/engines_gpl/flow2d3d/packages/data/src/basics'
make[5]: *** [install-recursive] Error 1
make[5]: Leaving directory `/opt/Delft3D/tags/tag_5425/src/engines_gpl/flow2d3d/packages/data/src'
make[4]: *** [install-recursive] Error 1
make[4]: Leaving directory `/opt/Delft3D/tags/tag_5425/src/engines_gpl/flow2d3d/packages/data'
make[3]: *** [install-recursive] Error 1
make[3]: Leaving directory `/opt/Delft3D/tags/tag_5425/src/engines_gpl/flow2d3d/packages'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/opt/Delft3D/tags/tag_5425/src/engines_gpl/flow2d3d'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/opt/Delft3D/tags/tag_5425/src/engines_gpl'
make: *** [install-recursive] Error 1


Any hint?

Giovanni
IS
Iñaki Silanes, modified 5 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Youngling Posts: 4 Join Date: 10/18/12 Recent Posts
Starting from around tag 5169 the variable NETCDFROOT seems to be ignored. Unfortunately, I don't know the "new" way of telling the compiler the location of netcdf. I have the same problem as you do, and I am unable to compile any tag equal to or later than 5169.
Adri Mourits, modified 5 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Yoda Posts: 1212 Join Date: 1/3/11 Recent Posts
Hi Giovanni and Inaki,

It should still work using NETCDFROOT and PKG_CONFIG_PATH. Compilation line:
/bin/sh ../../../../../../libtool --tag=FC --mode=compile /opt/mpich2-1.0.8-intel64-PIC/bin/mpif90 -I../../../../../../engines_gpl/flow2d3d/packages/data/include -I../../../../../../utils_gpl/morphology/packages/morphology_data/src -I../../../../../../utils_gpl/morphology/packages/morphology_kernel/src -I../../../../../../utils_lgpl/delftio/packages/delftio/src/diof90 -I../../../../../../utils_lgpl/deltares_common/packages/deltares_common/src -I../../../../../../utils_lgpl/ec_module/packages/ec_module/src -DWITH_DELFTONLINE -I/p/delft3d/opt/netcdf-4.1.3mt/intel11.1/include -O2 -threads -fpp -recursive -reentrancy threaded -traceback -c -o datagroups.lo datagroups.f90

Is your NetCDF code compiled with exactly the same compiler as you use for Delft3D? Are you using the same vendor for the C and Fortran compiler?

What happens if you revert the changes in configure.ac of revision 4987 (remove line 137 (# NetCDF, for fortran 90...) to line 149 (AC_LANG_POP)?

Regards,

Adri
IS
Iñaki Silanes, modified 5 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Youngling Posts: 4 Join Date: 10/18/12 Recent Posts
Hi Adri,

Thanks for the response. The problem seems to be that NETCDFROOT is not used in the Makefile of four subdirectories, to add such path to FMODULES. Actually it is not used in any Makefile, but it is needed in four subdirs (the four places were a file making "use netcdf" appear), namely:

src/engines_gpl/flow2d3d/packages/data/src/basics/Makefile
src/engines_gpl/flow2d3d/packages/data/src/general/Makefile
src/engines_gpl/flow2d3d/packages/io/src/input/Makefile
src/engines_gpl/flow2d3d/packages/io/src/output/Makefile

If one opens those four Makefiles by hand and replaces:

FMODULES = [...]

with:

FMODULES = -I${NETCDFROOT]/include\
[...]

then make works without a hitch.

This can be automated in build.sh if between the "configure" (which creates all Makefiles) and the "make" (which uses those Makefiles) steps, the following bash code is inserted:

# Fix for some Makefiles:
BASEDIR="engines_gpl/flow2d3d/packages"
for SUBDIR in data/src/basics data/src/general io/src/input io/src/output
do
sed -i -e 's/^FMODULES =/FMODULES = -I${NETCDFROOT}\/include \\\n/' $BASEDIR/$SUBDIR/Makefile
done
Adri Mourits, modified 5 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Yoda Posts: 1212 Join Date: 1/3/11 Recent Posts
Hi Inaki,

In common.am, NetCDF references are arranged by default. But indeed, FMODULES is not adapted over there.

Thanks for your proposal. The funny thing is that someone complained that because of the NetCDF lines in common.am, all produced binaries depend on NetCDF.

So I will remove the related lines in common.am and arrange it for (only) the Makefiles who need it, including adapting FMODULES. I've moved this action to my short term To Do list.

Regards,

Adri
Giovanni Besio, modified 5 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Youngling Posts: 24 Join Date: 10/25/12 Recent Posts
I modified the Makefile as suggested by Inaki but I am still getting the same error

Inaki, your is working if you change the Makefile?
I get same error for tag 4970 but not for tag 5169
for tag 5275 and 5425 I get the same error

I am compiling with intel parallel studio 14

I compiled netcdf.4.3.3.1 for c and netcdf.4.2.2 for fortran

Actually I am referring to netcdf compiled with cc:
export NETCDFROOT=/opt/netcdf_4.3.3.1_cc


All the best

Giovanni
Adri Mourits, modified 5 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Yoda Posts: 1212 Join Date: 1/3/11 Recent Posts
Hi Giovanni,

I'm sorry, I'm running out of ideas. It looks as if different (version of) compilers are used for NetCDF and Delft3D. Or that the Intel Fortran compiler is used in combination with the Gnu C compiler. But re-reading your posts, everything looks allright (same compiler, Intel for both Fortran and C (or Gnu)).

Regards,

Adri
Adri Mourits, modified 5 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Yoda Posts: 1212 Join Date: 1/3/11 Recent Posts
Hi Giovanni,

I cleaned/smoothened the usage of NetCDF stuff in the automake environment in the trunk, revision 5525. Currently I'm testing revision 5596 and everything looks fine up to now. So, if you want to give it a try: use revision 5596 in the trunk.

Regards,

Adri
Giovanni Besio, modified 5 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Youngling Posts: 24 Join Date: 10/25/12 Recent Posts
Hi Adri,
I tried with version 5596 but I still get some error for the NETCDF package. I think that I need to re-check the installation of the NETCDF libraries.
For info the error I get is the following one:

datagroups.f90(559): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [NETCDF]
use netcdf
--------^
datagroups.f90(657): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [NETCDF]
use netcdf
--------^
datagroups.f90(775): error #6404: This name does not have a type, and must have an explicit type. [NF90_SHORT]
nctype = nf90_short
---------------------^
datagroups.f90(779): error #6404: This name does not have a type, and must have an explicit type. [NF90_INT]
nctype = nf90_int
---------------------^
datagroups.f90(787): error #6404: This name does not have a type, and must have an explicit type. [NF90_FLOAT]
nctype = nf90_float
---------------------^
datagroups.f90(791): error #6404: This name does not have a type, and must have an explicit type. [NF90_DOUBLE]
nctype = nf90_double
---------------------^
datagroups.f90(803): error #6404: This name does not have a type, and must have an explicit type. [NF90_CHAR]
nctype = nf90_char
---------------------^
datagroups.f90(927): error #6404: This name does not have a type, and must have an explicit type. [NF90_DEF_DIM]
error = nf90_def_dim(fds, file%dim_name(idm), file%dim_length(idm), idf)
------------------------^
datagroups.f90(936): error #6404: This name does not have a type, and must have an explicit type. [NF90_DEF_VAR]
error = nf90_def_var(fds, elm_name(ie), nctype, localdim, varid)
------------------^
datagroups.f90(943): error #6404: This name does not have a type, and must have an explicit type. [NF90_PUT_ATT]
error = nf90_put_att(fds, varid, 'standard_name', elm_sname(ie))
---------------------^
compilation aborted for datagroups.f90 (code 1)



and the setting for the configuration are the following:

CC=/opt/intel/bin/icc CXX=/opt/intel/bin/icpc FC=/opt/intel/bin/ifort F77=/opt/intel/bin/ifort MPICXX=/opt/mpich-install/bin/mpicxx MPIFC=/opt/mpich-install/bin/mpif90 FCLIBS='-L/opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64 -L/lib/../lib64 -L/lib/../lib/ -L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/../lib/ -L/lib64 -L/lib/ -L/usr/lib -L/usr/lib/i386-linux-gnu -L/opt/mpich-install/lib64 -lifport -lifcore -limf -lsvml -lm -lipgo -lirc -lpthread -lirc_s -ldl -lmpifort' FLIBS='-L/opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64 -L/lib/x86_64-linux-gnu/ -L/lib/../lib64 -L/lib/../lib/ -L/opt/mpich-install/lib64 -L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/../lib/ -L/lib64 -L/lib/ -L/usr/lib -L/usr/lib/i386-linux-gnu -lifport -lifcore -limf -lsvml -lm -lipgo -lirc -lpthread -lirc_s -ldl' LIBS=' -L/opt/mpich-install/lib64 -L/opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64 -lrt -lexpat -lstdc++ -limf -lsvml -lirng -lintlc -lmpich -lmpifort' PPFLAGS='-I/opt/zlib-1.2.8/include -I/opt/szip-2.1/include -I/opt/hdf5-1.8.15/include -I/opt/netcdf_4.3.3.1_cc/include ' LDFLAGS='-L/opt/zlib-1.2.8/lib -L/opt/szip-2.1/lib64 -L/opt/hdf5-1.8.15/lib64 -L/opt/netcdf_4.3.3.1_cc/lib64 ' ./configure --prefix=/opt/Delft3D/compiled/tag_5596_compiled/
Adri Mourits, modified 5 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Yoda Posts: 1212 Join Date: 1/3/11 Recent Posts
Hi Giovanni,

Search in your make screen-output for the line, compiling file datagroups.f90. That line should contain: .... -I$(NETCDFROOT)/include ...,
where $(NETCDFROOT) is the value of the related environment parameter (defined by you).

Regards,

Adri
Giovanni Besio, modified 5 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Youngling Posts: 24 Join Date: 10/25/12 Recent Posts
Hi Adri,
it seems that if I provide all the values for the NETCDF variable, I succeed in compiling with ifort and OpenSuse:

export NETCDFROOT=/opt/netcdf_4.4.3_ifort

export PKG_CONFIG_PATH=/$NETCDFROOT/lib64/pkgconfig:$PKG_CONFIG_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NETCDFROOT/lib64

export NETCDFROOT=/opt/netcdf_4.4.0_icc

export PKG_CONFIG_PATH=/$NETCDFROOT/lib64/pkgconfig:$PKG_CONFIG_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NETCDFROOT/lib64



Thanks for the help and the assistance!

Giovanni