| BASEMENTBasic Simulation Environment for computation of environmental flow and natural hazard simulationLaboratory of Hydraulics, Hydrology and Glaciology (VAW)ETH Zurich | ![]() |
You are not logged in.
Hello everyone,
I am new to BASEMENT and also new to this forum.
I am currently working with BASEMENT v4 (BASEMD). The model represents a headwater catchment including a settlement area and is based on OpenData Hessen datasets.
My objective is to simulate rainfall over the entire model domain.
Shortly after the start of the simulation, I receive numerous warnings about negative water depths. Below is the beginning of the console output ConsoleLog.txt:
STDOUT : BASEMENT v4.2.0 (v4.2.0)
STDOUT : BASEMD setup binary
STDOUT : -> Command file for BASEMD domain provided.
STDOUT :
STDOUT : ------------------------------------------------------------
STDOUT : BASEMENT successfully processed all necessary jobs!
STDOUT :
STDOUT : BASEMENT v4.2.0 (v4.2.0)
STDOUT : BASEMD omp binary
STDOUT : -> Domain: Input file has been successfully parsed and passed preliminary
STDOUT : validation
STDOUT : -> *** Start Simulation ***
STDOUT : -> OpenMP: Computation is executed in parallel using 32 threads
STDOUT : -> Domain Initialized
STDOUT : -> initialize domain done
STDOUT : -> initialize networkcommunication done
STDOUT : -> BASEplane: Initialization of SubDomain 'Kelzerbach-Test-Regen
STDOUT : -> Reserving the vectors for nodes, elements & edges
STDOUT : -> InputSMS: Number of Nodes = 474158
STDOUT : -> InputSMS: Number of Elements = 941263
STDOUT : -> InputSMS: Number of Nodestrings = 3
STDOUT : -> Checking disjoint nodes ...
STDOUT : -> Checking the area of elements ...
STDERR :
STDERR : WARNING -> Some elements in the mesh have very small area!
STDERR : These elements may cause instabilities in the program!
STDERR : See the file geofile_Grid.err for the element numbers.
STDOUT : -> Checking the aspect ratio of elements ...
STDOUT : -> Checking for concave quadrilateral elements ...
STDOUT : -> Checking for ambiguous quadrilateral elements ...
STDOUT : -> InputSMS: Number of Edges = 1415604
STDOUT : -> InputSMS: Total mesh area = 5.34128e+06 m2
STDOUT : -> BASEplane: Determine first time step delta_t = 0.184809
STDOUT : -> Domain: Starting time loop
STDOUT : TIME = 0.000000e+00 hyd. Time Step = 1.848089e-01 (SD: Kelzerbach-Test-Regen)
STDOUT : Qout[1] = 0.000000e+00 [m3/s] (1)
STDERR :
STDERR : WARNING -> Mass conservation is not guaranteed! Negative water depth in element
STDERR : #7288 (slope = 0.276772).
STDERR : missing volume to compensate the overdraft: 0.00248903
STDERR :
STDERR : WARNING -> Mass conservation is not guaranteed! Negative water depth in element
STDERR : #10710 (slope = 0.00925928).
STDERR : missing volume to compensate the overdraft: 0.0226539
STDERR :
STDERR : WARNING -> Mass conservation is not guaranteed! Negative water depth in element
STDERR : #10744 (slope = 0.00488969).
STDERR : missing volume to compensate the overdraft: 0.20565
STDERR :
STDERR : WARNING -> Mass conservation is not guaranteed! Negative water depth in element
STDERR : #12618 (slope = 0.41098).
STDERR : missing volume to compensate the overdraft: 0.0123378The rainfall input file Blockregen_50mm.txt is defined as follows:
# Time Precipitation
0.0 5
60 5
120 10
900 20
3600.0 50
7200.0 50The complete model configuration is given in the following model.json:
{
"SETUP": {
"simulation_name": "Kelzerbach-Test-Regen_50mm",
"BASEMD": {
"PHYSICAL_PROPERTIES": {
"gravity": 9.81,
"rho_fluid": 1000.0,
"viscosity": 1e-06
},
"BASEPLANE_2D": [
{
"region_name": "Kelzerbach-Test-Regen",
"GEOMETRY": {
"file": "Mesh_Kelzerbach_Test.2dm",
"type": "2dm",
"STRINGDEF": [
{
"name": "1",
"upstream_direction": "right"
},
{
"name": "2",
"upstream_direction": "right"
},
{
"name": "3",
"upstream_direction": "right"
}
]
},
"HYDRAULICS": {
"FRICTION": {
"default_friction": 35.0,
"type": "strickler",
"wall_friction": "on",
"input_type": "index_table",
"index": [
0,
1,
2,
3,
4,
5,
6,
7
],
"friction": [
35.0,
15.0,
25.0,
27.0,
30.0,
30.0,
70.0,
0.0
]
},
"INITIAL": {
"type": "index_table",
"index": [
0,
1,
2,
3,
4,
5
],
"h": [
0.05,
0.05,
0.05,
0.05,
0.05,
0.05
],
"v": [
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
],
"u": [
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
"BOUNDARY": [
{
"type": "hqrelation",
"slope": 2.72,
"name": "untere_RB",
"string_name": "1"
}
],
"SOURCE": {
"EXTERNAL_SOURCE": [
{
"name": "Blockregen_50mm",
"index": [
0,
1,
2,
3,
4,
5
],
"type": "source_discharge",
"file": "Blockregen_50mm.txt"
}
]
},
"PARAMETER": {
"minimum_water_depth": 0.049
}
},
"TIMESTEP": {
"CFL": 1.0,
"minimum_time_step": 0.001,
"maximum_time_step": 100.0,
"initial_time_step": 1.0,
"total_run_time": 7200.0
},
"OUTPUT": {
"console_time_step": 60.0,
"SPECIAL_OUTPUT": [
{
"type": "boundary_history",
"output_time_step": 60.0,
"flush_all_num_steps": 5,
"history_one_file": "yes",
"boundary_values": [
{
"accumulator": "none",
"value": "Q"
}
]
},
{
"output_time_step": 60.0,
"type": "node_centered",
"format": "sms",
"values": [
{
"accumulator": "none",
"value": "velocity"
},
{
"accumulator": "none",
"value": "depth"
},
{
"accumulator": "none",
"value": "wse"
},
{
"accumulator": "none",
"value": "z_node"
},
{
"accumulator": "none",
"value": "friction"
}
]
},
{
"type": "BASEviz",
"output_time_step": 60.0
},
{
"type": "stringdef_history",
"output_time_step": 60.0,
"flush_all_num_steps": 5,
"history_one_file": "yes",
"stringdefs": [
"2",
"3"
],
"stringdef_values": [
{
"accumulator": "none",
"value": "Q"
}
]
}
]
}
}
]
}
}
}Has anyone experienced similar behaviour during rainfall simulations in BASEMD?
I would greatly appreciate any suggestions, ideas, or hints on how to identify the cause of these warnings. In particular, I would be very grateful for advice on how to systematically troubleshoot this issue or determine whether the problem is related to the mesh, the rainfall setup, or another aspect of the model.
If additional information is required, I would be happy to provide it.
Thank you very much in advance for taking the time to read my post and for any help you can offer.
Best regards,
Elli
Offline
Hi Elli,
The first point I would check is the CFL number. A value of 1.0 is generally too high and can reduce numerical stability. I suggest using 0.95 or lower.
Rainfall-runoff simulations can also become challenging when very shallow flow occurs over steep or irregular terrain. Some of the warnings appear in cells with relatively steep slopes, for example around 0.4. The mesh warning about very small elements should therefore also be investigated using geofile_Grid.err.
A limited number of isolated negative-depth warnings does not necessarily mean that the overall simulation results are invalid. I suggest checking the total mass balance at the end:
total rainfall input = total outflow + water stored in the domain + numerical mass error
This provides a better indication of whether the warnings materially affect the results.
Is there a particular reason you are using BASEMD instead of BASEHPC? BASEHPC is usually considerably faster. However, we recently identified that its current solver is not always sufficiently accurate for very shallow flows over irregular terrain. The next release, which is planned for the coming weeks, will include a solver specifically implemented for rainfall-runoff simulations.
Best regards,
Matthias
Offline