FAQ - Delft3D Flexible Mesh
That's correct, you have to build the executables yourself. If you do not build the executables yourself then the Delft3D user interface will show the message that the executable "d_hydro.exe" could not be found.
Please compile the executables as described at 4. Compile the source code and follow the instruction at 5. Run a calculation to get the simulation running with the free open source code. Use a service package if you want to obtain a fully tested set of binaries.
Do I have to register?
- if you want to download the sourcecode: yes
- If you want to participate in this community: yes
Up to February 2013, Delft3D-FLOW was the only main kernel in the open source code (Delft3D-WAVE is just a shield around SWAN) and the tags are named using the full Delft3D-FLOW version number. Starting from March 2013, the DELWAQ source code was added with it's own different version number. The only similar part is the revision number. Since then, the tag names only contain the revision number. All tagged versions are fully tested.
Delft3D is a suite containing several engines (Delft3D-FLOW, DELWAQ, Delft3D-WAVE, etc.), GUIs (for each engine) and tools (QuickPlot, RGFGRID, QUICKIN, etc.). Each component has its own version number. The complete Delft3D suite also has its own version number. With the "Delft3D version number" is normally meant the "Delft3D suite version number".
Delft3D version 4.01.00.rc.09 contains (among others):
RGFGRID version 4.20.00.30984
Delft3D-FLOW version 6.01.04.3058
Delft3D-WAVE-GUI version 4.94.01.15654
All version numbers consist of 4 integers, separated by dots, e.g. 1.02.03.0004. Except the Delft3D suite itself which consists of 3 integers, e.g. 1.02.03. An additional string can be attached, e.g. 1.02.03.0004.rc.09. Description:
If the first integer is increased then the related component is not backwards compatible.
Recently, the Delft3D-FLOW version number increased from 5.xx.xx.xxxx to 6.xx.xx.xxxx. The 5-version needs an input file in ini-format, the 6-version in xml-format. See the release notes for more details.
The second integer denotes major changes, normally new functionality has been added.
The third integer denotes minor changes, bug fixes.
The fourth integer is a unique reference (revision number in the repository) to the version of the source code used to built this specific component version.
A string is attached when it's not standard official release. "rc" means "release candidate".
Doxygen is used as documentation tool for the source code. It's rather new to us and not complete, but at least the API and the structure will become clear.
You can download and install Doxygen yourself (see www.doxygen.org) and use the config file "src\doxyfile_delft3d" to generate the documentation.
If you have the right to commit changes yourself (for example in your own branch) you can use SVN or TortoiseSVN to commit the changes directly. If you don't have the right to commit, use SVN or TortoiseSVN to create a patch containing your changes. This will result in a file you can sent to email@example.com with the request to merge it in the trunk.
This depends on a lot of factors:
- The size and shape of your model area
For small models, ONP is lower.
When mmax is more or less equal to nmax, ONP is lower.
- The amount of processes switched on for your model (salinity, sediment transport, morphology, 3D, etc.)
For 2D, ONP is lower.
When having only a few processes, ONP is lower.
- Disk I/O
- RAM memory size
- Communication speed between partitions
In general, the communication between Delft3D-FLOW partitions is relatively intensive, regarding both the number of exchange moments and the amount of data being exchanged. As a result, ONP might be lower than expected.
There are two ways to use multiple cores and/or multiple machines for a calculation:
1) When DomainDecomposition is used to create the model, the subdomains will be spread automatically over the available cores in the machine by the operating system.
2) Single domain models can be spread over several cores/machines using MPI.
- Method 1) uses several cores on one machine by default (Windows and Linux).
- Method 1) using several machines is not working properly. This is a known bug.
- Method 1) and method 2) can not be combined in one calculation.
- Method 2) is implemented for both Linux and Windows. But on Windows it can not be used to spread over several machines but only to spread over several cores on the (local) machine.
- Method 2) does not work in combination with some functionalities, e.g. non-hydrostatic. See file "https://svn.oss.deltares.nl/repos/delft3d/trunk/src/engines_gpl/flow2d3d/doc/parallel_status.txt" for a detailed description of the current status.
- Recently added: Method 2) does work with WAVE-online. On Linux it also works using more than one machine/node, both by FLOW and SWAN. But you have to be sure that all data is written in one directory.
- Method 2) calculations can not be started using the Delft3D-MENU Graphical User Interface. Example scripts to start a parallel calculation are included when downloading the source code, see "...\examples\01_standard".
- When running SWAN via Delft3D-WAVE: by default, the OpenMP version of SWAN is used, using all cores of the local machine in parallel. This can be changed by editing the "swan.bat/swan.sh" file used. See the example scripts in directory "https://svn.oss.deltares.nl/repos/delft3d/trunk/src/third_party_open/swan/scripts"
- When running Delft3D-FLOW with Delft3D-WAVE online: it is useless to have FLOW running on one core and WAVE on another: they run in serial, alternating.
WARNING: Results may differ when switching to a parallel computation. The differences depend on the sensitivity of the model.
Delft3D-WAVE uses the OpenMP version of SWAN. This means that SWAN will run in parallel, using (by default) as many partitions/processes as there are cores/CPUs on the local system. To change this default, explicitly specify the number of threads to start in the swan batch file:
The batch file is named "swan.bat" and is located in subdirectory "win32\swan\scripts" in the Delft3D installation directory (default: "c:\Program Files (x86)\Deltares\Delft3D <versionnumber>"). Line 8 reads:
rem set OMP_NUM_THREADS=1
The "rem" at the front of the line ensures that this line is disabled. To ENable it, you have to remove the "rem":
The batch file is named "swan.sh" and is located in subdirectory "lnx64/swan/scripts" in the Delft3D installation directory (default: "/opt/delft3d"). Line 70 reads:
# export OMP_NUM_THREADS=1
The "#" at the front of the line ensures that this line is disabled. To ENable it, you have to remove the "#":
- The number, one in the examples above, can be replaced by any number.
- In case the method above "does not work": the most common problem is that Delft3D-WAVE uses another swan batch script on your system. Delft3D-WAVE uses environment parameter PATH to search for it and uses the first one found. You can check whether the changed batch script is being used by adding a write statement that should appear in the screen output.
When using a script:
Be sure that the single precision dynamic library is located in the same directory as the double precision version. On Windows the (default) double precision dll is named "flow2d3d.dll" and the (optional) single precision dll is named "flow2d3d_sp.dll". On Linux these names are "libflow2d3d.so" and "libflow2d3d_sp.so" respectively.
Edit the "config_d_hydro.xml" file in your testcase directory as follows:
Replace the line
When using an older Delft3D-FLOW version (4.xx or 5.xx), the "config_flow2d3d.ini" file must be changed in a comparable way:
Replace the line
Name = flow2d3d
Name = flow2d3d_sp
When using the Windows GUI:
The GUI does not support "Name = flow2d3d_sp" in the config file. The only way to do a single precision calculation is by renaming "flow2d3d_sp.dll" into "flow2d3d.dll".
In case of doubt, check in the tri-diag file whether the calculation was indeed single precision:
*** MESSAGE Single precision computation using reals of kind 4
or double precision:
*** MESSAGE Double precision computation using reals of kind 8
WARNING: Results may differ when switching from double to single precision. The differences depend on the sensitivity of the model.
The model is too big to fit in the memory of your machine. This can be checked by looking to the memory usage in the TaskManager (Windows) or by using the "top" command (Linux) while starting a calculation.
There are two restrictions to memory usage:
- A 32bit executable can not use more than about 3 Gb of RAM memory. By default, Delft3D-FLOW on Windows and on Linux is 64bit.
- The amount of memory used is limited by the amount of RAM memory in your machine.
There are four options to solve this problem:
- Simplify your model; decrease the number of cells in a dimension, or the number of processes/constituents.
- Use the single precision executable.
- Run the calculation in parallel using MPI.
- Windows XP/Vista and 32bit only: by default, a 32bit executable can not use more than 2 Gb of RAM memory. This can be increased to about 3 Gb as follows:
Add the flags /PAE /3GB to file "c:\boot.ini". Example lines:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=AllwaysOff /PAE /3GB
Some Intel related runtime dynamic libraries must be updated.
The start method has been changed (deltares_hydro.exe instead of delftflow.exe, config.ini file instead of commandline arguments on one line in an input file).
This may be caused by RemoteOLV being switched on by default. As a workaround, switch it off as follows:
In the Delft3D-FLOW UserInterface, open the mdf-file you want to run. Go to the "Output" definitions. Disable "Online visualisation" in the lower right corner of the window.
The behaviour is being improved at this moment; Delft3D-FLOW will report that it is waiting for the RemoteOLV to attach and it will be switched off by default.
The data exchange between FLOW and WAVE is via the nefis file "com-<runid>.dat". The synchronisation is handled via an internal module named "DelftIO", steered via file "dioconfig.ini" (must be present in the working directory). Everytime that FLOW writes data to the com-file, a WAVE calculation is started at that time step.
The communication between FLOW and WAVE is sensitive. In case of problems:
- Check that a file named "dioconfig.ini" is present in the working directory. Here is an ready-to-use example.
- Keep the working directory as clean as possible. Remove output files and temporary files before a new run, especially files named "com-*" and "WAVE2FLOW*".
- The switch from FLOW to WAVE and vice versa is slow. You may speed this up by opening the dioconfig.ini file in a text editor and replace the top three lines:
by something like:
But you have to be careful with this: the com-file must be accessible for the other program. This may take a while, especially when the working directory is on an external network drive.
This message may appear when Delft3D is built on a machine with a newer Linux kernel, and then the resulting binaries are copied to a machine with an older Linux kernel. There is no solution yet for this problem. You have to avoid this error by compiling it on a machine with an older kernel or run it on a machine with a newer kernel.
This means that when trying to run libflow2d3d.so, another so-file is needed and can not be found. If you execute the Linux command
you will get an overview of all so-files needed and whether the system can find their location. Probably some of the so-files can not be found on your system. This is signalled as follows by the ldd command
libDelftOnline.so => not found
You can solve that problem by locating them (libDelftOnline.so in the example) on your system and adding their path to the environment parameter LD_LIBRARY_PATH. You can do this in the runscript "examples\01_standard\run_flow2d3d.sh". Example lines to add, assuming "libDleftOnline.so" is in directory "/oss_delft3d/src/lib":
libdir=/oss_delft3d/src/lib export LD_LIBRARY_PATH=$libdir:$LD_LIBRARY_PATH
This error might appear when you compile Delft3D on a machine (named A) using Microsoft Visual C++ 2010 and try to run the executables on another machine (named B), not containing that C++ version. The easiest solution is to install the related redistributable on machine (B). Download links to both the 32-bit and the 64-bit version are at the middle of this Microsoft page.
On Windows, the message 'couldn't read file ".../create_config_xmlt.tcl": no such file or directory' appears ▶
The file "create_config_xml.tcl" is inside the source code. If you compile the (release version of the) source code, a directory named "<mysourcecodelocation>\bin\win32" will be created, containing also the file "<mysourcecodelocation>\bin\win32\menu\bin\create_config_xml.tcl". If you want to use the Deflt3D-GUI (version 4.01.00 or higher), you have to copy the full contents of "<mysourcecodelocation>\bin\win32" on top of the Delft3D installation directory (default directory "c:\Program Files (x86)\Deltares\Delft3D <versionnumber>\win32"), including the tcl file in the correct subdirectory. See also running a calculation.