33. Custom seabed bathymetry
The identification tag for this tutorial is PDS-AAX. Pregenerated input files for this tutorial are found in the folder named PDS-AAX in the provided tutorial input files.
33.1. Tutorial overview
This tutorial covers:
- Using a custom bathymetry
- RigidBody interaction with the seabed
- Visualizing the bathymetry in PostPDS and plotting

Fig. 33.1 Exclusion zone plot of custom bathymetry
33.2. Using a custom bathymetry
Note
- Many DObjects can interact with the sea floor.
- By default, a flat sea floor is used. However, custom bathymetry can be specified.
- Custom bathymetry data must be provided as a polygonal mesh .obj file located in the project folder.
- An overview of recommended practices for generating custom bathymetry mesh data can be found in the ProteusDS User Manual.
- Create a new project and move the provided custom bathymetry file CustomBathymetryMesh.obj into the project folder. The required files for this tutorial are located in the Section 33.1.
- In the environment input file, set:
$CustomBathymetry 1
and resolve follower properties. - Indicate the polygonal bathymetry mesh file:
$CustomBathymetryFile CustomBathymetryMesh.obj
.
Note
- All polygonal mesh files use a local reference frame. The polygonal mesh file
$CustomBathymetryMesh.obj
has its local reference frame located in the middle of the seabed.
- Specify the offset of the custom bathymetry mesh frame at 50 m depth from the global reference frame by specifying
$BathymetryOffset 0 0 50
.
33.3. Custom bathymetry with currents and waves
Note
- By default, currents ignore the presence of custom seabed bathymetry.
- A current boundary layer effect at the seabed can be applied to scale and align any current profile to local bathymetric variation.
- Custom bathymetry is not accounted for in wave calculations. Therefore, if waves are present in the simulation, it is important to set the
$WaterDepth
property to an appropriate reference depth for wave calculations.
- For this simulation, the approximate average water depth is 50 m. Set
$WaterDepth
to 50 m to ensure proper wave calculations are performed. - Execute a 1 second simulation and visualize the results in PostPDS to verify the bathymetry data has been loaded into the simulation.
33.4. Create a RigidBody
- Create a new RigidBody.
- By design, the mass will sink to the seabed. Set the mass to 300 kg and arbitrarily set the mass moment of inertia in the x and y direction to to 76 kgm2, and in the z direction to 150 kgm2.
- Set the RigidBody state at a location of (-20,0,50) m with no velocity.
- A physical hull is needed to interact with the soil. Add a cylinder feature to the library and set 0.2 m length and 1 m diameter.
- Add an instance of the cylinder to the RigidBody.
33.5. Simulating friction effects
- Set simulation length to 2 seconds and execute.
Note
- Note at around 1.8 seconds, the simulation slows down and adaptive numerical integrator shrinks the time step significantly.
- When the simulation is complete, load and visualize the results in PostPDS.
Note
- Note the bottom stiffness is soft enough to allow deep penetration of the RigidBody hull into the soil.
- The adaptive numerical integrator can be sensitive to effects like friction. Friction can involve large forces that oscillate in direction when the bodies are at low velocities.
- Set the seabed coefficient of friction
$MuSoil
to 0 in the soil properties listed in the library. - Set simulation length to 10 sec and run the simulation. Note the simulation runs consistently faster. When visualizing the results in PostPDS, the RigidBody slides down the slope of the face.
Note
- This shows friction is causing the time step to decrease and significantly increase simulation execution speed. To circumvent the issue, the constant time step integrator can be used.
33.6. Using the constant time step integrator with friction
- Add a new integrator to the library and call it RK4. In the new integrator, set:
$IntegrationTypeNum 0
,$InitialTimeStep 0.05
. - In the simulation input section, set:
$Integrator RK4
. - Set the seabed coefficient of friction back to 0.5.
- Run the simulation and load the results in PostPDS.
Note
- In this case, friction is present and large enough to prevent the RigidBody from sliding down the slope. However, the constant time step integrator does not adaptively change the time step due to friction effects and so the simulation executes rapidly.
- A disadvantage to the constant time step integrator is finding an acceptable time step to use that is applicable through the entire simulation. When cables are simulated in dynamic environments, time step requirements can vary by several orders of magnitude.
33.7. Environmental interaction with the seabed
- Set a uniform current profile with heading 0 deg and speed of 5 m/s.
- Create a parabolic boundary layer with a thickness of 2 m. Set
$SeabedBoundaryLayerFluidVelocityScaling
to 1 and$SeabedBoundaryLayerFollowSlope
to 1. Use the following properties to create the parabolic boundary layer:
$SeabedBoundaryLayerAuto 0
$SeabedBoundaryLayerFluidVelocityScaling 1
$SeabedBoundaryLayerFollowSlope 1
$SeabedBoundaryLayerProfile 0
$SeabedBoundaryLayerThickness 2
- Place a water velocity probe at (-20,0,52) m, which happens to be close to the location where the RigidBody impacts the seabed for the first time.
- Save and run the simulation for 10 seconds.
Note
- This demonstrates the effect of a custom bathymetry on the current boundary calculations as the z velocity component of the probe indicates an upwelling component at that location as the current profile follows the seabed slope in the boundary layer.
33.8. Viewing the custom bathymetry in PostPDS and plotting
- Open the simulation results in PostPDS.
- Hide the water surface and turn off any fog effects to better view the bathymetry.
- Right click on the Sea floor object in the object tree to bring up the custom bathymetry plotting options.
- Click the Display mesh edges. This option displays the polygonal mesh edges to allow polygonal mesh inspection.
- Right click on the Sea floor object and in the Bathymetry Plotting menu select Plot Depth. Accept the default maximum and minimum values. This option colours the bathymetry mesh based on depth.
Note
- The slope of the bathymetry can also be plotted by colour.
- The exclusion zone plots areas above and below a slope threshold. Regions above the slope threshold are indicated in red. Indicating exclusion zones is useful for locating potential safe locations for placing anchors or other equipment on the sea floor.
- Click Plot Exclusion Zones and use default inputs of an exclusion angle threshold of 20 deg, exclusion zone range of 10 m, and a buffer range of 20 m. Now all regions with slopes greater than 20 deg are clearly indicated.
Note
- The bathymetry slope data can be exported by clicking the Export Slope Data. This function saves the slope data to a .csv file that can be used for additional custom post processing.