What is DassFlow ?

You are not a research scientist ? Go directly to the real data examples: rivers and glaciers (menu on the left).
Otherwise the description below may interest you.

DassFlow: Data Assimilation for Free Surface Flows.
DassFlow is a computational platform for numerical simulation of free surface flows (both shallow flows models and mobile free-surface). Its significant features are the following. Variational Data Assimilation (VDA) aiming at minimizing the difference between the model output and the data (cost function); the gradient of the cost function is based on the adjoint code/equations (parameter identification - calibration); Robust and higher-order numerical schemes (FE, FV) are employed; Interfaces with real data sets (rivers, glaciers) are available; Covariance operators and potential prior information can be introduced into the VDA formulation.
Since low CPU time consuming, the 1D version (river flows modeling) can be employed-interfaced with sequential method libraries too.

DassFlow platform includes the following computational codes : DassFlow-2DShallow (2d shallow-water - FV schemes & 2d ice/lava flow models-multiregimes-FE schemes), DassFlow-3D (Stokes like systems -power law rheology, low inertia-, FE schemes), and DassFlow-1D (Saint-Venant, FV - FD schemes).

DassFlow-2DShallow: Shallow-water & Finite Volumes / Power-law fluids - Finite Elements. Fortran-MPI & Python
Applications: river hydraulic (flood plain, braided rivers, urban areas), storm surge, tidal waves / Glaciers (x-SIA, SSA), lava.
DassFlow-3D: Stokes equations, power-law rheology, ALE free surface (in 2d only), finite elements (3d and 2d). Fortran-MPI.
Applications: low Reynolds gravitational flows such as glacier, lava and mud flows (no yield stress yet).
DassFlow-1D: Shallow-water 1D (Saint-Venant's equation), Finite Volumes & Finite Differences. Fortran (& Python scripts).
Applications: 1D river flows (with lateral terms and network soon).
In addition of its VDA capabilities (adjoint-based method), the 1D code can be interfaced to sequential - stochastic methods available e.g. in OpenTurns.

Assimilated data can be combinations of in-situ and remote-sensed observations, either time-series or spatially distributed.

Funds - history The various developments have been co-funded by University of Toulouse-INSA group - CNRS (since 2008), CNES (2014-17); also by the french agency ANR (Amac & Adage 09-13).
The initial version (not available anymore) has been funded by the Grenoble Institute of Technology INPG, by Région Rhône-Alpes (research project "Numerical prediction for floods", 2003-06), and by INRIA Rhône-Alpes. Protecting licence APP submitted.

How does it work ?

The codes are written either in Fortran 90 (MPI for 2D and 3D versions) or in Python-Fenics (2D shallow, power-law fluids). It includes the forward codes (FE or FV schemes, 1st and 2nd order), the corresponding adjoint codes (source code differenciation or not) and the optimization method (minimization procedures).

It is interfaced with few free and commercial pre and post-processors (SIG tools, mesh generators, visualization tools), which allows to make runs with real data.

Models & forward solvers.
Current models are: 1D SWE (St-Venant), 2D SWE and 3D Stokes flow power-law rheology (with free-surface ALE if 2D vertical).
Numerical schemes are: finite volume schemes (1st order/2nd order) for shallow models and finite element schemes (2nd order, 2 fields or 4 fields) for Stokes models (power law rheology).
All type of boundary conditions required for applications are available.
Meshes: mix of triangles-quadrangles for 2d FV schemes, triangles, quadrangles and tetrahedron for FE (both 2D and 3D solvers are available).

Former extra capabilities:
1. lagrangian surface date (assimilation of lagrangian data at surface).
2. superposition of local 2D models over 1D model, with simultaneous calibration.
3. transport (pollutent or solids), sedimentation.

Adjoint codes / libraries / minimizer. Adjoint codes are generated either using the automatic differentiation tool Tapenade (INRIA) or by coding the adjoint equations. The 2D and 3D Fortran codes are parallel using MPI library. The linear systems are solved using MUMPS or NumPy libraries. Optimization procedures are either the NumPy ones or the L-BFGS quasi-Newton algorithm M1QN3 (from INRIA).

State-of-the-art know-hows of VDA.
Take into account prior information, covariances between fields. Sensitivity analysis mode available (spatially distributed gradient values), twin experiments mode (synthetic data) available.

Numerous benchmarks (both of the forward models and inverse ones) are available.

river test case river test case
river test case

Leze river (close to Toulouse), flood event.
Left) Sensitivity wrt bathymetry. Right down) Identification of inflow discharge Qin(t).
Data from ANR Amac (IMFT-IMT) 2010. Computations IMT-IMFT 2011.

glacier test case
glacier test case

3D inverse computations, Mertz glacier.
Sensitivity of surface velocities w.r.t. consistency (rheological law) (up) and basal friction (down).
2D flow-line data from Legos (Toulouse) & Nasa; 3D fake extension.
Computations IMT (R. Madec and N. Martin) 2013.