intro story Coast / Estuary

Coast / Estuary

Coastal systems are among the most dynamic physical systems on earth and are subject to a large variety of forces. The morphodynamic changes occurring to coastlines worldwide are of great interest and importance. These changes occur as a result of the erosion of sediments, its subsequent transport as bed load or suspended load, and eventual deposition. 
 
Estuaries are partly enclosed water bodies that have an open connection to the coast. Estuaries generally have one or more branching channels, intertidal mudflats and/or salt marshes. Intertidal areas are of high ecological importance and trap sediments (sands, silts, clays and organic matter).
Within the Delft3D modelling package a large variation of coastal and estuarine physical and chemical processes can be simulated. These include waves, tidal propagation, wind- or wave-induced water level setup, flow induced by salinity or temperature gradients, sand and mud transport, water quality and changing bathymetry (morphology). Delft3D can also be used operationally e.g. storm, surge and algal bloom forecasting. 
 
On this discussion page you can post questions, research discussions or just share your experience about modelling coastal and/or estuarine systems with Delft3D FM. 
 

** PLEASE TAG YOUR POST! **

 

 

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

 

 

Message Boards

RE: MPICH for Delft3D

KL
K Liu, modified 3 Years ago.

MPICH for Delft3D

Padawan Posts: 48 Join Date: 10/23/13 Recent Posts
Dear all,

When I look at the build.sh for Deflt3D (version 5275), the parameters MPILIBS_ADDITIONAL and MPIFC are working with MPICH2. Since the recent release of MPICH has evolved to 3.0 version (Details at: https://www.mpich.org/about/overview/), I just wonder whether the MPICH 3.0 (and above) works fine for the compilation or not, and do we need to make any modification in the builder.sh.

Thank you!
Ben Williams, modified 3 Years ago.

RE: MPICH for Delft3D

Jedi Knight Posts: 114 Join Date: 3/23/11 Recent Posts
Hi K,

This is an interesting topic, and has been broached before. It is my understanding that there are good performance gains to be had using MPICH 3.0

In the below thread, you can see that this solution is already being used for Linux, as one can compile it oneself.

I tried the same for Windows intel fortran compiler and found it to be such a pain in the arse that I basically gave up on it. It could be that the MPI libraries included with Intel Cluster Studio are a better way to go for compiling on Windows, but I suspect that would require quite some rewriting.

If you do try, please post your findings to this forum! :-)

Cheers,

Ben

http://oss.deltares.nl/web/delft3d/coast-/-estuary/-/message_boards/view_message/578056/maximized
KL
K Liu, modified 3 Years ago.

RE: MPICH for Delft3D

Padawan Posts: 48 Join Date: 10/23/13 Recent Posts
Hi, Ben,

Thank you very much for your reply!

I installed mpich version 3.2-6build1 on Linux (Ubuntu), and I notice, in the builder script, we have a block of commands for path to MPICH2:

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

if [ "$compiler" = 'gnu' ]; then
addpath PATH /opt/mpich2-1.4.1-gcc-4.6.2/bin
export MPI_INCLUDE=/opt/mpich2-1.4.1-gcc-4.6.2/include
export MPILIBS_ADDITIONAL="-L/opt/mpich2-1.4.1-gcc-4.6.2/lib -lfmpich -lmpich -lmpl"
export MPIFC=/opt/mpich2-1.4.1-gcc-4.6.2/bin/mpif90
==================================

I got the /include folder and the mpif90, but I don't know what MPILIBS_ADDITIONAL. In your discussion here, I guess you also used an executable mpich. Do you have any suggestion how to set this parameter?

Thank you!

Ke
KL
K Liu, modified 3 Years ago.

RE: MPICH for Delft3D

Padawan Posts: 48 Join Date: 10/23/13 Recent Posts
Hi, Ben,

Just some updates:

If I export MPILIBS_ADDITIONAL= " ", I can pass the configuration and make, and get all the /bin/ and /lib/ folders. However, if I try the first example, I get:
/mybuild/lnx/flow2d3d/bin/d_hydro.exe: symbol lookup error: /mybuild/lnx/flow2d3d/bin/libflow2d3d.so: undefined symbol: MPI_Init

The error is related to MPI, and the only thing I am not quite sure is about this MPILIBS_ADDITIONAL.
If I export MPILIBS_ADDITIONAL="-L/usr/lib -lfmpich -lmpich -lmpl", then the make fails at:

/usr/bin/ld: cannot find -lfmpich
collect2: error: ld returned 1 exit status
Makefile:680: recipe for target 'libflow2d3d.la' failed
make[7]: *** [libflow2d3d.la] Error 1

I appreciate if you can give any comments.

Thank you!

Ke
Adri Mourits, modified 3 Years ago.

RE: MPICH for Delft3D (Answer)

Yoda Posts: 1224 Join Date: 1/3/11 Recent Posts
Hi Ke,

"undefined symbol: MPI_Init" means that during the compilation, your MPI libraries were not included. So you do need to specify some libraries at MPILIBS_ADDITIONAL.

"-L/usr/lib -lfmpich -lmpich -lmpl" means:
Look in directory "/usr/lib" for the libraries "fmpich.so", "mpich.so" and "mpl.so".

If we denote the directory in which you have installed your mpich libraries as "/mympich/lib", then:
- Replace "/usr/lib" by "/mympich/lib"
- Check what libraries are available in "/mympich/lib" and add only the availabel libraries.

Regards,

Adri
FC
Felipe Calleja Apéstegui, modified 1 Month ago.

RE: MPICH for Delft3D

Youngling Posts: 4 Join Date: 8/20/18 Recent Posts
Hi Adri, 
I'm struggling with this same issue. I started a thread in here (https://oss.deltares.nl/web/delft3d/coast-/-estuary/-/message_boards/message/3086919/maximized), and afterwards I found this topic in which there is something similar. 


