intro story D-Flow FM

 

D-Flow Flexible Mesh

D-Flow Flexible Mesh (D-Flow FM) is the new software engine for hydrodynamical simulations on unstructured grids in 1D-2D-3D. Together with the familiar curvilinear meshes from Delft3D 4, the unstructured grid can consist of triangles, pentagons (etc.) and 1D channel networks, all in one single mesh. It combines proven technology from the hydrodynamic engines of Delft3D 4 and SOBEK 2 and adds flexible administration, resulting in:

  • Easier 1D-2D-3D model coupling, intuitive setup of boundary conditions and meteorological forcings (amongst others).
  • More flexible 2D gridding in delta regions, river junctions, harbours, intertidal flats and more.
  • High performance by smart use of multicore architectures, and grid computing clusters.
An overview of the current developments can be found here.
 
The D-Flow FM - team would be delighted if you would participate in discussions on the generation of meshes, the specification of boundary conditions, the running of computations, and all kinds of other relevant topics. Feel free to share your smart questions and/or brilliant solutions! 

 

=======================================================
We have launched a new website (still under construction so expect continuous improvements) and a new forum dedicated to Delft3D Flexible Mesh.

Please follow this link to the new forum: 
/web/delft3dfm/forum

Post your questions, issues, suggestions, difficulties related to our Delft3D Flexible Mesh Suite on the new forum.

=======================================================

** PLEASE TAG YOUR POST! **

 

 

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

 


Message Boards

Compiling Delft3d in OpenSuse 13.1

Giovanni Besio, modified 4 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 4 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 4 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Yoda Posts: 1224 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 4 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 4 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Yoda Posts: 1224 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 4 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 4 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Yoda Posts: 1224 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 4 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Yoda Posts: 1224 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 4 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 4 Years ago.

RE: Compiling Delft3d in OpenSuse 13.1

Yoda Posts: 1224 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 4 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