slugify links in website

This commit is contained in:
Tykayn 2024-11-05 23:06:54 +01:00 committed by tykayn
parent 86b2247d22
commit a3ba26528b
19 changed files with 239 additions and 4031 deletions

4
2024/coucou-gemini Normal file
View File

@ -0,0 +1,4 @@
<html><head><title>Dragonfeu land</title></head><body> # Dragonfeu land - Articles
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
<h1>Navigation</h1><br><a href=/index.html>index.html</a><h1>Articles en Français</h1><br><a href=/lang_fr//2024-11-02-coucou-gemini.html>2024-11-02-coucou-gemini.html</a><br><a href=/2024/coucou-gemini>2024 coucou gemini</a><br><a href=/lang_fr//2024-09-08-strategie-mitigation-accident-fusion-coeur-epr2.html>2024-09-08-strategie-mitigation-accident-fusion-coeur-epr2.html</a><br><a href=/2024/strategie-mitigation-accident-fusion-coeur-epr2>2024 strategie mitigation accident fusion coeur epr2</a><br><a href=/lang_fr//2024-05-15-l-aventure-superphenix.html>2024-05-15-l-aventure-superphenix.html</a><br><a href=/2024/l-aventure-superphenix>2024 l aventure superphenix</a><br><a href=/lang_fr//2023-06-10-recap-centrale-zaporijia.html>2023-06-10-recap-centrale-zaporijia.html</a><br><a href=/2023/recap-centrale-zaporijia>2023 recap centrale zaporijia</a><br><a href=/lang_fr//2023-06-09-recapitulatif-contenu-threads.html>2023-06-09-recapitulatif-contenu-threads.html</a><br><a href=/2023/recapitulatif-contenu-threads>2023 recapitulatif contenu threads</a></article></body></html>

View File

@ -71,8 +71,10 @@ Pandoc, PandocGmi
- réécriture des liens internes
- navigation sur les pages d'article
- réécriture des url des images vers le dossier courant
- réparer la génération de fichiers gmi
- réparer la génération de fichiers gmi avec pandoc
- template footer article: gestion article suivant et précédent
- conversion des liens avec nom de domaine si relatifs
# Fait
-gestion des langues dans la source et la destination
- gestion multi site et multi langue

View File

@ -2,6 +2,7 @@ import os
import argparse
import re
import datetime
import shutil
# génère l'index gemini et html des articles rangés par langue
# Définition des arguments de la ligne de commande
@ -57,12 +58,13 @@ def enlever_premier_tiret_ou_underscore(chaîne):
chaîne = chaîne[1:]
return chaîne
import shutil
# création des dossiers intermédiaires s'il y en a
# déplace le fichier dans le dossier spécifié
def create_path_folders_and_move_file(path, file):
os.makedirs(os.path.dirname(path), exist_ok=True)
shutil.move(file, path)
def get_files_list_of_folder(folder_path):
@ -101,6 +103,8 @@ def empty_folder_content(path):
def generer_index(dossier_source, fichier_index, titre_index):
# Chemin absolu du dossier parent (pour sauver le fichier d'index)
dossier_parent = os.path.dirname(os.path.abspath(__file__))
empty_folder_content(dossier_parent+'/html-websites/'+args.source+'/')
empty_folder_content(dossier_parent+'/gemini-capsules/'+args.source+'/')
# Chemin complet du dossier contenant les Markdown
chemin_dossier_source = os.path.join(dossier_parent, dossier_source)
@ -111,8 +115,10 @@ def generer_index(dossier_source, fichier_index, titre_index):
# Chemin complet pour le fichier d'index
chemin_fichier_index_gemini = os.path.join(dossier_parent, fichier_index+'.gmi')
chemin_fichier_index_html = os.path.join(dossier_parent, fichier_index+'.html')
chemin_fichier_index_html = os.path.join(dossier_parent, '/'+fichier_index+'.html')
print('\n index html: ', chemin_fichier_index_html)
# Génère le contenu du fichier d'index
contenu_index_gmi = f"{titre_index}\n{'- ' * len(titre_index)}\n\n"
contenu_index_html = f"{titre_index}\n{'- ' * len(titre_index)}\n\n"
@ -124,22 +130,38 @@ def generer_index(dossier_source, fichier_index, titre_index):
link_html = fichier.replace('..gmi','.html')
contenu_index_html += f"<br><a href=/{link_html}>{link_html}</a>"
contenu_index_gmi += "\n# Articles en Français\n-------------------------\n"
contenu_index_html += "<h1>Articles en Français</h1>"
# ne préciser la langue français que si on a des articles en Anglais
if len(files_en):
contenu_index_gmi += "\n# Articles en Français\n-------------------------\n"
contenu_index_html += "<h1>Articles en Français</h1>"
lang_folder="lang_fr/"
for fichier in files_fr:
date_string, année, slug = find_year_and_slug(fichier)
new_folder=f"{année}/{slug}"
new_folder_path_this_article = os.path.join(dossier_parent, 'html-websites/'+args.source+'/'+new_folder+'/')
contenu_index_gmi += f"=> {fichier}\n"
link_html = fichier.replace('..gmi','.html')
contenu_index_html += f"<br><a href=/{lang_folder}/{link_html}>{link_html}</a>"
chemin_fichier_this_article = chemin_dossier_source+'/lang_fr/converted/'+link_html
# contenu_index_html += f"<br><a href=/{lang_folder}/{link_html}>{link_html}</a>"
contenu_index_html += f"<br><a href=/{année}/{slug}>{année} {slug.replace('-', ' ')}</a>"
print(f" on créer le dossier : {new_folder}, et on y copie le fichier {new_file} en le renommant index.html")
# create_path_folders_and_move_file(path, file)
# déplacer l'article html généré dans son dossier de slug
print(f" on créée le dossier : {new_folder_path_this_article}, et on y copie le fichier {chemin_fichier_this_article} en le renommant index.html")
'html-websites/'+args.source+'/'+new_folder
print(f" mkdir {new_folder_path_this_article} -p")
print(f" mv {chemin_fichier_this_article} {new_folder_path_this_article}")
os.makedirs(os.path.dirname(new_folder_path_this_article), exist_ok=True)
# déplacer le fichier html dans le dossier slug, et le renommer en index.html ensuite pour ne pas modifier l'index du blog
shutil.move(chemin_fichier_this_article, new_folder_path_this_article+'index.html')
# os.remove(new_folder_path_this_article+'/index.html')
# shutil.move(new_folder_path_this_article+'/'+link_html , new_folder_path_this_article+'/index.html' )
# contenu_index_gmi += "\n# Articles in English\n-------------------------\n"
# contenu_index_html += "<h1>Articles in English</h1>"
# lang_folder="lang_en/"
lang_folder="lang_en/"
# for fichier in files_en:
# contenu_index_gmi += f"=> {fichier}\n"
# link_html = fichier.replace('..gmi','.html')
@ -147,13 +169,24 @@ def generer_index(dossier_source, fichier_index, titre_index):
# Écrit le contenu dans le fichier d'index
try:
with open(chemin_fichier_index_gemini, 'w', encoding='utf-8') as file:
file.write(contenu_index_gmi)
print(f"Fichier d'index '{chemin_fichier_index_gemini}' généré avec succès.")
# with open(chemin_fichier_index_gemini, 'w', encoding='utf-8') as file:
# file.write(contenu_index_gmi)
# print(f"Fichier d'index '{chemin_fichier_index_gemini}' généré avec succès.")
# os.remove('gemini-capsules/'+args.source+'/index.gmi')
# shutil.move(chemin_fichier_index_gemini, 'gemini-capsules/'+args.source+'/index.gmi')
with open(chemin_fichier_index_html, 'w', encoding='utf-8') as file:
print('chemin_fichier_index_html' , dossier_parent+chemin_fichier_index_html)
print(' ')
with open(dossier_parent+chemin_fichier_index_html, 'w', encoding='utf-8') as file:
file.write('<html><head><title>'+args.title+'</title></head><body>'+contenu_index_html+'</article></body></html>')
print(f"Fichier d'index '{chemin_fichier_index_html}' généré avec succès.")
# os.remove(dossier_parent+'/html-websites/'+args.source+'/index.html')
destination_html = dossier_parent+'/html-websites/'+args.source+'/'
shutil.move(dossier_parent+chemin_fichier_index_html, destination_html)
shutil.move(destination_html+chemin_fichier_index_html, destination_html+'index.html')
print(f"Déplacé dans '{'html-websites/'+args.source}'.")
except OSError as e:
print(f"Erreur lors de l'écriture du fichier d'index : {e}")

