Dear colleagues,
I am working on mobile network simulation scenarios leveraging WOSS through this integration module.
Simulation scenario
Using the example as base, I modeled my scenario equipping all nodes with WossWaypointMobilityModel
, with a set of 4 nodes having fixed location and a single node roaming through the network.
Fixed nodes location example (CSV)
node_id, latitude, longitude, depth
0, 43.8291, 9.56412, 0.00791293
1, 43.8289, 9.56461, 0.00978492
2, 43.829, 9.56498, 0.0115909
3, 43.8289, 9.56476, 0
Roaming node waypoints file example (CSV):
time_seconds, latitude, longitude, depth
0, 43.8289, 9.56476, 0
10.1001, 43.829, 9.56475, 0
20.2994, 43.829, 9.56473, 0
30.3991, 43.829, 9.56472, 0
40.4995, 43.829, 9.5647, 0
50.6004, 43.829, 9.56469, 0
(...)
Geodesic coordinates from such files are fed to the mobility model via the CreateVectorFromCoordZ()
after having created woss::CoordZ
objects from related fields.
Depth is passed both to the CoordZ
constructor and via the CoordZ::setDepth()
function after each object creation.
WOSS configuration
According to advices regarding "high mobility" scenarios (1)(2), we can devise the following WOSS configurations:
-
ResDb + no memory optimization
WossHelper
attributes ResDbFilePath
and ResDbFileName
are properly defined, and the WossPropModel
instance used for WossChannel
is created with default attribute values.
-
No ResDb + memory optimization
Following previously mentioned advices, ResDbFilePath
and ResDbFileName
attributes of WossHelper
are left with default values, whereas WossPropModel
's MemoryOptimization
attribute is set to true
.
Outcome: error not appearing
Upon executing my simulation, I noticed the "NetCDF: HDF error" does not appear only if the network is completely static and configured accordingly: i.e. WOSS configuration 1, with the roaming node having just 2 waypoints, one at time 0 and the other at time N, both with having the same position (e.g. waypoint 0), effectively making it a static node as well.
Outcome: error consistently appearing
The error instead consistently shows up whenever the following simulation setups are executed:
- WOSS configuration 1 + roaming node;
- WOSS configuration 2 + effectively static node;
- WOSS configuration 2 + roaming node.
Activating all WOSS-related debug options via the WossHelper
interface does not shed more light on this error, which is only accompanied by the exception source "ncVar.cpp line:1626".
Simulations during which the error occurs actually run for some time first, and then crash upon this error appearing.
In order to rule out possible invalid locations of the roaming node, the "effectively static node" setup has been tested across multiple different locations for both WOSS configuration 1 and 2. WOSS configuration 2 was thus identified as problematic, whereas WOSS configuration 1 did not pose issues in the "effectively static node" case.
System setup
- ns-3 version: 3.33
- Acoustic toolbox: June 2020
- HDF5 version: v1.8.13
- NetCDF C version: v4.7.3
- NetCDF C++ version: v4.3.1
- WOSS version: 1.12.0
- GEBCO bathymetry: global, 2020
All libraries are installed as per instructions, passing all tests.