# presentation.org -- Pamhyr
# Copyright (C) 2023  INRAE
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

# -*- coding: utf-8 -*-

#+STARTUP: indent hideblocks content beamer

#+TITLE: SimHydro 2023
#+SUBTITLE: \textbf{Pamhyr2}: a graphical user interface for 1D hydro-sedimentary modelling of rivers

# #+AUTHOR: Pierre-Antoine Rouby
#+LATEX_HEADER: \author[Pierre-Antoine Rouby]{\textbf{Pierre-Antoine Rouby$^{*}$}, Benoît Camenen, Lionel Pénard, Léa Kieffer, Théophile Terraz\\\texttt{<pierre-antoine.rouby@inrae.fr>}^{*}}
#+EMAIL: pierre-antoine.rouby@inrae.fr
#+INSTITUTE: INRAE Lyon-Villerbanne, teams River Hydraulics
#+LATEX_HEADER: \institute{INRAE Lyon-Villerbanne, River Hydraulics team}
#+DATE: 9th November

#+KEYWORDS: g ui, hydraulics, sedimentary, hydro-sedimentary, 1D modelling, freesoftware, foss

#+OPTIONS: H:2 toc:t num:t author:nil
#+LATEX_CLASS: beamer
#+LATEX_CLASS_OPTIONS: [slideopt,A4,showboxes,svgnames,aspectratio=169]
# #+LATEX_CLASS_OPTIONS: [presentation]
#+BEAMER_THEME: default
#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col)

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[frenchb]{babel}

#+BEGIN_SRC emacs-lisp :results silent :exports none
  (setq org-latex-pdf-process (list
    "latexmk -pdflatex='lualatex -shell-escape -interaction nonstopmode' -pdf -f  %f"))

  (add-to-list 'org-latex-packages-alist '("" "minted"))
  (setq org-latex-listings 'minted)
  (setq org-src-fontify-natively t)

  (org-add-link-type
   "cite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'text)
       (format "[%s]" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "cite:" desc)))
           (format "\\cite{%s}" path)
         (format "\\cite[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+END_SRC

#+LATEX_HEADER: \setbeamertemplate{footline}[frame number]
#+LATEX_HEADER: \setbeamertemplate{headline}{}
#+LATEX_HEADER: \usepackage{multirow}
#+LATEX_HEADER: \usepackage{fontawesome5}
#+LATEX_HEADER: \usepackage{tcolorbox}
#+LATEX_HEADER: \usepackage{tikz}

#+LATEX_HEADER: \logo{\includegraphics[width=.1\textwidth]{../../../../../src/View/ui/ressources/Logo-INRAE.png}}

#+LATEX_HEADER: \newcommand{\R}[1]{\rotatebox[origin=c]{90}{#1}}

# Beamer colors
#+LATEX_HEADER: \setbeamersize{text margin left=0.5cm,text margin right=0.5cm}
#+LATEX_HEADER: \setbeamerfont{alerted text}{series=\bfseries}
#+LATEX_HEADER: \setbeamerfont{example text}{series=\bfseries}

#+LATEX_HEADER: \definecolor{inrae_1}{RGB}{102,193,191}
#+LATEX_HEADER: \definecolor{inrae_2}{RGB}{0,150,152}
#+LATEX_HEADER: \definecolor{inrae_3}{RGB}{39,86,98}

#+LATEX_HEADER: \setbeamercolor{alerted text}{fg=inrae_1}
#+LATEX_HEADER: \setbeamercolor{structure}{fg=inrae_2}
#+LATEX_HEADER: \setbeamercolor{normal text}{fg=inrae_3}
#+LATEX_HEADER: \setbeamercolor*{author}{fg=inrae_3}

#+LATEX_HEADER: \usepackage[absolute,showboxes,overlay]{textpos}

#+LATEX_HEADER: \TPshowboxesfalse
#+LATEX_HEADER: \textblockorigin{5mm}{0mm}

# Biblio
#+LATEX_HEADER: \usepackage{natbib}
# #+LATEX_HEADER: \bibliographystyle{apalike}
#+LATEX_HEADER: \setbeamertemplate{bibliography item}{}
#+LATEX_HEADER: \renewcommand\bibfont{\scriptsize}
#+LATEX_HEADER: \setbeamertemplate{frametitle continuation}[from second]
#+LATEX_HEADER: \setbeamercolor*{bibliography entry title}{fg=inrae_3}
#+LATEX_HEADER: \setbeamercolor*{bibliography entry author}{fg=inrae_3}
#+LATEX_HEADER: \setbeamercolor*{bibliography entry location}{fg=inrae_3}

#+LATEX_HEADER: \usepackage{bbding}
#+LATEX_HEADER: \usepackage{pdfpages}

# Renew title page
#+LATEX_HEADER: \defbeamertemplate*{title page}{customized}[1][]
#+LATEX_HEADER: {
# #+LATEX_HEADER:   {
# #+LATEX_HEADER:     \usebeamerfont{date}\usebeamercolor[fg]{date}
# #+LATEX_HEADER:     \tikz[overlay,remember picture]
# #+LATEX_HEADER:     \node[xshift=-1cm,yshift=-1cm,text width=10cm] at (current page.north east) {
# #+LATEX_HEADER:        7$^{th}$ International Conference\\
# #+LATEX_HEADER:        8TH-10TH November\\
# #+LATEX_HEADER:        EDF Lab - CHATOU, FRANCE
# #+LATEX_HEADER:     }
# #+LATEX_HEADER:   }
#+LATEX_HEADER:   {
#+LATEX_HEADER:     \usebeamerfont{title}\inserttitle\par
#+LATEX_HEADER:     \usebeamerfont{title}\usebeamercolor[fg]{title}
#+LATEX_HEADER:     \large New modeling paradigms for water issues?\par
#+LATEX_HEADER:   }
#+LATEX_HEADER:   \bigskip
#+LATEX_HEADER:   \begin{center}
#+LATEX_HEADER:     \usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}
#+LATEX_HEADER:     {
#+LATEX_HEADER:       \LARGE\insertsubtitle\par
#+LATEX_HEADER:     }
#+LATEX_HEADER:     \bigskip
#+LATEX_HEADER:     \usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor\par
#+LATEX_HEADER:     \bigskip
#+LATEX_HEADER:     \usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute\par
#+LATEX_HEADER:     \bigskip
#+LATEX_HEADER:     \usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate\par
#+LATEX_HEADER:     \usebeamercolor[fg]{titlegraphic}\inserttitlegraphic
#+LATEX_HEADER:   \end{center}
#+LATEX_HEADER: }

# #+LATEX_HEADER: \newcommand{\tred}[1]{\textcolor{rouge_inrae}{#1}}

#+TODO: TODO WIP TOREVIEW | DONE

#+MACRO: pamhyr \textsc{PAMHyR}
#+MACRO: pamhyr2 \textsc{Pamhyr2}

#+MACRO: pause \pause
#+MACRO: framebreak \framebreak
#+MACRO: no
# #+MACRO: OK  \checkmark
#+MACRO: OK  \faIcon{check}
#+MACRO: bf \textbf{$1}

# #+latex: \frame{\tocpage}

* 1D hydro-sedimentary simulation at INRAE
** COMMENT 1D river flow simulation
*** INRAE (Lyon-Villerbanne)

- Mage [fn:: Mage: https://gitlab.irstea.fr/jean-baptiste.faure/mage]
- RubarBE [fn:: RubarBE:
  https://gitlab.irstea.fr/theophile.terraz/rubarbe]

*** Other project

- Mascaret [fn:: OpenTeleMac: http://www.opentelemac.org]
- HEC-RAS [fn:: HEC-RAS:
  https://www.hec.usace.army.mil/software/hec-ras]
- Mike 11 [fn:: Mike11:
  https://www.mikepoweredbydhi.com/products/mike-11]

** {{{pamhyr}}}
#+BEGIN_EXPORT latex
\tikz[overlay,remember picture]
\node[xshift=-4cm,yshift=4cm] at (current page.south east) {
  \includegraphics[width=7cm]{../images/PAMHyR.png}
};
#+END_EXPORT

{{{pamhyr}}} developed at INRAE in Java since the end of 90s

*** Features
- Graphical user interface
- Define and edit complexe 1D river models
- Run a solver
- Visualize simulation results

*** Compatibility
- 2 solvers *Mage and RubarBE*
# - Multi-reaches (Only for Mage)
- Multi-platform (Linux / Windows)

** {{{pamhyr}}}
#+BEGIN_EXPORT latex
\tikz[overlay,remember picture]
\node[xshift=-4cm,yshift=4cm] at (current page.south east) {
  \includegraphics[width=7cm]{../images/PAMHyR.png}
};
#+END_EXPORT

*** Conception issues
- Monolingual French
- Interface too different for each solver
- Impossible to undo an action

*** Huge technical debts
- Out dated technologies (UML $\to$ Java)
- Unmaintained library
- Unstable development process

Hard to maintain or add features to the interface

(No modification since 2016)

* Presentation of {{{pamhyr2}}}
** {{{Pamhyr2}}} - Needs - General constraints

Create a new version of {{{pamhyr}}} called {{{pamhyr2}}}

{{{pause}}}

*** Constraints for users experience
:PROPERTIES:
:BEAMER_COL: 0.5
:BEAMER_ENV: block
:END:
+ *User friendly*
+ *Multi platform* (at least Linux and Windows)
+ *Multi language* (at least English and French)
+ *Multi solver* (as much as possible, at least Mage and
  RubarBE)
+ *Single save file* per study

{{{pause}}}

*** Constraints for developers experience
:PROPERTIES:
:BEAMER_COL: 0.5
:BEAMER_ENV: block
:END:
- *Common used* code library and tools
# - *Modular* and *flexible* code
- *Clear* architecture
- *Free and open sources software* (FOSS)

** {{{Pamhyr2}}} - Needs - Features
# #+BEGIN_EXPORT latex
# \tikz[overlay,remember picture]
# \node[xshift=-5cm,yshift=-2cm] at (current page.north east) {
#   \includegraphics[width=6cm]{../images/geometry_saar.png}
# };
# #+END_EXPORT

**** {{{no}}}
:PROPERTIES:
:BEAMER_COL: 0.30
:BEAMER_ENV: block
:END:
- Define and edit data
  + River network
  + Geometry
  + Boundary conditions
  + Friction
  + Initial conditions
  + *Sedimentary layers*
- User meshed geometry
- Run a solver
- Display results
  + Default visualisation
  + *Customized visualisation*

**** {{{no}}}
:PROPERTIES:
:BEAMER_COL: 0.70
:BEAMER_ENV: block
:END:
[[../images/geometry_saar.png]]

** {{{pamhyr2}}} - Technical choices
#+BEGIN_EXPORT latex
\tikz[overlay,remember picture]
\node[xshift=-9.3cm,yshift=-4cm] at (current page.north east) {
  \includegraphics[width=6.3cm]{../images/BC.png}
};
#+END_EXPORT

*** Technologies
:PROPERTIES:
:BEAMER_COL: 0.60
:BEAMER_ENV: block
:END:
- *Python*
- *PyQt*
- Qt Designer
- Qt Linguist
- *Matplotlib*
- SQLite (as =*.pamhyr=)
- *GPLv3* license (strong copyleft)

*** Architecture
:PROPERTIES:
:BEAMER_COL: 0.35
:BEAMER_ENV: block
:END:
- Qt Model/View
- Multiple solvers configuration
- *Unified interface*, as much as possible

** {{{pamhyr2}}} - State of the project
#+BEGIN_EXPORT latex
\tikz[overlay,remember picture]
\node[xshift=-4.5cm,yshift=-2.5cm] at (current page.north east) {
  \includegraphics[width=8cm]{../images/apply_sedi.png}
};
#+END_EXPORT

*** {{{no}}}
:PROPERTIES:
:BEAMER_COL: 0.40
:BEAMER_ENV: block
:END:

\vspace{-1.5cm}

\begin{center}
\emph{Last version:} \texttt{v0.0.3}
\end{center}

{{{pause}}}

#+latex: \begin{center}
#+latex: \resizebox{0.9\columnwidth}{!}{
# #+caption: Tools by methods
#+name: tab:current-state
#+attr_latex: :align |l|c|
|---------------------------------+-----------------|
| {{{bf(Features)}}}              | {{{bf(State)}}} |
|---------------------------------+-----------------|
| Create save and load study      | {{{OK}}}        |
| *Undo/Redo actions*             | {{{OK}}}        |
| Edit river network              | {{{OK}}}        |
| Edit geometry                   | {{{OK}}}        |
| Edit boundary conditions        | {{{OK}}}        |
| Edit lateral contributions      | {{{OK}}}        |
| Edit frictions (Stricklers)     | {{{OK}}}        |
| Edit initial conditions         | {{{OK}}}        |
| *Edit sedimentary layers*       | {{{OK}}}        |
| Edit hydraulics structures      |                 |
| Edit suspended sediment         |                 |
| Edit polluant                   |                 |
| Use meshing tool                | WIP             |
| Run a solver                    | {{{OK}}}        |
| Read and display results        | {{{OK}}}        |
| Customize results visualisation | WIP             |
| Generic solver input/output     |                 |
|---------------------------------+-----------------|
#+latex: }
#+latex: \end{center}

{{{pause}}}

*** {{{no}}}
:PROPERTIES:
:BEAMER_COL: 0.60
:BEAMER_ENV: block
:END:

\vspace{2.5cm}

#+latex: \begin{center}
#+latex: \resizebox{0.8\columnwidth}{!}{
# #+caption: Tools by methods
#+name: tab:current-state-solver
#+attr_latex: :align |l|c|c|c|
|----------------------------+----------------+-------------------+--------------------|
| {{{bf(Usage)}}}            | {{{bf(Mage)}}} | {{{bf(RubarBE)}}} | {{{bf(Mascaret)}}} |
|----------------------------+----------------+-------------------+--------------------|
| *Hydraulics* (mono reach)  | {{{OK}}}       |                   | {{{OK}}}           |
| *Hydraulics* (multi reach) | {{{OK}}}       |                   |                    |
| *Bed load evolution*       | {{{OK}}}       |                   |                    |
|----------------------------+----------------+-------------------+--------------------|
#+latex: }
#+latex: \end{center}

# #+LaTeX: \vspace{0.3cm}

#+latex: \begin{center}
#+latex: \resizebox{0.6\columnwidth}{!}{
# #+caption: Tools by methods
#+name: tab:current-state-package
#+attr_latex: :align |l|c|c|
|--------------------+---------------------+-------------------|
| {{{bf(Packages)}}} | {{{bf(GNU/Linux)}}} | {{{bf(Windows)}}} |
|--------------------+---------------------+-------------------|
| Archive (tar/zip)  | {{{OK}}}            | {{{OK}}}          |
| Installer          |                     | {{{OK}}}          |
|--------------------+---------------------+-------------------|
#+latex: }
#+latex: \end{center}

* Future work and perspective
** Future work
#+BEGIN_EXPORT latex
\tikz[overlay,remember picture]
\node[xshift=-4.8cm,yshift=-3.8cm] at (current page.north east) {
  \includegraphics[width=8.7cm]{../images/results_hydro.png}
};
#+END_EXPORT

*** Next step
- *Meshing tools integration*
- *Custom results visualisation*
  + Python + matplotlib script
- RubarBE integration
- Hydraulics structures
- Unified graphics theme

*** Open questions
- Generic solver input/output (HDF5? CGNS? SQLite?)
- GNU/Linux packages (Pip? Conda? Guix? Deb?)

** Contribution
#+LaTeX: \begin{center}
\faIcon{gitlab} https://gitlab.com/pamhyr/pamhyr2/
#+LaTeX: \end{center}

*** For users
:PROPERTIES:
:BEAMER_COL: 0.45
:BEAMER_ENV: block
:END:
- Try {{{pamhyr2}}}
- Report bug
- Propose improvement
- Improve translation
- Improve user documentation
- Improve tests cases examples
- /Find better project name/

*** For developers
:PROPERTIES:
:BEAMER_COL: 0.45
:BEAMER_ENV: block
:END:
- Add new solver / features
- Improve sources code
- Improve developers documentation
- Improve unit tests

# * Conclusion
** Thanks for listening
# #+BEGIN_EXPORT latex
# \tikz[overlay,remember picture]
# \node[xshift=-6cm,yshift=-1.5cm,text width=10cm] at (current page.north east) {
#    {\small\emph{\alert{Journées de la modélisation 1D hydro-sédimentaire} (in french) -}
#    \emph{30 \& 31 janvier 2024, INRAE Villeurbanne - }
#    \emph{Information and inscription: }\texttt{<benoit.camenen@inrae.fr>}}
# };
# #+END_EXPORT

#+LaTeX: \begin{center}
\faIcon{gitlab} https://gitlab.com/pamhyr/pamhyr2/
#+LaTeX: \end{center}

#+LaTeX: \begin{center}
/*Journées de la modélisation 1D hydro-sédimentaire*/ (in French)
#+LaTeX: \\
/30 & 31 janvier 2024/, INRAE Villeurbanne
#+LaTeX: \\
Information and registration: =<benoit.camenen@inrae.fr>=
#+LaTeX: \end{center}

- {{{pamhyr2}}} developers:
  + =<pierre-antoine.rouby@inrae.fr>=,
  + =<theophile.terraz@inrae.fr>=
- Mage/RubarBE developer:
  + =<theophile.terraz@inrae.fr>=

# #+LaTeX: \vspace{0.5cm}
# #+LaTeX: \begin{center}
# #+LaTeX: {\Large
# *Thanks for listening*
# #+LaTeX: }
# #+LaTeX: \end{center}