View File

@ -86,14 +86,14 @@ generate_website() {
cd sources/$website_name
convert_sources
#déplacer dans le site généré
mv converted/*.html ../../html-websites/$website_name/
# mv converted/*.html ../../html-websites/$website_name/
ls converted/*.gmi
mv converted/*.gmi ../../gemini-capsules/$website_name/
# traduction fr
cd lang_fr
convert_sources ../
mv converted/*.html ../../../html-websites/$website_name/lang_fr/
# mv converted/*.html ../../../html-websites/$website_name/lang_fr/
mv converted/*.gmi ../../../gemini-capsules/$website_name/lang_fr/
echo "pages en français du site web $website_name converties"
cd ..
@ -101,7 +101,7 @@ generate_website() {
# traduction en
cd lang_en
convert_sources ../
mv converted/*.html ../../../html-websites/$website_name/lang_en/
# mv converted/*.html ../../../html-websites/$website_name/lang_en/
mv converted/*.gmi ../../../gemini-capsules/$website_name/lang_en/
echo "pages en anglais du site web $website_name converties"

View File

@ -9,11 +9,3 @@
# Articles en Français
-------------------------
=> 2024-11-02-coucou-gemini..gmi
=> 2024-09-08-strategie-mitigation-accident-fusion-coeur-epr2..gmi
=> 2024-05-15-l-aventure-superphenix..gmi
=> 2023-06-10-recap-centrale-zaporijia..gmi
=> 2023-06-09-recapitulatif-contenu-threads..gmi
# Articles in English
-------------------------
=> 2024-11-02-coucou-gemini..gmi

View File

@ -1,4 +1,4 @@
# DragonFeu Blog - Articles
# dragonfeu_blog - Articles
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -13,7 +13,3 @@
=> 2024-05-15-l-aventure-superphenix..gmi
=> 2023-06-10-recap-centrale-zaporijia..gmi
=> 2023-06-09-recapitulatif-contenu-threads..gmi
# Articles in English
-------------------------
=> 2024-11-02-coucou-gemini..gmi

View File

@ -116,138 +116,6 @@ select {
font: inherit;
}
ul {
padding-left: 4ch;
padding-right: 4ch;
}
li {
margin-bottom: 1em;
}
@media (max-width: 20rem) {
body {
padding: 1rem;
}
}
</style></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>dragonfeu_blog</title>
<style type='text/css'>* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
text-align: left;
margin: 0 auto;
font-size: 1.5rem;
line-height: 1.5em;
max-width: 60ch;
color: #000;
background: #fff;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
margin-top: 1em;
margin-bottom: 2rem;
color: #333;
}
/* 1. Use a more-intuitive box-sizing model */
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
/* Improve text rendering */
-webkit-font-smoothing: antialiased;
}
/* Improve media defaults */
img,
picture,
video,
canvas,
svg {
display: block;
width: 100%;
margin-top: 1rem;
margin-bottom: 1rem;
max-width: 100%;
}
/* Inherit fonts for form controls */
input,
button,
textarea,
select {
font: inherit;
}
/* Avoid text overflows */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
/* Improve line wrapping */
p {
text-wrap: pretty;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
h1 {
font-size: 3.5rem;
}
h2 {
font-size: 2rem;
}
h3 {
font-size: 1.5rem;
}
h1,
h2,
h3,
h4,
h5,
h6 {
text-wrap: balance;
line-height: 1.3em;
}
#root,
#__next {
isolation: isolate;
}
input,
button,
textarea,
select {
font: inherit;
}
ul {
padding-left: 4ch;
padding-right: 4ch;
@ -437,7 +305,5 @@ li {
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View File

@ -133,6 +133,6 @@ li {
<a href='/'>Retour à l'Accueil</a><hr/><html><head><title>dragonfeu_blog</title></head><body> # dragonfeu_blog - Articles
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
<h1>Navigation</h1><br><a href=/index.html>index.html</a><h1>Articles en Français</h1><br><a href=/lang_fr/2024-11-02-coucou-gemini.html>2024-11-02-coucou-gemini.html</a><br><a href=/lang_fr/2024-09-08-strategie-mitigation-accident-fusion-coeur-epr2.html>2024-09-08-strategie-mitigation-accident-fusion-coeur-epr2.html</a><br><a href=/lang_fr/2024-05-15-l-aventure-superphenix.html>2024-05-15-l-aventure-superphenix.html</a><br><a href=/lang_fr/2023-06-10-recap-centrale-zaporijia.html>2023-06-10-recap-centrale-zaporijia.html</a><br><a href=/lang_fr/2023-06-09-recapitulatif-contenu-threads.html>2023-06-09-recapitulatif-contenu-threads.html</a><h1>Articles in English</h1><br><a href=/lang_en/2024-11-02-coucou-gemini.html>2024-11-02-coucou-gemini.html</a></article></body></html>
<h1>Navigation</h1><br><a href=/index.html>index.html</a><h1>Articles en Français</h1><br><a href=/2024/coucou-gemini>2024 coucou gemini</a></article></body></html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View File

@ -1,476 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>dragonfeu_blog</title>
<style type='text/css'>* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
text-align: left;
margin: 0 auto;
font-size: 1.5rem;
line-height: 1.5em;
max-width: 60ch;
color: #000;
background: #fff;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
margin-top: 1em;
margin-bottom: 2rem;
color: #333;
}
/* 1. Use a more-intuitive box-sizing model */
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
/* Improve text rendering */
-webkit-font-smoothing: antialiased;
}
/* Improve media defaults */
img,
picture,
video,
canvas,
svg {
display: block;
width: 100%;
margin-top: 1rem;
margin-bottom: 1rem;
max-width: 100%;
}
/* Inherit fonts for form controls */
input,
button,
textarea,
select {
font: inherit;
}
/* Avoid text overflows */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
/* Improve line wrapping */
p {
text-wrap: pretty;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
h1 {
font-size: 3.5rem;
}
h2 {
font-size: 2rem;
}
h3 {
font-size: 1.5rem;
}
h1,
h2,
h3,
h4,
h5,
h6 {
text-wrap: balance;
line-height: 1.3em;
}
#root,
#__next {
isolation: isolate;
}
input,
button,
textarea,
select {
font: inherit;
}
ul {
padding-left: 4ch;
padding-right: 4ch;
}
li {
margin-bottom: 1em;
}
@media (max-width: 20rem) {
body {
padding: 1rem;
}
}
</style></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>dragonfeu_blog</title>
<style type='text/css'>* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
text-align: left;
margin: 0 auto;
font-size: 1.5rem;
line-height: 1.5em;
max-width: 60ch;
color: #000;
background: #fff;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
margin-top: 1em;
margin-bottom: 2rem;
color: #333;
}
/* 1. Use a more-intuitive box-sizing model */
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
/* Improve text rendering */
-webkit-font-smoothing: antialiased;
}
/* Improve media defaults */
img,
picture,
video,
canvas,
svg {
display: block;
width: 100%;
margin-top: 1rem;
margin-bottom: 1rem;
max-width: 100%;
}
/* Inherit fonts for form controls */
input,
button,
textarea,
select {
font: inherit;
}
/* Avoid text overflows */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
/* Improve line wrapping */
p {
text-wrap: pretty;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
h1 {
font-size: 3.5rem;
}
h2 {
font-size: 2rem;
}
h3 {
font-size: 1.5rem;
}
h1,
h2,
h3,
h4,
h5,
h6 {
text-wrap: balance;
line-height: 1.3em;
}
#root,
#__next {
isolation: isolate;
}
input,
button,
textarea,
select {
font: inherit;
}
ul {
padding-left: 4ch;
padding-right: 4ch;
}
li {
margin-bottom: 1em;
}
@media (max-width: 20rem) {
body {
padding: 1rem;
}
}
</style></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>dragonfeu_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">dragonfeu_blog</h1>
</header>
<h1 id="récapitulatif-de-mon-contenu-twitter">Récapitulatif de mon
contenu twitter</h1>
<p>Jun 9, 2023</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/1*YZR7U4s767ZMQfrxi0EhYA.jpeg" /></p>
<p><a href="https://fr.wikipedia.org/wiki/Superphénix">RNR-Na
Superphénix, France.</a></p>
<p>Thread des réacteurs à sels fondus 1/3 : <a
href="https://twitter.com/Draagonfire2/status/1619795919045550080"><span>https://twitter.com/Draagonfire2/status/1619795919045550080</span></a></p>
<p>Thread des réacteurs à sels fondus 2/3 : <a
href="https://twitter.com/Draagonfire2/status/1622176144647770114"><span>https://twitter.com/Draagonfire2/status/1622176144647770114</span></a></p>
<p>Thread des réacteurs à sels fondus 3/3 : <a
href="https://twitter.com/Draagonfire2/status/1627367034504839170"><span>https://twitter.com/Draagonfire2/status/1627367034504839170</span></a></p>
<p>Thread sur le réacteur Stellaria: <a
href="https://twitter.com/Draagonfire2/status/1676216176157020160"><span>https://twitter.com/Draagonfire2/status/1676216176157020160</span></a></p>
<p>Thread récapitulatif sur la Commission denquête visant à établir les
raisons de la perte de souveraineté et dindépendance énergétique de la
France: <a
href="https://twitter.com/Draagonfire2/status/1642231133738872835"><span>https://twitter.com/Draagonfire2/status/1642231133738872835</span></a></p>
<p>Thread Brennilis: <a
href="https://twitter.com/Draagonfire2/status/1599406535796350977"><span>https://twitter.com/Draagonfire2/status/1599406535796350977</span></a></p>
<p>Thread Osiris : <a
href="https://twitter.com/Draagonfire2/status/1600173316790050819"><span>https://twitter.com/Draagonfire2/status/1600173316790050819</span></a></p>
<p>Thread GIEC et nucléaire: <a
href="https://twitter.com/Draagonfire2/status/1511484306639708166"><span>https://twitter.com/Draagonfire2/status/1511484306639708166</span></a></p>
<p>Article sur Zaporijia: <a
href="https://medium.com/@caraibe35/point-de-situation-sur-la-centrale-nucléaire-de-zaporijia-94cfc28a84fd"><span>https://medium.com/@caraibe35/point-de-situation-sur-la-centrale-nucl%C3%A9aire-de-zaporijia-94cfc28a84fd</span></a></p>
<p>La grenouille des ratios, à utiliser comme vous voulez:</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:755/1*RIkCt_i9wqD3ou6-IvEq0g.png" /></p>
<p><img
src="https://miro.medium.com/v2/resize:fit:751/1*YIqQ2mfZgptSfhTRL4_gsA.png" /></p>
<ul>
<li>Dragonfeu</li>
</ul>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View File