I reinstalled Mpich 3.3.2 in a new folder following their instructions (https://www.mpich.org/static/downloads/3.3/mpich-3.3-installguide.pdf) and as far as I can see there were no errors. But when updating the build.sh with the paths to the libmpich.so and libmpl.so, libraries, the same error occurs in the make of Delft3d:


libtool: link: g++  -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o  .libs/flow2d3d.o .libs/flowol.o .libs/flow2d3d_version.o  -Wl,--whole-archive ../../../../../engines_gpl/flow2d3d/packages/flow2d3d/src/dd/.libs/libDD.a ../../../../../engines_gpl/flow2d3d/packages/manager/src/.libs/libFlow2d3dManager.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/main/.libs/libKernelMain.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/non_hydro/.libs/libKernelNonHydro.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/taylor/.libs/libKernelTaylor.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/timedep/.libs/libKernelTimedep.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/compute/.libs/libKernelCompute.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/compute_nearfar/.libs/libKernelComputeNearfar.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/compute_roller/.libs/libKernelComputeRoller.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/compute_sediment/.libs/libKernelComputeSediment.a ../../../../../engines_gpl/flow2d3d/packages/kernel_dd_f/src/.libs/libKernelDDF.a ../../../../../engines_gpl/flow2d3d/packages/io/src/preprocessor/.libs/libIOPreprocessor.a ../../../../../engines_gpl/flow2d3d/packages/io/src/output/.libs/libIOOutput.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/inichk/.libs/libKernelInichk.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/dd/.libs/libKernelDD.a ../../../../../engines_gpl/flow2d3d/packages/io/src/input/.libs/libIOInput.a ../../../../../engines_gpl/flow2d3d/packages/kernel/src/general/.libs/libKernelGeneral.a ../../../../../engines_gpl/flow2d3d/packages/io_dol_f/src/.libs/libIODolF.a ../../../../../engines_gpl/flow2d3d/packages/plugin_user/src/.libs/libPluginUser.a ../../../../../engines_gpl/flow2d3d/packages/plugin_culvert_c/src/.libs/libPluginCulvertC.a ../../../../../engines_gpl/flow2d3d/packages/data/src/allocation/.libs/libDataAllocation.a ../../../../../engines_gpl/flow2d3d/packages/data/src/general/.libs/libDataGeneral.a ../../../../../engines_gpl/flow2d3d/packages/data/src/gdp/.libs/libDataGDP.a ../../../../../engines_gpl/flow2d3d/packages/data/src/parallel_mpi/.libs/libDataParallelMPI.a ../../../../../engines_gpl/flow2d3d/packages/data/src/basics/.libs/libDataBasics.a ../../../../../utils_gpl/morphology/packages/morphology_io/src/.libs/libMorphologyIO.a ../../../../../utils_gpl/morphology/packages/morphology_kernel/src/.libs/libMorphologyKernel.a ../../../../../utils_gpl/morphology/packages/morphology_plugins_c/src/.libs/libMorphologyPluginsC.a ../../../../../utils_gpl/morphology/packages/morphology_data/src/.libs/libMorphologyData.a ../../../../../utils_lgpl/ec_module/packages/ec_module/src/.libs/libECModule.a ../../../../../utils_lgpl/delftio/packages/delftio/src/delftio_sync/.libs/libDelftIO.a ../../../../../utils_lgpl/d_hydro_lib/packages/d_hydro_lib/src/.libs/libDHydroLib.a ../../../../../utils_lgpl/esmfsm/packages/esmfsm/src/fsm/.libs/libESMFSM.a ../../../../../utils_lgpl/io_netcdf/packages/io_netcdf/src/.libs/libIONetcdf.a ../../../../../utils_lgpl/hyd_to_waq_part_lib/packages/hyd_to_waq_part_lib/src/.libs/libHydToWaqPartLib.a ../../../../../utils_lgpl/nefis/packages/nefis/src/.libs/libNefis.a ../../../../../utils_lgpl/deltares_common/packages/deltares_common_mpi/src/.libs/libDeltaresCommonMpi.a ../../../../../utils_lgpl/deltares_common/packages/deltares_common/src/.libs/libDeltaresCommon.a -Wl,--no-whole-archive  -Wl,-rpath -Wl,/home/felipe/delft3d_repository/src/utils_lgpl/delftonline/src/delftonline/.libs -Wl,-rpath -Wl,/home/felipe/delft3d_repository/src/lib ../../../../../utils_lgpl/delftonline/src/delftonline/.libs/libDelftOnline.so -L/home/felipe/mpich-install/lib -llibmpich -llibmpl -lfmpich -lnetcdff -L/usr/lib/gcc/x86_64-linux-gnu/7 -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/7/../../.. -lgfortran -lquadmath -lrt -lexpat -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o  -pthread -O2   -pthread -Wl,-soname -Wl,libflow2d3d.so.0 -o .libs/libflow2d3d.so.0.0.0
/usr/bin/ld: cannot find -llibmpich
/usr/bin/ld: cannot find -llibmpl
collect2: error: ld returned 1 exit status
Makefile:686: recipe for target 'libflow2d3d.la' failed
make[7]: *** [libflow2d3d.la] Error 1
make[7]: Leaving directory '/home/felipe/delft3d_repository/src/engines_gpl/flow2d3d/packages/flow2d3d/src'


I'm attaching the latest make.log file. 


Does anyone know what could be wrong? I tried using the export MPILIBS_ADDITIONAL=" " command in line 261 of the build.sh file, and it did compile. Nevertheless, I got the same error as K Liu (undefined symbol: MPI_Init) when trying to run the basic example. 

Thanks a lot
Felipe

Attachments: