User Forum of Software BASEMENT

BASEMENT
Basic Simulation Environment for computation of environmental flow and natural hazard simulation
Laboratory of Hydraulics, Hydrology and Glaciology (VAW)
ETH Zurich
Basement_Logo

You are not logged in.

#1 2026-06-19 10:42:32

water_elli
User
Registered: 2026-06-09
Posts: 2

Negative water depth warnings during rainfall simulation in BASEMD

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.0123378

The 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   50

The 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

#2 Yesterday 07:33:48

Matthias Bürgler
Developer
From: Zürich
Registered: 2019-04-04
Posts: 188

Re: Negative water depth warnings during rainfall simulation in BASEMD

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

Board footer

Powered by FluxBB