@ -1,922 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>dragonfeu_blog</title>
<style type='text/css'>* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
text-align: left;
margin: 0 auto;
font-size: 1.5rem;
line-height: 1.5em;
max-width: 60ch;
color: #000;
background: #fff;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
margin-top: 1em;
margin-bottom: 2rem;
color: #333;
}
/* 1. Use a more-intuitive box-sizing model */
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
/* Improve text rendering */
-webkit-font-smoothing: antialiased;
}
/* Improve media defaults */
img,
picture,
video,
canvas,
svg {
display: block;
width: 100%;
margin-top: 1rem;
margin-bottom: 1rem;
max-width: 100%;
}
/* Inherit fonts for form controls */
input,
button,
textarea,
select {
font: inherit;
}
/* Avoid text overflows */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
/* Improve line wrapping */
p {
text-wrap: pretty;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
h1 {
font-size: 3.5rem;
}
h2 {
font-size: 2rem;
}
h3 {
font-size: 1.5rem;
}
h1,
h2,
h3,
h4,
h5,
h6 {
text-wrap: balance;
line-height: 1.3em;
}
#root,
#__next {
isolation: isolate;
}
input,
button,
textarea,
select {
font: inherit;
}
ul {
padding-left: 4ch;
padding-right: 4ch;
}
li {
margin-bottom: 1em;
}
@media (max-width: 20rem) {
body {
padding: 1rem;
}
}
</style></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>dragonfeu_blog</title>
<style type='text/css'>* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
text-align: left;
margin: 0 auto;
font-size: 1.5rem;
line-height: 1.5em;
max-width: 60ch;
color: #000;
background: #fff;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
margin-top: 1em;
margin-bottom: 2rem;
color: #333;
}
/* 1. Use a more-intuitive box-sizing model */
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
/* Improve text rendering */
-webkit-font-smoothing: antialiased;
}
/* Improve media defaults */
img,
picture,
video,
canvas,
svg {
display: block;
width: 100%;
margin-top: 1rem;
margin-bottom: 1rem;
max-width: 100%;
}
/* Inherit fonts for form controls */
input,
button,
textarea,
select {
font: inherit;
}
/* Avoid text overflows */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
/* Improve line wrapping */
p {
text-wrap: pretty;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
h1 {
font-size: 3.5rem;
}
h2 {
font-size: 2rem;
}
h3 {
font-size: 1.5rem;
}
h1,
h2,
h3,
h4,
h5,
h6 {
text-wrap: balance;
line-height: 1.3em;
}
#root,
#__next {
isolation: isolate;
}
input,
button,
textarea,
select {
font: inherit;
}
ul {
padding-left: 4ch;
padding-right: 4ch;
}
li {
margin-bottom: 1em;
}
@media (max-width: 20rem) {
body {
padding: 1rem;
}
}
</style></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>dragonfeu_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">dragonfeu_blog</h1>
</header>
<h1
id="stratégie-de-mitigation-de-laccident-de-fusion-du-cœur-sur-lepr.">Stratégie
de mitigation de laccident de fusion du cœur sur lEPR.</h1>
<p>Jimagine si vous avez cliqué sur cet article, vous savez que lEPR
de Flamanville vient de “diverger” ( <em>nota: article écrit en
septembre 2024</em> ). Autrement dit la réaction en chaîne a été, et
pour la première fois dans son cœur, auto-entretenue, permettant un
équilibre neutronique.</p>
<p>Ce fameux EPR présente de grandes avancées en sûreté nucléaire,
toujours afin de limiter les rejets dans lenvironnement en cas
daccident. Alors aujourdhui, laccident grave! <strong>On va parler de
<em>corium</em> , de récupérateur à corium ( <em>core catcher</em> ), de
stratégie de mitigation et de codes de calcul.</strong> Ce que je
souhaite faire avec cet article cest vous expliquer en premier lieu la
physique dune fusion du cœur et ensuite la modélisation qui y est
associée.</p>
<p><strong>Mais alors, comment les ingénieurs en sûreté nucléaire
ont-ils réussi à gérer une substance bien pire que la lave ?</strong> Le
corium, un magma à faire pâlir Hadès, autochauffant, ultra corrosif, à
très haute température, ne laissant aucune chance à la plupart des
matériaux quil rencontre. Possiblement la pire substance artificielle
jamais fabriquée sur cette Terre (avec les agents neurotoxiques)…</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/1*J0BNk7bnCfDUgRr3K6y_bw.png" /></p>
<p>La lave est une substance similaire au corium sur beaucoup daspects,
mais le corium est… encore pire.</p>
<p>Les réacteurs de génération III, comme lEPR (ou lEPR2), prennent en
compte la gestion des accidents graves dès la conception. Je vais donc
vous expliquer comment la stratégie de mitigation des accidents graves
est conçue sur le réacteur EPR (notez que ce sera vraisemblablement la
même sur EPR2, qui est une optimisation de lEPR).</p>
<p>Laccident grave de référence sur un réacteur à eau, est la fusion du
cœur. Un évènement (une brèche par exemple), a pour conséquence directe
un combustible qui nest plus sous eau, donc plus refroidit, et il
commence à chauffer, jusquà fondre. Cest ce qui sest passé à <a
href="https://www.irsn.fr/savoir-comprendre/crise/accident-fukushima-daiichi-japon-2011"><em>Fukushima</em></a>
et <a
href="https://www.irsn.fr/savoir-comprendre/surete/deroulement-laccident-0"><em>Three
Miles Island</em></a> (fusion partielle), occasionnant des rejets dans
lenvironnement.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:490/0*R7R5WF5O-tznduZZ.jpg" /></p>
<p>EPR de Flamanville. Crédit: <a
href="https://www.framatome.com/fr/clients/nucleaire/flamanville-3/">Framatome</a></p>
<p>Avant de commencer, un rappel sur les trois barrières de confinement.
Dans la suite de larticle, la 1ère et la 2ème barrière vont céder, et
lobjectif sera de préserver la troisième, afin déviter des rejets à
lextérieur.</p>
<p><a
href="https://miro.medium.com/v2/resize:fit:692/0*hJdTyHIMSxkzowlX">https://miro.medium.com/v2/resize:fit:692/0*hJdTyHIMSxkzowlX</a></p>
<p>Crédit: <a
href="https://www.cli-gravelines.fr/la-centrale-de-gravelines/presentation-de-la-centrale/">EDF</a></p>
<h1 id="i-phénoménologie-dun-accident-grave-sur-epr">I/ Phénoménologie
dun accident grave sur EPR</h1>
<h1 id="i.1-dégradation-du-cœur">I.1/ Dégradation du cœur</h1>
<p>Le soleil se lève sur le site de Flamanville. <em>Le vent souffle sur
les plaines de la Bretag</em> .. euh de la Normandie. Le réacteur EPR de
Flamanville est à pleine puissance (1600MWe, ça envoie). Une bien belle
journée. Et là, une énorme brèche sur le circuit primaire! On appelle ça
un APRP ( <em>Accident de Perte du Réfrigérant Primaire</em>). Rien ne
marche, ni refroidissement, ni électricité, le primaire se vide
inexorablement. Il y a de moins en moins deau autour des crayons
combustible, cf. (2) du schéma ci-dessous. Les gaines du combustible
commencent à soxyder. Cest très exothermique, donc le combustible
chauffe fort (oxydation zirconium + hafnium principalement), on produit
de la vapeur deau et du dihydrogène. Le combustible et sa gaine
fondent, alors que le niveau deau continue à baisser. Cette mixture
infernale, au-delà des 2400°C, contenant le combustible, la gaine,
lacier des structures et autres joyeusetés, est appelée un
<strong><em>corium</em></strong> .</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/1*xcZjQK8hEfk0OGoyvuVLjA.png" /></p>
<p>Conditions initiales [1], cœur dénoyé partiellement [2], cœur dénoyé
fusion en cours [3]. Crédit: IRSN</p>
<p>Bon, je vais aller vite. Maintenant le cœur a fondu intégralement et
il est dans le fond de cuve. Commence alors une série de phénomènes dans
le corium qui vont venir attaquer lacier de la cuve (pour les curieux,
la cuve est en acier 16MND5, un acier de compétition, merci le RCC-M).
La brèche a mis de leau dans lenceinte et on a produit du dihydrogène
pendant laccident.</p>
<p>Maintenant on va se donner <strong>trois contraintes supplémentaires,
pour préserver lenceinte de confinement,</strong> et garder toutes les
saletés à lintérieur, parce quon ne veut pas de rejets atmosphériques
!</p>
<ol>
<li><strong>On veut contrôler léchauffement dans
lenceinte.</strong></li>
</ol>
<p>Pour ne pas chauffer lenceinte il y a deux choses. Déjà, on ne veut
pas que la cuve perce à haute pression, sinon le corium est étalé façon
spray (sans rire), et vient attaquer lenceinte. Et pour éviter une
percée de la cuve à haute pression (supérieure à 15 bar), il faut
dépressuriser la cuve, avec une soupape ultime (comme sur votre cocotte
minute). Vous constaterez que la vanne dédiée à la gestion en AG est
redondée, ce qui permet de diminuer la probabilité de défaillance de
cette ligne de dépressurisation.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:468/1*BkefLhWFwOfYhjaQr_ZFng.png" /></p>
<p>Crédit: IRSN</p>
<p>Ensuite il faut contrôler la puissance thermique dans lenceinte,
cest le système EVU (Evacuation Ultime de la puissance dans
lenceinte). Cela consiste simplement à asperger de leau froide à
lintérieur de lenceinte. Une douche pour réacteur nucléaire. Cela sert
aussi à faire retomber les radionucléides volatils dans lenceinte.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/0*52odtp_1Boboejuf.png" /></p>
<p>Crédit: EDF</p>
<p><strong>2\. On ne veut pas dexplosion hydrogène (type Fukushima)
dans lenceinte.</strong></p>
<p>Dans lenceinte il y a de lair, de la vapeur deau, et maintenant de
lH2. Pour éviter lexplosion hydrogène, il faut consommer lH2, afin de
sortir des zones colorées du diagramme de Saphiro (ci-dessous). Cest le
principe des recombineurs autocatalytiques passifs à hydrogène, qui
comme leur nom lindique, nont pas besoin délectricité pour
fonctionner.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:453/1*bCstNg4HvBtiWtcP18vLTg.png" /></p>
<p>Recombineur autocatalytique passif à dihydrogène.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:373/1*ho1R4dJ41jGxMxCHd2sJQg.png" /></p>
<p>Diagramme de Saphiro</p>
<p><strong>3\. On ne veut pas dexplosion de vapeur dans
lenceinte.</strong></p>
<p>Leau liquide dans lenceinte ne doit pas toucher le corium, sous
peine dune explosion de vapeur. Pour ça, cest simple il faut séparer
les deux.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:476/1*yqJzEOmRI3KTX-ZPYGakvw.png" /></p>
<p>Séparation de leau et du core catcher.</p>
<p><strong>Maintenant quon a nos systèmes pour protéger lenceinte, il
est temps de péter la cuve.</strong> Je ne vais pas détailler les
phénomènes favorables qui permettent de maintenir la tenue mécanique de
la cuve. On postule que sous leffet des contraintes mécaniques
(déformation) et des flux thermiques du corium (fluage), la cuve finit
par se briser. Je dis « on postule » car ce nest pas systématiquement
lapproche retenue.</p>
<p>Il y a plusieurs configurations possibles du corium en fond de cuve.
Ce quon observe est une stratification du corium entre la couche
doxyde et celle de métal léger. Lintuition amène à penser que la haute
température du corium vient ablater la cuve. Cela est vrai au-delà de
2700°C, mais en dessous une croûte se forme en paroi, limitant les
échanges thermiques. En revanche, la couche de métal léger très chaude
reçoit de lénergie de la couche doxyde, et transmet lénergie à la
face interne de la cuve, sur une faible surface relative “ <em>focusing
effect”</em> . Elle est, daprès les expériences, la couche responsable
de la rupture de la cuve.</p>
<p>Je précise que cest lapproche pénalisante retenue, la façon dont
cela arrive nous intéresse assez peu ici car on part du principe que la
cuve va rompre. Létude des corium comporte son lot dincertitudes et
les expériences représentatives sont complexes à réaliser.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:636/1*FDxHkbBZIKEy8tsZwPS5Bg.png" /></p>
<p>Stratification du corium en fond de cuve possible.</p>
<p>Dautres pays estiment quils peuvent maintenir le corium dans la
cuve. On ne distingue finalement que deux approches :</p>
<ul>
<li>Rétention du corium en cuve ( <em>In Vessel Retention</em>, IVR)
associé à des moyens de réfrigération externe de la cuve (type
<em>External Reactor Vessel Cooling</em> , ERVC). Retenue sur AP1000 et
APR1400.</li>
<li>Rétention du corium hors cuve. <strong>Retenue sur EPR/EPR2</strong>
, et les VVER-1200 récents.</li>
</ul>
<h1 id="i.2-linteraction-corium-béton">I.2/ Linteraction corium
béton</h1>
<p>On a désormais notre corium chaud qui tombe dans le fond du bâtiment
réacteur. On arrive bientôt au <em>core catcher</em> , patience !</p>
<p>Une fois tombé, il arrive sur un béton dit « sacrificiel ». Ce béton
a vocation à être abalté par le corium pour modifier les propriétés
physico-chimiques du corium. Durant cette phase, le corium érode ce
béton sur environ 50 cm dépaisseur avant de couler dans le canal de
décharge qui relie le puits de cuve à « la chambre détalement ». Les
mouvements convectifs au sein du corium mélangent le béton et le corium,
le rendant plus fluide, plus homogène et moins visqueux afin de
faciliter son écoulement par la suite. Si plusieurs coulées successives
de corium surviennent, elles convergent toutes dans ce béton de manière
à obtenir un corium homogène et un seul écoulement vers la chambre
détalement. On appelle ça linteration corium béton (ICB).</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/1*a9BqPHsyV-bAo0C79Szwkw.png" /></p>
<p>Crédit: IRSN</p>
<p>ICB.</p>
<p>Une fois que le corium a ablaté sur toute une épaisseur, il faut
maintenir la structure de lenceinte en état, et on installe donc sous
cette couche de béton sacrificiel des matériaux réfractaires (qui
résistent à des très hautes températures avec une faible déformation
relative). Cette couche est appelée la zircone (ZETTRAL-95GR), et mesure
de 10 à 14 cm dépaisseur.</p>
<p>Une fois que le béton est ablaté complètement dans le sens vertical,
le corium arrive sur un bouchon de métal, cest un composant dont le
rôle est celui dun fusible. Il est la dernière étape avant le canal de
décharge. Ce fusible est conçu pour se rompre relativement rapidement au
contact du corium en assurant une section de passage suffisamment large
pour permettre une coulée rapide de la totalité du corium vers la
chambre détalement.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/1*T0TfHrMQoXXXwzbCrjhosw.png" /></p>
<p>Schéma complet du core catcher. Crédit: IRSN.</p>
<p><strong>La composition chimique du béton est très importante</strong>
car lablation va générer des gaz incondensables qui peuvent faire
monter la pression dans lenceinte. Cest le cas du CO2 issu de la
calcination du calcaire, par exemple. Ainsi sur EPR, la <a
href="https://www.irsn.fr/savoir-comprendre/surete/6-ans-apres-laccident-suivi-regulier-modifications-programme-experimental#:~:text=la procédure U5%2C qui a,procédant à des rejets filtrés.">procédure
U5</a> a été abandonnée grâce à une fiabilisation de lICB. Sur le parc,
cette procédure permet de dépressuriser lenceinte en expulsant à
latmosphère une partie des gaz préalablement nettoyés dans un filtre
sable.</p>
<p>Note: En principe, les chargements mécaniques de lenceinte sont
limités par conception. Mais il est possible quil y ait des rejets très
minimes malgré tout sur EPR.</p>
<h1 id="i.3-interaction-corium-zircone">I.3/ Interaction corium
zircone</h1>
<p>Cette partie sera assez simple, puisque lobjectif est de faire
interagir le moins longtemps possible le corium avec la zircone. La
zircone est ce quon appelle un <a
href="https://fr.wikipedia.org/wiki/Matériau_réfractaire"><strong>matériau
réfractaire</strong></a> <strong>à la chaleur</strong> . Cest-à-dire
quil ne fond pas, et se déforme relativement peu, même à des hautes
températures (inférieures à environ 1700°C, tout dépend du
matériau).</p>
<p>Une fois que le bouchon fusible a rompu, il faut emmener le corium
jusque dans la chambre détalement <strong>le plus vite
possible</strong> . A noter, la zircone a une forte inertie thermique,
ce qui nous arrange pour ne pas dégrader outre mesure le bâtiment
réacteur par contact prolongé, même si ce nest pas censé arriver
(toujours prendre des marges). Ainsi, une conduite entièrement tapissé
en briques de zircone remplit ce rôle dévacuation rapide du corium.
Cest un tuyau dévacuation pour corium.</p>
<h1 id="i.4-corium-dans-la-chambre-détalement">I.4/ Corium dans la
chambre détalement</h1>
<p>Cette étape, la dernière, consiste à neutraliser le corium une bonne
fois pour toute.</p>
<ul>
<li>une géométrie empêchant le retour en criticité (déjà rendu complexe
par la dilution dans le béton sacrificiel),</li>
<li>un système pour refroidir le corium par-dessous et par-dessus.</li>
</ul>
<p>Le corium arrive dans la chambre détalement qui a une surface
denviron 170 m2. Le corium chaud, en coulant dans la conduite
dévacuation va couper un fil, ce qui déclenche louverture dune trappe
ouvrant une arrivée deau gravitaire deau provenant du réservoir IRWST
( <em>In containment Refueling Water System Tank</em> ). Ce système est
intégralement passif, ni électricité, ni intervention humaine
nécessaire. Cette eau commence par remplir les canaux horizontaux situés
sous la chambre détalement. Les éléments du plancher contiennent des
canaux de refroidissement horizontaux de sections rectangulaires.
Lintérieur de la chambre détalement est recouvert dune couche de
béton sacrificiel qui a la même fonction que le béton du puits de cuve,
mais cette fois-ci il sert aussi à protéger temporairement la couche
protectrice.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:518/1*2KwlGcw32GEjG8HRp2f2Yw.png" /></p>
<p>Chambre détalement. Crédit: IRSN.</p>
<p>Le corium va sétaler dans cette chambre. Cest de la physique
complexe (que je ne vais pas détailler ici). Cet étalement est piloté
par la compétition entre les forces hydrodynamiques et les changements
de viscosité du corium (rhéologie) dus à son refroidissement. La
géométrie de cette chambre détalement est conçue pour optimiser
létalement, et ainsi limiter lépaisseur du corium, le rendant
sous-critique et le préparant au renoyage en surface par-dessus.</p>
<p>Leau, froide donc, arrivant gravitairement de lIRWST, vient noyer
le corium très chaud, donc il y a création de vapeur (beaucoup de
vapeur) sur les premiers instants du noyage. Cette vapeur est
recondensée par le système EVU (la Force dAction Rapide Nucléaire
-FARN- est capable dalimenter ce circuit depuis quelle est prévenue de
laccident grave).</p>
<p>Une fois que la croûte se forme en surface du corium, il y a une
vaporisation très limitée, et une fois le niveau deau atteint
suffisant, le corium est définitivement stabilisé.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/1*V3ByLTUdt8YT_oUs2Wse0Q.png" /></p>
<p>Schéma dun angle de la chambre détalement du corium. Crédit:
IRSN.</p>
<p>Pour conclure cette partie, une vidéo de présentation du <em>core
catcher</em> de lEPR de Flamanville.</p>
<p>Présentation de la construction du <em>core catcher</em> par EDF.</p>
<p><a
href="https://miro.medium.com/v2/resize:fit:700/0*-BaP_aooe3kpbSY7">https://miro.medium.com/v2/resize:fit:700/0*-BaP_aooe3kpbSY7</a></p>
<p>Chambre détalement terminée sur lEPR FA3. Crédit: <a
href="https://x.com/EDFEPR/status/1488165234510602245">EDF-EPR sur
X</a>.</p>
<h1 id="ii-modélisation-dun-accident-grave"><strong>II/ Modélisation
dun accident grave</strong></h1>
<p>On ne peut pas faire une expérience avec les mêmes conditions quun
réacteur nucléaire, pour des raisons économiques, techniques et
réglementaires. Alors on simule ça dans des codes de calcul. Un code de
calcul ce sont des choix de modélisations, des incertitudes et donc
<strong>ça se valide</strong> , sinon ça ne vaut pas grand-chose.</p>
<p>Et ça se valide avec des expériences ! Les ingénieurs ne sont pas
toujours derrière un ordinateur, lapproche empirique est
<strong>indispensable</strong> ! Mais tu viens de dire quon ne faisait
pas dexpériences réalistes ? Et oui, car on étudie chaque phase dun
accident grave <strong>séparément</strong>. Voyez ça comme des images
quon imbrique entre elles. A la fin, lensemble des images forment un
film, qui modélise un accident grave intégralement, ce qui permet <em>in
fine</em> de contourner lobstacle que représente limpossibilité dune
expérience réaliste. Et comment on réalise ce film ? Avec un code de
calcul intégral !</p>
<p><strong>Présentation dASTEC</strong></p>
<p>ASTEC, pour <em>Accident Source Term Evaluation Code</em> , est
développé par l <em>Institut de Radioprotection de de Sûreté
Nucléaire,</em> lIRSN. Cest un code dit « intégral» cest-à-dire quil
simule toutes les étapes dun accident grave. Cela comprend:</p>
<ul>
<li>La thermohydraulique du circuit : module CESAR, proche du code de
référence en thermohydraulique <a
href="https://cathare.cea.fr/">CATHARE</a>, développé par le
<em>Comissarait à lEnergie Atomique et aux Energies Alternatives</em>
(CEA) ;</li>
<li>La dégradation du cœur : module ICARE ;</li>
<li>Linteraction corium béton : module MEDICIS ;</li>
<li>La chimie, la physique, le transport des gaz, aérosols et des
produits de fission dans lenceinte : modules SOPHAEROS, ISODOP, COVI
;</li>
<li>Les systèmes de sureté : module SYSINT ;</li>
<li>La thermohydraulique de lenceinte : module CPA ;</li>
<li>Le comportement des produits de fission : module ELSA ;</li>
<li>Lévaluation des doses : module DOSE.</li>
</ul>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/1*RLIofjCDlaOG4KpqdHri1A.png" /></p>
<p>Les différents modules dASTEC. Crédit: IRSN.</p>
<p>Vous trouverez plus dinfos sur : <a
href="https://www.irsn.fr/recherche/systeme-logiciels-astec"><span>https://www.irsn.fr/recherche/systeme-logiciels-astec</span></a>.
Voici également une courte présentation vidéo du code ASTEC, qui est
désormais <strong>un code de référence en Europe sur les accidents
graves des REP.</strong></p>
<p><strong>Présentation vidéo dASTEC</strong></p>
<p>Un code intégral doit répondre aux exigences suivantes :</p>
<p>\- Calculer de façon exhaustive les phénomènes physiques intervenant
lors dun accident de fusion du cœur, en maintenant un compromis temps
de calcul/précision ;</p>
<p>\- simuler le comportement des principaux systèmes de sûreté du
réacteur, afin de se placer dans des conditions similaires à celles dun
réacteur en accidentel, et tester différents scénarios de disponibilités
des systèmes ;</p>
<p>\- traiter complètement les couplages entre phénomènes, par exemple
le refroidissement du corium dans le puits de cuve, en cours
dinteraction corium-béton, par rayonnement et par convection dans
lenceinte de confinement ;</p>
<p>\- être découpé en module indépendant, pour faciliter notamment les
comparaisons avec des résultats expérimentaux et ainsi valider les
modules ;</p>
<p>\- Etre rapide malgré sa grande taille (de 400 000 à 500 000
instructions et 1 000 à 1 500 sous-programmes). Cest très important
quil puisse pouvoir calculer plus vite que le temps réel, afin de
tester un grand nombre de scénarios.</p>
<p><strong>Fonctionnement dASTEC</strong></p>
<p>Pour expliquer (très) rapidement, le logiciel ASTEC a besoin de
données dentrée, cest-à-dire les géométries, les matériaux et les
conditions physico-chimiques initiales de lensemble du réacteur. Ces
données sont fournies par lingénieur détude en accident grave.</p>
<p>A chaque pas de temps, ASTEC calcule lévolution des paramètres
physiques et chimiques. Dans un code intégral, il y a une articulation
de tous les modules, avec un ordre dexécution. On peut activer ou
désactiver certains, selon le besoin, sachant que le nombre de modules
impliqués augmente le temps de calcul !</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:529/1*eTmPXUnYlkBha3CUkd9zcA.png" /></p>
<p>Comment fonctionne ASTEC à chaque pas de temps du calcul. Crédit:
IRSN.</p>
<p>/In fine, c/e qui intéresse lingénieur en sûreté nucléaire, ce sont
les post-traitements des variables suivies ! Ci-dessous, un exemple de
visualisation du cœur dun REP-900MWe dEDF. Ce que vous voyez est un
post-traitement selon le temps des champs de température. Ce quil se
passe dans cette séquence est une dégradation du cœur, vous voyez le
niveau deau baisser progressivement jusquà être remplacé par le corium
en fond de cuve. Vous constaterez que sur la 3ème image, la cuve a cassé
au niveau de la couche de métal léger, à cause du <em>focusing
effect</em> expliqué en partie I !</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/1*zF9mCPNrdduBhtW5o3B_lg.png" /></p>
<p>Crédit: IRSN.</p>
<p><strong>Validation dASTEC</strong></p>
<p>Comme expliqué plus tôt, un code est une tentative de représentation
du réel, il est donc nécessaire de le valider par comparaison avec… et
bien le réel. Notez quon peut aussi valider un code en le comparant à
des codes déjà validés. Par exemple le module thermohydraulique dASTEC,
CESAR, est validé par comparaison avec le logiciel de référence <a
href="https://cadarache.cea.fr/cad/Documents/Entreprises/Valorisation/Rencontres-CEA-Industrie/11eme/42-FM-f-CATHARE V 06 11 17.pdf">CATHARE</a>.
Je ne vais pas mattarder dessus.</p>
<p>Le principe dune validation empirique cest de faire une expérience,
de la modéliser dans le code de calcul le plus fidèlement possible, et
de comparer les résultats issus des observations et des capteurs avec la
simulation numérique. On constate souvent des écarts, lobjectif cest
de les réduire le plus possible tout en étant capable de dire pourquoi
il y a des écarts et combien ils valent. ASTEC (en V2) est validé par un
panel dexpériences assez immense, depuis 1990 et sans arrêt depuis.
Cette validation sappuie sur plus de 160 essais dans le monde entier,
en particulier sur les essais Phébus, cf. <a
href="https://www.irsn.fr/savoir-comprendre/surete/programme-recherche-phebus-pf-0"><span>https://www.irsn.fr/savoir-comprendre/surete/programme-recherche-phebus-pf-0</span></a>.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:635/1*7I4QJzUPnNG044i98XIMWw.png" /></p>
<p>Exemple de comparaison.</p>
<p>Les essais Phébus constituent une grande base de validation des
modules <a
href="https://www.irsn.fr/sites/default/files/documents/larecherche/outils-scientifiques/codes-de-calcul/icare.pdf">CESAR
&amp; ICARE</a> (thermohydraulique et dynamique de dégradation) et <a
href="https://www.irsn.fr/page/fission-product-transport-modelling-astec-integral-code-sophaeros-module">SOPHAEROS</a>
(comportement des produits de fission).</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/1*Czs5OR9nKXm4WCbxkOlgDw.png" /></p>
<p>Liste des essais Phébus.</p>
<p>Il y a eu plein dautres validations et lobjectif nest pas de
toutes les lister. Vous trouverez une liste des expériences menées sur
ce lien: <a
href="https://www.irsn.fr/recherche/systeme-logiciels-astec#validation"><span>https://www.irsn.fr/recherche/systeme-logiciels-astec#validation</span></a></p>
<h2 id="autre-code-utilisé-en-accident-grave"><strong>Autre code utilisé
en accident grave</strong></h2>
<p>ASTEC ne modélise pas la phase finale dans la chambre détalement de
lEPR. Pour cela, des programmes spécifiques ont été menés à
linternational, avec des expériences passionnantes. Lobjectif étant
davoir une compréhension fine du phénomène détalement du corium, de
son refroidissement, puis de son noyage. Les logiciels français sont
respectivement THEMA (code CEA) qui calcule la cinétique de
solidification du corium (en masse et en croûtes) ainsi que lérosion du
substrat. Et CROCO (code IRSN) qui permet une modélisation détaillée de
la convection dans lécoulement. Un grand nombre dessais ont été menés,
le plus impressionnant étant lessai VULCANO, comme montré
ci-dessous.</p>
<p><img
src="https://miro.medium.com/v2/resize:fit:700/1*6YGczfyC8-4kDQXoWoIkQw.png" /></p>
<p>Crédit: IRSN.</p>
<p>Il est ressorti de lensemble de ces programmes de R&amp;D que
létalement à sec du corium de REP permet son refroidissement ultérieur
car lépaisseur de corium atteinte est suffisamment faible. Ainsi,
lapproche retenue sur EPR est validée expérimentalement. Des
incertitudes subsistent sur la capacité dune nappe de corium à sétaler
sous eau, cest pour cela que lEPR fait le choix détaler le corium à
sec en séparant physiquement eau et corium.</p>
<h1 id="conclusion">Conclusion</h1>
<p>Voilà comment on gère un accident grave sur lEPR. Jai
volontairement éclipsé beaucoup de sujets sur le comportent des produits
de fissions dans lenceinte, sur les différentes possibilités de
stratification du corium. Jai aussi fait le choix de focaliser sur
lEPR alors quil existe aussi dautres stratégies sur les autres
réacteurs du parc de génération II (Les CP, P4/P4 et N4). Jai
également restreint aux REP français, sans analyser les autres
stratégies équivalentes sur <a
href="https://fr.wikipedia.org/wiki/Réacteur_VVER">VVER</a>, <a
href="https://fr.wikipedia.org/wiki/Réacteur_AP1000">AP1000</a>, ou <a
href="https://fr.wikipedia.org/wiki/APR-1400">APR1400</a>. Je nai pas
non plus parlé des filières à eau lourde (<a
href="https://fr.wikipedia.org/wiki/Réacteur_CANDU">CANDU</a>),
bouillantes (<a
href="https://fr.wikipedia.org/wiki/Réacteur_à_eau_bouillante">BWR</a>,
<a href="https://fr.wikipedia.org/wiki/Réacteur_ABWR">ABWR</a>), rapides
(<a href="https://fr.wikipedia.org/wiki/Superphénix">SPX</a>) ou encore
des filières thermiques (HTR &amp; <a
href="https://fr.wikipedia.org/wiki/Réacteur_nucléaire_à_très_haute_température">VHTR</a>)
et à sels fondus (<a
href="https://fr.wikipedia.org/wiki/Réacteur_nucléaire_à_sels_fondus">MSFR</a>).
Chaque technologie, présente une stratégie adaptée. <strong>Tous les
futurs réacteurs devront quoiquil en soit prendre en compte les
accidents graves en compte</strong> .</p>
<p>Je vous donne mes sources sur <a href="https://we.tl/t-Ubd7Pil4Np">ce
lien</a> (attention il nest valable que 7 jours). Tout est public et
trouvable sur le site de lASN et/ou de lIRSN.</p>
<h1 id="annexe"><strong>Annexe</strong></h1>
<p><img
src="https://miro.medium.com/v2/resize:fit:629/1*1Iepu71t1QQjOppTrNy7OQ.png" /></p>
<p>[[<a
href="https://medium.com/tag/nuclear?source=post_page-----f82c1d15ed58--------------------------------">https://medium.com/tag/nuclear?source=post_page-----f82c1d15ed58--------------------------------</a>][</p>
<p>Nuclear</p>
<p>]]</p>
<p>[[<a
href="https://medium.com/tag/accident?source=post_page-----f82c1d15ed58--------------------------------">https://medium.com/tag/accident?source=post_page-----f82c1d15ed58--------------------------------</a>][</p>
<p>Accident</p>
<p>]]</p>
<p>[[<a
href="https://medium.com/tag/epr?source=post_page-----f82c1d15ed58--------------------------------">https://medium.com/tag/epr?source=post_page-----f82c1d15ed58--------------------------------</a>][</p>
<p>Epr</p>
<p>]]</p>
<p>[[<a
href="https://medium.com/tag/astec?source=post_page-----f82c1d15ed58--------------------------------">https://medium.com/tag/astec?source=post_page-----f82c1d15ed58--------------------------------</a>][</p>
<p>Astec</p>
<p>]]</p>
<p>[[<a
href="https://medium.com/tag/fukushima?source=post_page-----f82c1d15ed58--------------------------------">https://medium.com/tag/fukushima?source=post_page-----f82c1d15ed58--------------------------------</a>][</p>
<p>Fukushima</p>
<p>]]</p>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>

