Program: Course III – Reverse Engineering of Interactions with Adjoints

[Currently no dates available, please ask for further information!]

A Hands-On Introduction to Telemac-AD
Tutors: Uwe Merkel, Uwe Naumann, Jan Riehme
(3 days advanced users training, English)

Motivation: Calibration of models, optimisation of geometries, mapping of spatial sensitivities or solving flow interactions mostly leads to complex iterative engineering.

These tasks have in common, that thousands or more parameters influence the hydraulic model results. They normally end up with immense computational efforts and a compromise between accuracy and economic aspects.

The new technique to generate “Adjoints” (sensitivities) with backward interpretation of Telemac results is the best option available so far to exponentiate working speed while reaching a until now unknown spatial accuracy for sensitivities.

The modified Telemac version TELEMAC-AD can quantify dependencies of your desired result to any model point in your Telemac mesh, in one single calculation! TELEMAC-AD is currently only available to research funders and participants of this course.

For further information, test cases and some publications, visit our TELEMAC-AD dedicated website:

About the course: We start the course with teaching you to rethink flow problems backward in time. Then you’ll learn mathematics and software engineering behind the technique of backward interpretation with an algorithmically differentiated Telemac. The course is set up for designing and researching engineers with basic hydraulic modelling and TELEMAC knowledge.

When you arrive back home, you will

  • have a basic understanding of AD and its usability for optimization methods
  • be able to calculate common hydraulic sensitivity analyses on your PC with your own TELEMAC-AD version.
  • be able to apply AD software to your own Fortran Code

We learn in 5 steps:
Simple Examples -> Interpretation -> Intermediate Examples -> Mathematical background -> Tough Examples -> Applying the results to optimization strategies


The detailed program will be updated soon.


Day 1:  Understanding Spatial Sensitivities

Step by Step, with examples, we show you what sensitivities, tangents, gradients or adjoints are, we explain what means “backward interpretation” and how you can use this to resolve spatial flow interactions.

o        Simple Examples for Tangent Linear Problems

  • Finite Differences of simple equations written in Fortran
  • Finite Differences with a simple Telemac example
  • Comparing Sensitivities
  • Using Sensitivities for Calibration


o        Exercise A-I: Hands on Fortran!

  • Change values and configurations
  • Make mistakes and learn to understand them!

Lunch break

o        Algorithmic Differentiation Examples for Tangent Linear Problems

  • Algorithmic Differentiation of simple equations written in Fortran
  • Algorithmic Differentiation of a simple Telemac example
  • Investigation of accuracy and scalability
  • Tangent AD for parameter calibration


o        Exercise A-II: Calculate and compare spatial sensitivities with a precompiled Telemac-TLM

Day 2:  Software Engineering & Mathematics

Background knowledge torn down to human understandable facts. What is the algorithmically differentiating NAG Fortran Compiler? How does it work under the surface? What is the mathematics behind it. What is check pointing and tape recording?

o        Mathematics behind Automatic Differentiation and Adjoints

  • Accurate Backward Sensitivity Analysis and Examples
  • Adjoint AD on simple problem
  • Adjoint AD on simple Telemac example
  • Investigation of accuracy and scalability
  • Adjoint AD for parameter calibration


o        Exercise B-I: Hands-on Adjoint AD

Lunch break

o        Software Engineering: AD-enabled NAG Fortran Compiler Support

  • Compiler under the surface
  • Specific programming basics
  • Examples


o        Exercise B-II:

  • Advanced example: Differentiating an iterative diffusion solver

o        Outlook: Large-Scale Adjoint Parameter Sensitivity Analysis

Day 3:  Using TELEMAC-AD Inputs & Outputs for Open Channel Flow Problems

What you can do with adjoints, and how to set up models efficiently.

o        Explain the sensitivity problem to your computer

  • What is a Cost Function ?
  • Cost Functions for Open Channel Flow related problems


o        Exercise C-I:

  • Formulate your own Cost functions

Lunch break

o        Basic Flow Optimization Strategies based on Adjoints

  • The Methods of Least Squares and Steepest Descent
  • Optimization with Scientific Python (SciPy)


o        Exercise C-II: Calibrate a model!

  • Manual application of “Steepest Descent” with a spreadsheet program
  • Try SciPy

Participants shall come with basic knowledge of TELEMAC and basic programming skills. If in doubt, please contact us.

Training Material

We provide a bootable 240GB SSD with a preinstalled and preconfigured Live Ubuntu/Mint Linux. It includes an extensively tuned collection of programmes, with all manuals and examples plus docs. If you work during the training with this disk on your own laptop, we can be sure that all exercises work when you’re back at home, without configuration marathons and messed up primary discs. All included software is free anyway under LGPL and GNU license. Except the test version of the NAG FORTRAN compiler and your personal beta version of TELEMAC-AD, this is exclusively available for our course participants.

Dates & Cost

[Currently no dates available, please ask for further information!]

Printable PDF Program <HERE>