diff --git a/docs-fr/calculators/pam/macrorugo.md b/docs-fr/calculators/pam/macrorugo.md
new file mode 100644
index 0000000000000000000000000000000000000000..6b4014b03e016a98e79878f67356ba4a731d7d77
--- /dev/null
+++ b/docs-fr/calculators/pam/macrorugo.md
@@ -0,0 +1,31 @@
+# Passe à macro-rugosité
+
+Le module de calcul passe à macro rugosité permet de calculer les caractéristiques d'une passe à macro-rugosité constituée de blocs uniformément répartis avec des espacements transversaux \(ay\) et longitudinaux \(ay\) égaux.
+
+![Schéma d'une disposition régulière des enrochements et notations](pam_schema_enrochement_regulier.png)
+
+*Extrait de Larinier et al., 2006[^1]*
+
+[^1]: Larinier, Michel, Courret, D., Gomes, P., 2006. Guide technique pour la conception des passes à poissons “naturelles,” Rapport GHAPPE RA. Compagnie Nationale du Rhône / Agence de l’Eau Adour Garonne. http://dx.doi.org/10.13140/RG.2.1.1834.8562
+
+
+L'outil permet de calculer l'une des valeurs suivantes :
+
+- La largeur de la passe (m) ;
+- La pente de la passe (m) ;
+- Le débit (m<sup>3</sup>/s) ;
+- La profondeur \(h\) (m) ;
+- La concentration des blocs \(C\).
+
+Il nécessite d'entrer les valeurs suivantes :
+
+- La cote de fond amont (m) ;
+- La longueur de la passe (m) ;
+- La rugosité de fond (m) ;
+- La largeur des blocs \(D\) face à l’écoulement (m) ;
+- La hauteur utile des blocs \(k\) (m) ;
+- Le paramètre de forme des blocs (1 pour rond, 2 pour carré)
+
+L'espacement entre les blocs se calcule ensuite avec la formule suivante :
+
+$$ax = ay = \frac{D}{\sqrt{C}}$$
diff --git a/docs-fr/calculators/pam/macrorugo_theorie.md b/docs-fr/calculators/pam/macrorugo_theorie.md
new file mode 100644
index 0000000000000000000000000000000000000000..328d5816ff5dffe166b796ce53f51a363e9457e0
--- /dev/null
+++ b/docs-fr/calculators/pam/macrorugo_theorie.md
@@ -0,0 +1,162 @@
+# Calcul du débit d'une passe à macro-rugosité
+
+Le calcul du débit d'une passe à macro-rugosité correspond à l'implémentation de l'algorithme et des équations présentent dans
+*Cassan L, Laurens P. 2016. Design of emergent and submerged rock-ramp fish passes. Knowl. Manag. Aquat. Ecosyst., 417, 45*.
+
+## Principe général du calcul
+
+
+La limite entre le cas émergent et le cas submergé se situe à \(h = 1.1 \times k\).
+
+## Cas submergé
+
+Le calcul du débit se fait par itérations successives qui consistent à trouver la valeur de débit permettant d'obtenir l'égalite entre la vitesse moyenne du lit donnée par&nbsp;:
+
+$$u_0 = \sqrt{2 g S D (1 - \sigma C)/(C_d C)}$$
+
+et la vitesse moyenne du lit donnée par intégration des débits entre et au-dessus des blocs&nbsp;:
+
+$$\bar{u} = \frac{Q_{inf} + Q_{sup}}{k}$$
+
+avec respectivement \(Q_{inf}\) et \(Q_{sup}\) les débits unitaires pour la partie dans la canopée et la partie au dessus de la canopée.
+
+### Calcul du débit unitaire *Q<sub>inf</sub>* dans la canopée
+
+Le débit dans la canopée est obtenu par intégration du profil de vitesse (Eq. 9, Cassan et al., 2016)&nbsp:
+
+$$Q_{inf} = \int_{0}^1 u(\tilde{z}) d \tilde{z}$$
+
+avec
+
+$$u(\tilde{z}) = u_0 \sqrt{\beta \left( \frac{h}{k} -1 \right) \frac{\sinh(\beta \tilde{z})}{\cosh(\beta)} + 1}$$
+
+avec
+
+$$\beta = \sqrt{(k / \alpha_t)(C_d C k / D)/(1 - \sigma C)}$$
+
+avec \(\sigma = 1\) pour \(C_{d0} = 2\), \(\sigma = \pi/4\) sinon
+
+et \(\alpha_t\) obtenu à partir de la résolution de l'équation suivante :
+
+$$\alpha_t u(1) - l_0 u_* = 0$$
+
+avec
+
+$$l_0 = \min \left( s, 0.15 k \right)$$
+
+avec
+
+$$s = D \left( \frac{1}{\sqrt{C}} - 1 \right)$$
+
+### Calcul du débit unitaire *Q<sub>sup</sub>* au dessus de la canopée
+
+$$Q_{sup} = \int_k^h u(z) dz$$
+
+avec (Eq. 12, Cassan et al., 2016)
+
+$$u(z) = \frac{u_*}{\kappa} \ln \left( \frac{z - d}{z_0} \right) - 1 $$
+
+avec (Eq. 14, Cassan et al., 2016)
+
+$$z_0 = (k - d) \exp \left( {\frac{-\kappa u_k}{u_*}} \right)$$
+
+et (Eq. 13, Cassan et al., 2016)
+
+$$ d =  k - \frac{\alpha_t u_k}{\kappa u_*}$$
+
+ce qui donne
+
+$$Q_{sup} = \frac{u_*}{\kappa} \left( (h - d) \left( \ln \left( \frac{h-d}{z_0} \right) - 1\right)  - \left( (k - d) \left( \ln \left( \frac{k-d}{z_0} \right) - 1 \right) \right) \right)$$
+
+## Cas émergent
+
+Le calcul du débit se fait par itérations successives qui consistent à trouver la valeur de débit permettant d'obtenir l'égalité entre la vitesse apparente \(V\) et la vitesse moyenne du lit donnée par&nbsp;:
+
+$$u_0 = \sqrt{\frac{2 g S D (1 - \sigma C)}{C_d C (1 + N)}}$$
+
+avec
+
+$$C_d = C_{d0} (1 + 0.4 / h_*^2) f_F(F)$$
+
+$$N = \frac{\alpha C_f}{C_d C h_*}$$
+
+avec
+
+$$\alpha = 1 - (a_y / a_x \times C)$$
+
+## Formules utilisées
+
+### Vitesse débitante *V*
+
+$$V = \frac{Q}{B \times h}$$
+
+### Vitesse entre les blocs *V<sub>g</sub>*
+
+$$V_g = \frac{V}{1 - \sqrt{(a_x/a_y)C}}$$
+
+### Froude *F*
+
+$$F = \frac{V_g}{\sqrt{gh}}$$
+
+### Fonction de correction du coefficient de trainée liée au Froude *f<sub>F</sub>(F)*
+
+Si \(F < 1.3\) (Eq. 5, Cassan et al., 2016)
+
+$$f_F(F) = \mathrm{min} \left( \frac{0.4 C_{d0} + 0.7}{1- (F^2 / 4)}, \frac{1}{F^{\frac{2}{3}}} \right)$$
+
+sinon
+
+$$f_F(F) = F^{\frac{-4}{3}}$$
+
+### Coefficient de friction du lit *C<inf>f</inf>*
+
+Si \(k_s < 10^{-6} \mathrm{m}\) alors
+
+$$C_f = 0.3164 / 4 * Re^{-0.25}$$
+
+avec
+
+$$Re = u_0 \times h / \nu$$
+
+Sinon (Eq. 3, Cassan et al., 2016)
+
+$$C_f = \frac{2}{(5.1 \mathrm{log} (h/k_s)+6)^2}$$
+
+### Vitesse de cisaillement *u<sub>&ast;</sub>*
+
+$$u_* = \sqrt{gS(h-k)}$$
+
+## Notations
+
+- \(\alpha\) : ratio de l'aire concernée par la friction du lits sur \(a_x \times a_y\)
+- \(\alpha_t\) : échelle de longueur de la turbulence dans la couche des blocs(m)
+- \(\beta\) : ratio entre la contrainte due à la trainée et la contrainte due aux turbulences
+- \(\kappa\) : constante de Von Karman = 0.41
+- \(\sigma\) : ratio entre l'aire du block dans le plan X,y et \(D^2\)
+- \(a_x\) :  largeur d'une cellule (perpendiculaire à l'écoulement) (m)
+- \(a_y\) :  longueur d'une cellule (parallèle à l'écoulement) (m)
+- \(B\) : largeur de la passe (m)
+- \(C\) : concentration de blocs
+- \(C_d\) : coefficient de trainée d'un bloc dans les conditions d'écoulement actuel
+- \(C_{d0}\) : coefficient de trainée d'un bloc considérant un bloc infiniment haut avec \(F \ll 1\)
+- \(C_f)\) : coefficient de friction du lit
+- \(d\) : déplacement dans le plan zéro du profil logarithmique (m)
+- \(D\) : largeur du bloc face à l'écoulement (m)
+- \(F\) : nombre de Froude basé sur \(h\) et \(V_g\)
+- \(g\) : accélération de la gravité = 9.81 m.s<sup>-2</sup>
+- \(h\) : profondeur moyenne (m)
+- \(h_*\) : profondeur adimensionnelle (\(h / D\))
+- \(k\) : hauteur utile des blocs (m)
+- \(k_s\) : hauteur de la rugosité (m)
+- \(l_0\) : échelle de longueur de la turbulence au sommet des blocs (m)
+- \(N\) : ratio entre la friction du lit et la force de trainée
+- \(Q\) : débit (m<sup>3</sup>/s)
+- \(S\) : pente de la passe (m/m)
+- \(u_0\) : vitesse moyenne dans le lit (m/s)
+- \(u_*\) : vitesse de cisaillement (m/s)
+- \(V\) : vitesse débitante (m/s)
+- \(V_g\) : vitesse entre les blocs (m/s)
+- \(s\) : distance minimale entre les blocs (m)
+- \(z\) : position verticale (m)
+- \(z_0\) : rugosité hydraulique (m)
+- \(\tilde{z}\) : position verticale adimensionnelle \(\tilde{z} = z / k\)
diff --git a/docs-fr/calculators/pam/pam_schema_enrochement_regulier.png b/docs-fr/calculators/pam/pam_schema_enrochement_regulier.png
new file mode 100755
index 0000000000000000000000000000000000000000..b8485ac803aaaae8e52355641e3e8cc4fc98c6df
Binary files /dev/null and b/docs-fr/calculators/pam/pam_schema_enrochement_regulier.png differ
diff --git a/mkdocs.yml b/mkdocs.yml
index 49160968803b799412254dd3ecc515ca38cf01b9..e19425da2ef8e5a6d94ec1d25d07a809ed3d1694 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -8,6 +8,7 @@ extra_javascript:
     - ../mathjax/MathJax.js?config=TeX-AMS_CHTML
 markdown_extensions:
     - mdx_math
+    - footnotes
 nav:
     - avant-propos.md
     - Présentation de Cassiopée:
@@ -28,5 +29,7 @@ nav:
             - Volume: calculators/pab/volume.md
             - Dimensions: calculators/pab/dimensions.md
             - Cloisons: calculators/pab/cloisons.md
-
+        - Passes à macro-rugosité:
+            - calculators/pam/macrorugo.md
+            - calculators/pam/macrorugo_theorie.md
 
diff --git a/src/app/calculators/macrorugo/macrorugo.config.json b/src/app/calculators/macrorugo/macrorugo.config.json
index e8755930cec10a28259bfd8c7e6980350bc38e9b..1b693b635b223382faf411ac305ef33c8c18a690 100644
--- a/src/app/calculators/macrorugo/macrorugo.config.json
+++ b/src/app/calculators/macrorugo/macrorugo.config.json
@@ -88,6 +88,7 @@
     },
     {
         "type": "options",
-        "idCal": "Q"
+        "idCal": "Q",
+        "help": "pam/macrorugo"
     }
 ]
\ No newline at end of file