View File

@ -1,4 +0,0 @@
<html><head><title>DragonFeu Blog</title></head><body> # DragonFeu Blog - Articles
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
<h1>Navigation</h1><br><a href=/index.html>index.html</a><h1>Articles en Français</h1><br><a href=/lang_fr//2024-11-02-coucou-gemini.html>2024-11-02-coucou-gemini.html</a><br><a href=/lang_fr//2024-09-08-strategie-mitigation-accident-fusion-coeur-epr2.html>2024-09-08-strategie-mitigation-accident-fusion-coeur-epr2.html</a><br><a href=/lang_fr//2024-05-15-l-aventure-superphenix.html>2024-05-15-l-aventure-superphenix.html</a><br><a href=/lang_fr//2023-06-10-recap-centrale-zaporijia.html>2023-06-10-recap-centrale-zaporijia.html</a><br><a href=/lang_fr//2023-06-09-recapitulatif-contenu-threads.html>2023-06-09-recapitulatif-contenu-threads.html</a><h1>Articles in English</h1><br><a href=/lang_en/2024-11-02-coucou-gemini.html>2024-11-02-coucou-gemini.html</a></article></body></html>

View File

@ -0,0 +1,181 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>dragonfeu_blog</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">dragonfeu_blog</h1>
</header>
<hr />
<p>Les trucs d'un dragon qui roule plus vite à vélo tel un neutron
rapide, mais avec un casque opour le vélotaf chez Hexana.</p>
<hr />
<p>À propos =&gt;a-propos.gmi</p>
<p>Projets =&gt;projets.gmi</p>
<p>Contact =&gt;contact.gmi</p>
<p>BlogRoll =&gt;blogroll.gmi</p>
<hr />
</body>
</html>

View File

@ -1,268 +1,4 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>dragonfeu_blog</title>
<style type='text/css'>* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
text-align: left;
margin: 0 auto;
font-size: 1.5rem;
line-height: 1.5em;
max-width: 60ch;
color: #000;
background: #fff;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
margin-top: 1em;
margin-bottom: 2rem;
color: #333;
}
/* 1. Use a more-intuitive box-sizing model */
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
/* Improve text rendering */
-webkit-font-smoothing: antialiased;
}
/* Improve media defaults */
img,
picture,
video,
canvas,
svg {
display: block;
width: 100%;
margin-top: 1rem;
margin-bottom: 1rem;
max-width: 100%;
}
/* Inherit fonts for form controls */
input,
button,
textarea,
select {
font: inherit;
}
/* Avoid text overflows */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
/* Improve line wrapping */
p {
text-wrap: pretty;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
h1 {
font-size: 3.5rem;
}
h2 {
font-size: 2rem;
}
h3 {
font-size: 1.5rem;
}
h1,
h2,
h3,
h4,
h5,
h6 {
text-wrap: balance;
line-height: 1.3em;
}
#root,
#__next {
isolation: isolate;
}
input,
button,
textarea,
select {
font: inherit;
}
ul {
padding-left: 4ch;
padding-right: 4ch;
}
li {
margin-bottom: 1em;
}
@media (max-width: 20rem) {
body {
padding: 1rem;
}
}
</style></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>dragonfeu_blog</title>
<style type='text/css'>* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
text-align: left;
margin: 0 auto;
font-size: 1.5rem;
line-height: 1.5em;
max-width: 60ch;
color: #000;
background: #fff;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: Helvetica, "Ubuntu Sans", "Noto Sans", Calibri, Arial, sans-serif;
margin-top: 1em;
margin-bottom: 2rem;
color: #333;
}
/* 1. Use a more-intuitive box-sizing model */
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
/* Improve text rendering */
-webkit-font-smoothing: antialiased;
}
/* Improve media defaults */
img,
picture,
video,
canvas,
svg {
display: block;
width: 100%;
margin-top: 1rem;
margin-bottom: 1rem;
max-width: 100%;
}
/* Inherit fonts for form controls */
input,
button,
textarea,
select {
font: inherit;
}
/* Avoid text overflows */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
/* Improve line wrapping */
p {
text-wrap: pretty;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
h1 {
font-size: 3.5rem;
}
h2 {
font-size: 2rem;
}
h3 {
font-size: 1.5rem;
}
h1,
h2,
h3,
h4,
h5,
h6 {
text-wrap: balance;
line-height: 1.3em;
}
#root,
#__next {
isolation: isolate;
}
input,
button,
textarea,
select {
font: inherit;
}
ul {
padding-left: 4ch;
padding-right: 4ch;
}
li {
margin-bottom: 1em;
}
@media (max-width: 20rem) {
body {
padding: 1rem;
}
}
</style></head>
<body>
<a href='/'>Retour à l'Accueil</a><hr/><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
@ -436,8 +172,3 @@ li {
<p>hop hop hello in English</p>
</body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>
<footer><hr/><a href='/'>Retour à l'Accueil</a></footer></body>
</html>