{"id":1276,"date":"2026-08-21T14:31:31","date_gmt":"2026-08-21T14:31:31","guid":{"rendered":"https:\/\/matforge.org\/?p=1276","raw":"https:\/\/matforge.org\/?p=1276"},"modified":"2026-08-21T14:31:31","modified_gmt":"2026-08-21T14:31:31","slug":"reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists","status":"publish","type":"post","link":"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/","title":{"rendered":"Mod\u00e9lisation d&rsquo;ordres r\u00e9duits (ROM) avec Pymor : un guide pratique pour les scientifiques","raw":"Mod\u00e9lisation d'ordres r\u00e9duits (ROM) avec Pymor : un guide pratique pour les scientifiques"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>La mod\u00e9lisation d&rsquo;ordres r\u00e9duits est l&rsquo;un des moyens les plus pratiques d&rsquo;acc\u00e9l\u00e9rer les simulations scientifiques sans sacrifier la fid\u00e9lit\u00e9 physique n\u00e9cessaire \u00e0 des r\u00e9sultats cr\u00e9dibles. Au lieu de r\u00e9soudre des millions d&rsquo;\u00e9quations \u00e0 chaque fois qu&rsquo;un param\u00e8tre change, ROM extrait le comportement dominant d&rsquo;un mod\u00e8le haute fid\u00e9lit\u00e9 dans un substitut l\u00e9ger qui peut fournir des r\u00e9ponses en quelques secondes, voire en millisecondes.<\/p>\n<p>Ce guide explique ce que signifie la mod\u00e9lisation d&rsquo;ordre r\u00e9duit dans la pratique, pourquoi les scientifiques l&rsquo;utilisent et comment Pymor rend le flux de travail accessible aux chercheurs qui ne sont pas des sp\u00e9cialistes des m\u00e9thodes num\u00e9riques. Il couvre le mod\u00e8le de d\u00e9composition en ligne hors ligne, l&rsquo;architecture Pymor, les exemples de code pratiques et les \u00e9cueils courants.<\/p>\n<h2>Points \u00e0 retenir cl\u00e9s<\/h2>\n<ul>\n<li>La ROM r\u00e9sout un probl\u00e8me central&nbsp;: les simulations co\u00fbteuses sont trop lentes pour les balayages de param\u00e8tres, l&rsquo;optimisation, l&rsquo;analyse en temps r\u00e9el ou la quantification de l&rsquo;incertitude.<\/li>\n<li>Pymor est con\u00e7u sp\u00e9cifiquement pour la r\u00e9duction des commandes de mod\u00e8les dans Python, avec la prise en charge de Fenics, Deal.II et Pure Python.<\/li>\n<li>Le mod\u00e8le de ROM de base est d\u00e9composition en ligne hors ligne : pr\u00e9-calcul co\u00fbteux une fois, \u00e9valuation rapide \u00e0 plusieurs reprises.<\/li>\n<li>La ROM n&rsquo;est pas une solution miracle. La troncature, la stabilit\u00e9 et la qualit\u00e9 de l&rsquo;instantan\u00e9 d\u00e9terminent si le mod\u00e8le r\u00e9duit est utilisable.<\/li>\n<li>Pymor g\u00e8re des parties difficiles du flux de travail, notamment la g\u00e9n\u00e9ration de base gloutissante, l&rsquo;estimation d&rsquo;erreur a posteriori et la composition de l&rsquo;op\u00e9rateur.<\/li>\n<\/ul>\n<h2>Pourquoi les scientifiques ont besoin de mod\u00e8les de commandes r\u00e9duites<\/h2>\n<p>Chaque simulation de calcul commence avec un mod\u00e8le haute fid\u00e9lit\u00e9, souvent appel\u00e9 mod\u00e8le de commande complet ou FOM. Ces mod\u00e8les sont pr\u00e9cis et physiquement dignes de confiance, mais ils sont \u00e9galement co\u00fbteux. Une seule ex\u00e9cution peut prendre des heures ou des jours, et les flux de travail de recherche n\u00e9cessitent souvent de nombreuses ex\u00e9cutions pour les balayages de param\u00e8tres, l&rsquo;optimisation ou la propagation de l&rsquo;incertitude.<\/p>\n<p>La mod\u00e9lisation d&rsquo;ordres r\u00e9duits r\u00e9sout ce probl\u00e8me. Au lieu de r\u00e9soudre le syst\u00e8me complet \u00e0 plusieurs reprises, vous :<\/p>\n<ol>\n<li>Ex\u00e9cutez le mod\u00e8le de haute fid\u00e9lit\u00e9 \u00e0 des points de param\u00e8tre repr\u00e9sentatifs pendant la phase hors ligne.<\/li>\n<li>Extraire le comportement dominant dans une base r\u00e9duite \u00e0 l&rsquo;aide de m\u00e9thodes telles que la d\u00e9composition orthogonale appropri\u00e9e ou la g\u00e9n\u00e9ration de base r\u00e9duite gourmande.<\/li>\n<li>Projetez le syst\u00e8me sur cette base pour produire un probl\u00e8me d&rsquo;alg\u00e8bre lin\u00e9aire plus petit.<\/li>\n<li>\u00c9valuez rapidement le mod\u00e8le r\u00e9duit pour de nouveaux param\u00e8tres pendant la phase en ligne.<\/li>\n<\/ol>\n<p>La phase hors ligne s&rsquo;ex\u00e9cute une fois. La phase en ligne s&rsquo;ex\u00e9cute \u00e0 chaque fois qu&rsquo;un r\u00e9sultat est n\u00e9cessaire. Pour les probl\u00e8mes param\u00e9triques avec des dizaines ou des centaines de combinaisons de param\u00e8tres, cela peut transformer un flux de travail qui prend des semaines en un flux qui prend quelques minutes.<\/p>\n<h3>Quand la ROM en vaut la peine<\/h3>\n<ul>\n<li>Simulation en temps r\u00e9el, y compris les jumeaux num\u00e9riques, les syst\u00e8mes de contr\u00f4le et les outils de conception interactifs.<\/li>\n<li>Optimisation de la conception avec de nombreuses \u00e9valuations de conception.<\/li>\n<li>Quantification de l&rsquo;incertitude o\u00f9 les m\u00e9thodes de Monte Carlo ou du chaos polynomial n\u00e9cessitent de nombreuses \u00e9valuations de mod\u00e8les.<\/li>\n<li>Couplage multiphysique o\u00f9 chaque sous-mod\u00e8le b\u00e9n\u00e9ficie d&rsquo;une interface plus rapide.<\/li>\n<\/ul>\n<h3>Quand la ROM n&rsquo;est pas le bon outil<\/h3>\n<ul>\n<li>Analyse en un seul point sans besoin de balayages de param\u00e8tres.<\/li>\n<li>Probl\u00e8mes sans structure param\u00e9trique.<\/li>\n<li>Des ph\u00e9nom\u00e8nes tr\u00e8s localis\u00e9s, tels que les ondes de choc ou les transitions de phase, qui ne sont pas bien captur\u00e9s par des bases globales r\u00e9duites.<\/li>\n<\/ul>\n<h2>Comment fonctionne la ROM&nbsp;: les phases hors ligne et en ligne<\/h2>\n<p>Le c\u0153ur de la ROM est la d\u00e9composition en ligne hors ligne. C&rsquo;est le mod\u00e8le structurel qui rend l&rsquo;approche utile.<\/p>\n<h3>La phase hors connexion<\/h3>\n<p>Pendant la phase hors connexion, vous r\u00e9solvez le mod\u00e8le de commande complet \u00e0 des points de param\u00e8tre repr\u00e9sentatifs. Ces solutions s&rsquo;appellent des instantan\u00e9s. Ils capturent la vari\u00e9t\u00e9 de solutions, c&rsquo;est-\u00e0-dire l&rsquo;ensemble des formes de solutions possibles dans l&rsquo;espace des param\u00e8tres.<\/p>\n<p>Trois \u00e9tapes cl\u00e9s se produisent pendant la phase hors connexion :<\/p>\n<ol>\n<li>Collection d&rsquo;instantan\u00e9s. Ex\u00e9cutez le mod\u00e8le d&rsquo;ordre complet \u00e0 des points de param\u00e8tre qui s&rsquo;\u00e9tendent sur l&rsquo;espace d&rsquo;int\u00e9r\u00eat. Le choix des points est important.<\/li>\n<li>g\u00e9n\u00e9ration de base. Extrayez un sous-espace de faible dimension qui se rapproche de la vari\u00e9t\u00e9 de la solution.<\/li>\n<li>pr\u00e9-calcul. Projetez les op\u00e9rateurs de commandes compl\u00e8tes sur la base r\u00e9duite et mettez en cache les petites matrices r\u00e9sultantes.<\/li>\n<\/ol>\n<p>Les m\u00e9thodes de g\u00e9n\u00e9ration de base commune comprennent :<\/p>\n<ul>\n<li>D\u00e9composition orthogonale appropri\u00e9e, qui trouve les directions les plus \u00e9nerg\u00e9tiques dans l&rsquo;espace des instantan\u00e9s.<\/li>\n<li>Gourmande r\u00e9duite G\u00e9n\u00e9ration de base, qui s\u00e9lectionne les points de param\u00e8tres o\u00f9 l&rsquo;erreur estim\u00e9e est la plus importante.<\/li>\n<\/ul>\n<p>Le pr\u00e9-calcul est l&rsquo;infrastructure critique. Une fois que le syst\u00e8me r\u00e9duit est assembl\u00e9, il peut \u00eatre \u00e9valu\u00e9 sans toucher \u00e0 plusieurs reprises le maillage d&rsquo;origine ou les op\u00e9rateurs de commandes complets.<\/p>\n<h3>La phase en ligne<\/h3>\n<p>Lorsque vous avez besoin d&rsquo;un r\u00e9sultat pour un nouveau point de param\u00e8tre, le mod\u00e8le r\u00e9duit r\u00e9sout un probl\u00e8me beaucoup plus petit. Cela signifie souvent des centaines ou des milliers d&rsquo;inconnus au lieu de millions.<\/p>\n<p>La phase en ligne suit g\u00e9n\u00e9ralement cette s\u00e9quence :<\/p>\n<ol>\n<li>Construisez ou \u00e9valuez le syst\u00e8me r\u00e9duit pour le nouveau param\u00e8tre.<\/li>\n<li>R\u00e9soudre le probl\u00e8me r\u00e9duit d&rsquo;alg\u00e8bre lin\u00e9aire.<\/li>\n<li>Estimez \u00e9ventuellement l&rsquo;erreur avec une borne a posteriori.<\/li>\n<\/ol>\n<p>Le r\u00e9sultat est une solution dans l&rsquo;espace r\u00e9duit. Vous pouvez reconstruire la solution de commande compl\u00e8te en cas de besoin, bien que les variables r\u00e9duites soient souvent suffisantes pour l&rsquo;analyse.<\/p>\n<h2>Pymor : architecture et design<\/h2>\n<p>Pymor est une biblioth\u00e8que Python open-source con\u00e7ue sp\u00e9cifiquement pour la r\u00e9duction des commandes de mod\u00e8les. Contrairement aux packages Scientific Python \u00e0 usage g\u00e9n\u00e9ral, Pymor est construit autour du workflow ROM.<\/p>\n<p>La biblioth\u00e8que est utile car elle relie des m\u00e9thodes num\u00e9riques, la g\u00e9n\u00e9ration de base, l&rsquo;estimation des erreurs et l&rsquo;int\u00e9gration du backend dans un cadre de r\u00e9duction de mod\u00e8le.<\/p>\n<h3>Ce que Pymor g\u00e8re<\/h3>\n<ul>\n<li>backends discr\u00e9tis\u00e9s. Pymor peut fonctionner avec les discr\u00e9tisations Fenics, FenicsX, Deal.II et Python Pure.<\/li>\n<li>g\u00e9n\u00e9ration de base. Des algorithmes gourmands, une r\u00e9duction bas\u00e9e sur les pods et une troncature \u00e9quilibr\u00e9e sont impl\u00e9ment\u00e9es.<\/li>\n<li>D\u00e9composition hors ligne en ligne. Pymor g\u00e8re la d\u00e9composition affine des op\u00e9rateurs lorsque la structure du probl\u00e8me le permet.<\/li>\n<li>Estimation des erreurs. Les estimateurs d&rsquo;erreur a posteriori aident \u00e0 certifier la pr\u00e9cision pour les classes de probl\u00e8mes appropri\u00e9es.<\/li>\n<li>Composition du mod\u00e8le. Le framework op\u00e9rateur de Pymor permet de construire des mod\u00e8les complexes \u00e0 partir de composants plus simples.<\/li>\n<\/ul>\n<h3>Un exemple de code Pymor rapide<\/h3>\n<p>Le probl\u00e8me du bloc thermique est un point de d\u00e9part commun. Il s&rsquo;agit d&rsquo;une \u00e9quation de chaleur param\u00e9trique o\u00f9 la conductivit\u00e9 varie selon les sous-domaines.<\/p>\n<pre><code class=\"language-python\">from pymor.discretizations.cg import discretize_stationary_cg\nfrom pymor.operators.constructions import LincombOperator\nfrom pymor.analyticalproblems.thermalblock import thermal_block_problem\nfrom pymor.reductors.coercive import CoerciveRBReductor\n\n# 1. Define the problem: thermal block with 4 subdomains,\n# each with a tunable conductivity parameter\nproblem = thermal_block_problem(num_blocks=(2, 2))\n\n# 2. Discretize with continuous Galerkin FEM\nfom, (x, y) = discretize_stationary_cg(problem, diameter=0.05)\n\n# 3. Build a Reduced Basis via greedy algorithm\n# The CoerciveRBReductor uses energy-norm error estimates\nreductor = CoerciveRBReductor(fom, product=fom.H1_0_product)\nrom = reductor.reduce(\n    max_extensions=8,\n    error_thresh=1e-3,\n    error_evals=100\n)\n\n# 4. Evaluate for a new parameter point\nmu = fom.parameters.parse([0.1, 1.0, 0.5, 2.0])\nu_rom = rom.solve(mu)\n<\/code><\/pre>\n<p>Cet exemple montre le mod\u00e8le principal. Pymor g\u00e8re la configuration du probl\u00e8me, la discr\u00e9tisation, la s\u00e9lection gourmande, la g\u00e9n\u00e9ration de base et l&rsquo;\u00e9valuation r\u00e9duite du mod\u00e8le. Vous n&rsquo;avez pas besoin d&rsquo;assembler manuellement des matrices, de construire la base ou de calculer vous-m\u00eame des limites d&rsquo;erreur.<\/p>\n<h2>Le probl\u00e8me du bloc thermique&nbsp;: une proc\u00e9dure pas \u00e0 pas travaill\u00e9e<\/h2>\n<p>Le probl\u00e8me du bloc thermique est le didacticiel canonique de Pymor car il est physiquement intuitif et math\u00e9matiquement propre.<\/p>\n<h3>D\u00e9finition du probl\u00e8me<\/h3>\n<p>Imaginez un domaine rectangulaire divis\u00e9 en quatre sous-domaines rectangulaires dans une grille 2\u00d72. Chaque sous-domaine a un param\u00e8tre de conductivit\u00e9 thermique uniforme \u03bc\u1d62. L&rsquo;\u00e9quation r\u00e9gissante est :<\/p>\n<p>-\u2207 \u00b7 (\u03bc\u1d62 \u2207U) = F dans chaque sous-domaine<\/p>\n<p>Les param\u00e8tres \u03bc\u2081, \u03bc\u2082, \u03bc\u2083 et \u03bc\u2084 varient selon les simulations.<\/p>\n<h3>Pourquoi ce probl\u00e8me est utile<\/h3>\n<ol>\n<li>Les param\u00e8tres entrent affinement. Le coefficient \u03bc\u1d62 multiplie l&rsquo;op\u00e9rateur de gradient lin\u00e9airement, ce qui prend en charge la d\u00e9composition en ligne.<\/li>\n<li>L&rsquo;espace r\u00e9duit peut \u00eatre tr\u00e8s petit. M\u00eame avec un maillage fin, une base r\u00e9duite de quelques modes peut suffire pour une pr\u00e9cision utile.<\/li>\n<li>La borne d&rsquo;erreur est calculable pour les probl\u00e8mes coercitifs. Pymor peut estimer cela automatiquement.<\/li>\n<\/ol>\n<h3>Ce que vous pouvez faire avec<\/h3>\n<p>Une fois le mod\u00e8le r\u00e9duit construit, vous pouvez :<\/p>\n<ul>\n<li>Balayez rapidement les conductivit\u00e9s.<\/li>\n<li>Effectuer une analyse de sensibilit\u00e9.<\/li>\n<li>Int\u00e9grez la ROM dans une boucle d&rsquo;optimisation.<\/li>\n<li>G\u00e9n\u00e9rez des visualisations thermiques en temps r\u00e9el.<\/li>\n<\/ul>\n<h2>M\u00e9thodes ROM : Choisir la bonne approche<\/h2>\n<p>Diff\u00e9rentes techniques de r\u00e9duction conviennent \u00e0 diff\u00e9rents types de probl\u00e8mes. La m\u00e9thode doit correspondre \u00e0 la physique et \u00e0 la structure du mod\u00e8le.<\/p>\n<h3>D\u00e9composition orthogonale appropri\u00e9e<\/h3>\n<ul>\n<li>Id\u00e9al pour les probl\u00e8mes o\u00f9 le collecteur de solution est fluide et la d\u00e9pendance aux param\u00e8tres est l\u00e9g\u00e8re.<\/li>\n<li>Cela fonctionne en collectant des instantan\u00e9s, en effectuant une d\u00e9composition de valeurs singuli\u00e8res et en conservant les modes dominants.<\/li>\n<li>Il est simple, robuste et bien compris.<\/li>\n<li>Il peut ne pas garantir la stabilit\u00e9 des probl\u00e8mes domin\u00e9s par la convection, et les limites d&rsquo;erreur ne sont pas toujours certifi\u00e9es.<\/li>\n<\/ul>\n<h3>Base gourmande r\u00e9duite<\/h3>\n<ul>\n<li>Id\u00e9al pour les probl\u00e8mes param\u00e9triques o\u00f9 un estimateur d&rsquo;erreurs r\u00e9siduels est disponible.<\/li>\n<li>Cela fonctionne en s\u00e9lectionnant des points de param\u00e8tres qui maximisent l&rsquo;erreur estim\u00e9e et la construction de la base de mani\u00e8re progressive.<\/li>\n<li>Il peut fournir des limites d&rsquo;erreur certifi\u00e9es et s&rsquo;adapter \u00e0 la structure du probl\u00e8me.<\/li>\n<li>Cela n\u00e9cessite un bon estimateur d&rsquo;erreurs et la s\u00e9lection gourmande peut manquer certaines r\u00e9gions de l&rsquo;espace des param\u00e8tres.<\/li>\n<\/ul>\n<h3>troncature \u00e9quilibr\u00e9e<\/h3>\n<ul>\n<li>Id\u00e9al pour les syst\u00e8mes lin\u00e9aires invariants dans le temps et les probl\u00e8mes orient\u00e9s contr\u00f4le.<\/li>\n<li>Il r\u00e9duit le syst\u00e8me tout en pr\u00e9servant la stabilit\u00e9 et les valeurs dominantes de Hankel.<\/li>\n<li>Il peut pr\u00e9server les propri\u00e9t\u00e9s de contr\u00f4labilit\u00e9 et d&rsquo;observabilit\u00e9.<\/li>\n<li>Il est limit\u00e9 \u00e0 des classes de syst\u00e8mes appropri\u00e9es et peut n\u00e9cessiter des solveurs sp\u00e9cialis\u00e9s.<\/li>\n<\/ul>\n<h3>M\u00e9thodes d&rsquo;interpolation empiriques<\/h3>\n<ul>\n<li>Id\u00e9al pour la d\u00e9pendance aux param\u00e8tres non-affiniques o\u00f9 les param\u00e8tres n&rsquo;entrent pas de mani\u00e8re lin\u00e9aire.<\/li>\n<li>Ils se rapprochent des termes non affines par interpolation \u00e0 des points s\u00e9lectionn\u00e9s.<\/li>\n<li>Ils \u00e9tendent la ROM \u00e0 des probl\u00e8mes plus complexes.<\/li>\n<li>Ils ajoutent de la complexit\u00e9 et n\u00e9cessitent une s\u00e9lection minutieuse des points d&rsquo;interpolation.<\/li>\n<\/ul>\n<p>En r\u00e8gle g\u00e9n\u00e9rale, commencez par une base r\u00e9duite gourmande si vous avez un probl\u00e8me coercitif avec les param\u00e8tres affine. Utilisez POD lorsque vous souhaitez une d\u00e9pendance des param\u00e8tres simplicit\u00e9 et harmonieuse. Utilisez une troncature \u00e9quilibr\u00e9e pour les probl\u00e8mes de contr\u00f4le lin\u00e9aires invariants dans le temps.<\/p>\n<h2>erreurs courantes et comment les \u00e9viter<\/h2>\n<p>M\u00eame avec une biblioth\u00e8que telle que Pymor, la mod\u00e9lisation d&rsquo;ordre r\u00e9duit peut \u00eatre fragile. Ce sont les erreurs les plus courantes.<\/p>\n<h3>1. Mauvaise s\u00e9lection d&rsquo;instantan\u00e9s<\/h3>\n<p>Si l&rsquo;\u00e9chantillonnage de param\u00e8tres manque des r\u00e9gions critiques telles que des transitions pointues, des bifurcations ou des r\u00e9sonances, la base r\u00e9duite ne capturera pas la physique importante.<\/p>\n<p>Corrigez cela avec un \u00e9chantillonnage adaptatif. Les m\u00e9thodes de base r\u00e9duites gourmandes le font naturellement en recherchant des points de param\u00e8tres o\u00f9 l&rsquo;erreur estim\u00e9e est la plus importante. Pour POD, utilisez un \u00e9chantillonnage dense ou al\u00e9atoire dans les r\u00e9gions o\u00f9 les solutions changent rapidement.<\/p>\n<h3>2. Sur-troncature ou sous-troncature<\/h3>\n<p>Si vous gardez trop peu de modes, la ROM rate une physique importante. Si vous en gardez trop, le mod\u00e8le perd une grande partie de son avantage de calcul.<\/p>\n<p>Utilisez une tol\u00e9rance d&rsquo;erreur cible au lieu d&rsquo;un nombre de modes fixes. Laissez la troncature de guide li\u00e9e aux erreurs, puis v\u00e9rifiez que l&rsquo;ajout de vecteurs de base ne modifie pas sensiblement les r\u00e9sultats.<\/p>\n<h3>3. Instabilit\u00e9 des probl\u00e8mes domin\u00e9s par la convection<\/h3>\n<p>Les ROM POD-Galerkin peuvent devenir instables pour les syst\u00e8mes domin\u00e9s par l&rsquo;advection ou non lin\u00e9aires. Les modes tronqu\u00e9s peuvent ne pas dissiper correctement l&rsquo;\u00e9nergie.<\/p>\n<p>Les correctifs possibles incluent :<\/p>\n<ul>\n<li>Utilisez des m\u00e9thodes de stabilisation, telles que la stabilisation de supremizer pour les flux incompressibles ou la viscosit\u00e9 artificielle pour l&rsquo;advection.<\/li>\n<li>Envisagez des m\u00e9thodes de ROM non lin\u00e9aires ou des approches d&rsquo;interpolation empiriques.<\/li>\n<li>Pr\u00e9f\u00e9rez les m\u00e9thodes de base r\u00e9duites gourmandes pour les probl\u00e8mes coercitifs o\u00f9 la stabilit\u00e9 est mieux ma\u00eetris\u00e9e.<\/li>\n<\/ul>\n<h3>4. Ignorer la structure de non-lin\u00e9arit\u00e9<\/h3>\n<p>Si la PDE a des termes non lin\u00e9aires qui ne se d\u00e9composent pas, la phase en ligne peut ne pas \u00eatre rapide. Le mod\u00e8le r\u00e9duit peut encore avoir besoin d&rsquo;\u00e9valuer l&rsquo;op\u00e9rateur non lin\u00e9aire complet \u00e0 haute r\u00e9solution.<\/p>\n<p>Utilisez des m\u00e9thodes d&rsquo;interpolation empiriques ou des m\u00e9thodes d&rsquo;interpolation empiriques discr\u00e8tes pour approximer les termes non lin\u00e9aires \u00e0 des points d&rsquo;interpolation clairsem\u00e9s. Vous pouvez \u00e9galement reformuler le probl\u00e8me afin que les termes non lin\u00e9aires ou d\u00e9pendant des param\u00e8tres entrent plus facilement.<\/p>\n<h3>5. Pollution de l&rsquo;\u00e9tat initial<\/h3>\n<p>La projection directe d&rsquo;une condition initiale d&rsquo;ordre complet dans l&rsquo;espace r\u00e9duit peut cr\u00e9er des oscillations parasites car la condition initiale peut vivre dans un espace de dimension plus \u00e9lev\u00e9 que la ROM ne peut repr\u00e9senter.<\/p>\n<p>Pour les probl\u00e8mes d\u00e9pendant du temps, initialisez soigneusement. Utilisez la projection des moindres carr\u00e9s ou un \u00e9tat initial r\u00e9duit filtr\u00e9 en cas de besoin.<\/p>\n<h3>6. Oublier de valider contre le FOM<\/h3>\n<p>Une ROM ne doit pas \u00eatre digne de confiance aveugl\u00e9ment, en particulier pour les combinaisons de param\u00e8tres \u00e9loign\u00e9es de la r\u00e9gion d&rsquo;entra\u00eenement.<\/p>\n<p>Toujours valider les pr\u00e9dictions de la ROM par rapport au mod\u00e8le de commande complet \u00e0 des points repr\u00e9sentatifs en dehors de l&rsquo;ensemble de formation. Surveillez les limites des erreurs et \u00e9vitez d&rsquo;extrapoler au-del\u00e0 de la plage de param\u00e8tres \u00e9chantillonn\u00e9e.<\/p>\n<h2>Int\u00e9gration avec Fenics : un v\u00e9ritable flux de travail<\/h2>\n<p>Pymor a \u00e9t\u00e9 con\u00e7u pour travailler aux c\u00f4t\u00e9s de Fenics et FenicsX. Cela permet aux chercheurs de r\u00e9duire les mod\u00e8les d&rsquo;\u00e9l\u00e9ments finis existants sans r\u00e9\u00e9crire le solveur complet.<\/p>\n<pre><code class=\"language-python\"># Assuming you already have a FEniCS FOM model\nfrom pymor.bindings.fenics import from_fenics_model\nfrom pymor.reductors import SRReductor, BoBYmaReductor\n\n# Convert FEniCS model to pyMOR model\nfom = from_fenics_model(fenics_model)\n\n# Choose a reductor based on your problem type\n# For parametric stationary problems:\nreductor = CoerciveRBReductor(fom, product=fom.H1_0_product)\n\n# For time-dependent problems:\nreductor = SRReductor(fom)\n\n# Build the ROM\nrom = reductor.reduce(max_extensions=10)\n<\/code><\/pre>\n<p>La fonction <code>from_fenics_model<\/code> pr\u00e9serve la structure de l&rsquo;op\u00e9rateur et permet \u00e0 Pymor d&rsquo;utiliser l&rsquo;assemblage de Fenics en interne. Le mod\u00e8le de commande compl\u00e8te reste en grande partie tel qu&rsquo;il est, tandis que Pymor l&rsquo;enveloppe pour la r\u00e9duction.<\/p>\n<p>Pour les utilisateurs de FENICSX, Pymor fournit des liaisons mises \u00e0 jour via <code>pymor.bindings.fenicsx<\/code>.<\/p>\n<h2>Estimation des erreurs&nbsp;: savoir quand votre ROM est digne de confiance<\/h2>\n<p>L&rsquo;une des forces de Pymor est l&rsquo;estimation des erreurs certifi\u00e9es pour les classes de probl\u00e8mes appropri\u00e9es. Pour les probl\u00e8mes coercitifs, tels que de nombreux PDE elliptiques avec des op\u00e9rateurs positifs, l&rsquo;erreur dans la norme \u00e9nerg\u00e9tique peut \u00eatre limit\u00e9e par :<\/p>\n<p>|E| \u2264 1 \/ \u03b3 \u00d7 ||R||*<\/p>\n<p>Ici, \u03b3 est la constante de coercivit\u00e9, et ||r||* est la double norme du r\u00e9sidu. Cette borne peut \u00eatre calcul\u00e9e pendant la phase en ligne car l&rsquo;op\u00e9rateur a \u00e9t\u00e9 pr\u00e9-calcul\u00e9 dans la phase hors ligne.<\/p>\n<p><code>CoerciveRBReductor<\/code> de Pymor peut calculer ces limites automatiquement. Au cours de la s\u00e9lection gourmande, il \u00e9value la limite d&rsquo;erreur aux param\u00e8tres candidats et s\u00e9lectionne celle avec l&rsquo;erreur estim\u00e9e la plus \u00e9lev\u00e9e.<\/p>\n<p>Cela compte parce que les simulations scientifiques ont besoin non seulement de r\u00e9ponses, mais aussi de marges d&rsquo;erreur. Sans estimations d&rsquo;erreurs, il est difficile de savoir si une ROM est fiable pour l&rsquo;optimisation, la quantification de l&rsquo;incertitude ou les d\u00e9cisions de conception.<\/p>\n<h2>Performances&nbsp;: \u00e0 quel point la ROM est-elle plus rapide&nbsp;?<\/h2>\n<p>L&rsquo;acc\u00e9l\u00e9ration d\u00e9pend du type de probl\u00e8me, mais les gains typiques peuvent \u00eatre importants.<\/p>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Type de probl\u00e8me<\/th>\n<th>Format de forme<\/th>\n<th>Taille de la ROM<\/th>\n<th>acc\u00e9l\u00e9ration<\/th>\n<\/tr>\n<tr>\n<td>Bloc thermique en 2D<\/td>\n<td>10\u2074 degr\u00e9s de libert\u00e9<\/td>\n<td>5 \u00e0 10 degr\u00e9s de libert\u00e9<\/td>\n<td>100\u20131000\u00d7<\/td>\n<\/tr>\n<tr>\n<td>\u00c9quation de chaleur en 3D<\/td>\n<td>10\u2076degr\u00e9s de libert\u00e9<\/td>\n<td>20 \u00e0 50 degr\u00e9s de libert\u00e9<\/td>\n<td>10\u2074\u201310\u2075\u00d7<\/td>\n<\/tr>\n<tr>\n<td>\u00c9lasticit\u00e9 lin\u00e9aire<\/td>\n<td>10\u2075 degr\u00e9s de libert\u00e9<\/td>\n<td>15 \u00e0 30 degr\u00e9s de libert\u00e9<\/td>\n<td>10\u00b3\u201310\u2074\u00d7<\/td>\n<\/tr>\n<tr>\n<td>Navier-Stokes lin\u00e9aris\u00e9<\/td>\n<td>10\u2076degr\u00e9s de libert\u00e9<\/td>\n<td>50 \u00e0 100 degr\u00e9s de libert\u00e9<\/td>\n<td>10\u2074\u201310\u2075\u00d7<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>L&rsquo;acc\u00e9l\u00e9ration exacte d\u00e9pend de plusieurs facteurs :<\/p>\n<ul>\n<li>Nombre de modes r\u00e9duits retenus.<\/li>\n<li>La complexit\u00e9 de l&rsquo;\u00e9valuation des param\u00e8tres.<\/li>\n<li>Si le probl\u00e8me a une structure affine ou non-affine.<\/li>\n<li>Que la ROM soit stationnaire ou d\u00e9pendante du temps.<\/li>\n<\/ul>\n<p>Pour de nombreux probl\u00e8mes scientifiques, des tailles de base, m\u00eame modestes, peuvent g\u00e9n\u00e9rer des acc\u00e9l\u00e9rations de centaines \u00e0 des milliers de fois par rapport au mod\u00e8le de commande complet.<\/p>\n<h2>Mise en route : votre premier projet ROM<\/h2>\n<p>Si vous d\u00e9butez dans la ROM, utilisez ce chemin&nbsp;:<\/p>\n<ol>\n<li>Commencez par le didacticiel sur le bloc thermique de Pymor. Il exerce le flux de travail complet hors ligne.<\/li>\n<li>Lisez le didacticiel de projection pour comprendre la projection de Galerkin, la d\u00e9composition en ligne et l&rsquo;utilisation des r\u00e9ducteurs.<\/li>\n<li>Essayez d&rsquo;abord un mod\u00e8le de commande complet simple avec la discr\u00e9tisation Pure Python de Pymor.<\/li>\n<li>Passez \u00e0 l&rsquo;int\u00e9gration de Fenics une fois que vous comprenez la m\u00e9canique.<\/li>\n<li>Validez la ROM par rapport au mod\u00e8le de commande compl\u00e8te \u00e0 plusieurs points de param\u00e8tres.<\/li>\n<li>Utilisez la ROM valid\u00e9e pour les balayages de param\u00e8tres, l&rsquo;optimisation ou des flux de travail plus importants.<\/li>\n<\/ol>\n<h2>Un cadre de d\u00e9cision pratique<\/h2>\n<p>Utilisez ce cadre pour d\u00e9cider si la ROM vaut le co\u00fbt d&rsquo;installation.<\/p>\n<ol>\n<li>Avez-vous besoin de nombreuses simulations ? Si vous avez besoin de moins de 10 \u00e9valuations, le co\u00fbt de configuration de la ROM peut ne pas \u00eatre justifi\u00e9.<\/li>\n<li>Le probl\u00e8me a-t-il des param\u00e8tres ? La ROM est plus efficace pour les probl\u00e8mes param\u00e9triques.<\/li>\n<li>Le probl\u00e8me a-t-il un bon estimateur d&rsquo;erreurs&nbsp;? Sans une borne d&rsquo;erreur fiable, la pr\u00e9cision est plus difficile \u00e0 certifier.<\/li>\n<li>\u00cates-vous \u00e0 l&rsquo;aise avec Python et NumPy ? Pymor est natif de Python et s&rsquo;inscrit naturellement dans l&rsquo;\u00e9cosyst\u00e8me scientifique de Python.<\/li>\n<li>Avez-vous un code FEM existant&nbsp;? Si vous utilisez d\u00e9j\u00e0 FENICS ou DEAL.II, Pymor peut envelopper des mod\u00e8les existants sans modifications majeures du solveur.<\/li>\n<\/ol>\n<p>Recommandation&nbsp;: si vous ex\u00e9cutez des balayages de param\u00e8tres ou une optimisation avec un solveur PDE, commencez par le didacticiel sur le bloc thermique et adaptez le flux de travail \u00e0 votre probl\u00e8me.<\/p>\n<h2>Guides connexes<\/h2>\n<ul>\n<li><a href=\"\/from-equations-to-simulations-the-modeling-pipeline\/\">Des \u00e9quations aux simulations&nbsp;: le pipeline de mod\u00e9lisation<\/a> &#8211; Comprendre o\u00f9 ROM s&rsquo;inscrit dans le flux de travail complet.<\/li>\n<li><a href=\"\/machine-learning-surrogates-scientific-simulations\/\">substatives d&rsquo;apprentissage automatique pour les simulations scientifiques<\/a> \u2014 Comparez les ROM avec les substituts d&rsquo;apprentissage automatique.<\/li>\n<li><a href=\"\/managing-large-scale-pde-problems-strategies-solvers-and-hpc-case-studies\/\">Gestion des probl\u00e8mes de PDE \u00e0 grande \u00e9chelle<\/a> &#8211; Contexte sur lorsque les simulations deviennent trop ch\u00e8res.<\/li>\n<li><a href=\"\/finite-volume-method-explained-simply\/\">M\u00e9thode de volume fini expliqu\u00e9e simplement<\/a> \u2014 Concepts num\u00e9riques de base.<\/li>\n<\/ul>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>La mod\u00e9lisation d&rsquo;ordres r\u00e9duits transforme les simulations co\u00fbteuses de PDE en substituts l\u00e9gers qui produisent des r\u00e9sultats rapidement. Pymor rend ce flux de travail accessible en faisant abstraction de la d\u00e9composition en ligne hors ligne, de la g\u00e9n\u00e9ration de base et de la fourniture d&rsquo;une estimation des erreurs pour les probl\u00e8mes appropri\u00e9s.<\/p>\n<p>L&rsquo;id\u00e9e cl\u00e9 est que la ROM ne remplace pas le mod\u00e8le haute fid\u00e9lit\u00e9. Il en apprend. Vous r\u00e9solvez le mod\u00e8le co\u00fbteux \u00e0 des points s\u00e9lectionn\u00e9s, extrayez un comportement dominant, puis \u00e9valuez le mod\u00e8le r\u00e9duit pour de nouveaux param\u00e8tres.<\/p>\n<p>Pour les \u00e9tudes param\u00e9triques, les boucles d&rsquo;optimisation et l&rsquo;analyse en temps r\u00e9el, ce mod\u00e8le peut \u00eatre transformateur.<\/p>\n<p>Si vous construisez des simulations scientifiques qui ont besoin de vitesse sans perdre de pr\u00e9cision, Pymor vaut la peine d&rsquo;\u00eatre envisag\u00e9. Commencez par le probl\u00e8me du bloc thermique, validez la ROM par rapport au mod\u00e8le de commande complet, puis adaptez le flux de travail \u00e0 votre physique r\u00e9elle.<\/p>\n<h2>Prochaines \u00e9tapes<\/h2>\n<ol>\n<li>Installez Pymor avec <code>pip install pymor<\/code>.<\/li>\n<li>Ex\u00e9cutez le tutoriel sur le bloc thermique.<\/li>\n<li>Enveloppez un mod\u00e8le Fenics existant.<\/li>\n<li>Balayez les param\u00e8tres et comparez les r\u00e9sultats de la ROM avec les r\u00e9sultats du mod\u00e8le de commande compl\u00e8te.<\/li>\n<li>Int\u00e9grez la ROM dans votre flux de travail plus important.<\/li>\n<\/ol>\n","protected":false,"raw":"<p>La mod\u00e9lisation d'ordres r\u00e9duits est l'un des moyens les plus pratiques d'acc\u00e9l\u00e9rer les simulations scientifiques sans sacrifier la fid\u00e9lit\u00e9 physique n\u00e9cessaire \u00e0 des r\u00e9sultats cr\u00e9dibles. Au lieu de r\u00e9soudre des millions d'\u00e9quations \u00e0 chaque fois qu'un param\u00e8tre change, ROM extrait le comportement dominant d'un mod\u00e8le haute fid\u00e9lit\u00e9 dans un substitut l\u00e9ger qui peut fournir des r\u00e9ponses en quelques secondes, voire en millisecondes.<\/p>\n<p>Ce guide explique ce que signifie la mod\u00e9lisation d'ordre r\u00e9duit dans la pratique, pourquoi les scientifiques l'utilisent et comment Pymor rend le flux de travail accessible aux chercheurs qui ne sont pas des sp\u00e9cialistes des m\u00e9thodes num\u00e9riques. Il couvre le mod\u00e8le de d\u00e9composition en ligne hors ligne, l'architecture Pymor, les exemples de code pratiques et les \u00e9cueils courants.<\/p>\n<h2>Points \u00e0 retenir cl\u00e9s<\/h2>\n<ul>\n<li>La ROM r\u00e9sout un probl\u00e8me central&nbsp;: les simulations co\u00fbteuses sont trop lentes pour les balayages de param\u00e8tres, l'optimisation, l'analyse en temps r\u00e9el ou la quantification de l'incertitude.<\/li>\n<li>Pymor est con\u00e7u sp\u00e9cifiquement pour la r\u00e9duction des commandes de mod\u00e8les dans Python, avec la prise en charge de Fenics, Deal.II et Pure Python.<\/li>\n<li>Le mod\u00e8le de ROM de base est d\u00e9composition en ligne hors ligne : pr\u00e9-calcul co\u00fbteux une fois, \u00e9valuation rapide \u00e0 plusieurs reprises.<\/li>\n<li>La ROM n'est pas une solution miracle. La troncature, la stabilit\u00e9 et la qualit\u00e9 de l'instantan\u00e9 d\u00e9terminent si le mod\u00e8le r\u00e9duit est utilisable.<\/li>\n<li>Pymor g\u00e8re des parties difficiles du flux de travail, notamment la g\u00e9n\u00e9ration de base gloutissante, l'estimation d'erreur a posteriori et la composition de l'op\u00e9rateur.<\/li>\n<\/ul>\n<h2>Pourquoi les scientifiques ont besoin de mod\u00e8les de commandes r\u00e9duites<\/h2>\n<p>Chaque simulation de calcul commence avec un mod\u00e8le haute fid\u00e9lit\u00e9, souvent appel\u00e9 mod\u00e8le de commande complet ou FOM. Ces mod\u00e8les sont pr\u00e9cis et physiquement dignes de confiance, mais ils sont \u00e9galement co\u00fbteux. Une seule ex\u00e9cution peut prendre des heures ou des jours, et les flux de travail de recherche n\u00e9cessitent souvent de nombreuses ex\u00e9cutions pour les balayages de param\u00e8tres, l'optimisation ou la propagation de l'incertitude.<\/p>\n<p>La mod\u00e9lisation d'ordres r\u00e9duits r\u00e9sout ce probl\u00e8me. Au lieu de r\u00e9soudre le syst\u00e8me complet \u00e0 plusieurs reprises, vous :<\/p>\n<ol>\n<li>Ex\u00e9cutez le mod\u00e8le de haute fid\u00e9lit\u00e9 \u00e0 des points de param\u00e8tre repr\u00e9sentatifs pendant la phase hors ligne.<\/li>\n<li>Extraire le comportement dominant dans une base r\u00e9duite \u00e0 l'aide de m\u00e9thodes telles que la d\u00e9composition orthogonale appropri\u00e9e ou la g\u00e9n\u00e9ration de base r\u00e9duite gourmande.<\/li>\n<li>Projetez le syst\u00e8me sur cette base pour produire un probl\u00e8me d'alg\u00e8bre lin\u00e9aire plus petit.<\/li>\n<li>\u00c9valuez rapidement le mod\u00e8le r\u00e9duit pour de nouveaux param\u00e8tres pendant la phase en ligne.<\/li>\n<\/ol>\n<p>La phase hors ligne s'ex\u00e9cute une fois. La phase en ligne s'ex\u00e9cute \u00e0 chaque fois qu'un r\u00e9sultat est n\u00e9cessaire. Pour les probl\u00e8mes param\u00e9triques avec des dizaines ou des centaines de combinaisons de param\u00e8tres, cela peut transformer un flux de travail qui prend des semaines en un flux qui prend quelques minutes.<\/p>\n<h3>Quand la ROM en vaut la peine<\/h3>\n<ul>\n<li>Simulation en temps r\u00e9el, y compris les jumeaux num\u00e9riques, les syst\u00e8mes de contr\u00f4le et les outils de conception interactifs.<\/li>\n<li>Optimisation de la conception avec de nombreuses \u00e9valuations de conception.<\/li>\n<li>Quantification de l'incertitude o\u00f9 les m\u00e9thodes de Monte Carlo ou du chaos polynomial n\u00e9cessitent de nombreuses \u00e9valuations de mod\u00e8les.<\/li>\n<li>Couplage multiphysique o\u00f9 chaque sous-mod\u00e8le b\u00e9n\u00e9ficie d'une interface plus rapide.<\/li>\n<\/ul>\n<h3>Quand la ROM n'est pas le bon outil<\/h3>\n<ul>\n<li>Analyse en un seul point sans besoin de balayages de param\u00e8tres.<\/li>\n<li>Probl\u00e8mes sans structure param\u00e9trique.<\/li>\n<li>Des ph\u00e9nom\u00e8nes tr\u00e8s localis\u00e9s, tels que les ondes de choc ou les transitions de phase, qui ne sont pas bien captur\u00e9s par des bases globales r\u00e9duites.<\/li>\n<\/ul>\n<h2>Comment fonctionne la ROM&nbsp;: les phases hors ligne et en ligne<\/h2>\n<p>Le c\u0153ur de la ROM est la d\u00e9composition en ligne hors ligne. C'est le mod\u00e8le structurel qui rend l'approche utile.<\/p>\n<h3>La phase hors connexion<\/h3>\n<p>Pendant la phase hors connexion, vous r\u00e9solvez le mod\u00e8le de commande complet \u00e0 des points de param\u00e8tre repr\u00e9sentatifs. Ces solutions s'appellent des instantan\u00e9s. Ils capturent la vari\u00e9t\u00e9 de solutions, c'est-\u00e0-dire l'ensemble des formes de solutions possibles dans l'espace des param\u00e8tres.<\/p>\n<p>Trois \u00e9tapes cl\u00e9s se produisent pendant la phase hors connexion :<\/p>\n<ol>\n<li>Collection d'instantan\u00e9s. Ex\u00e9cutez le mod\u00e8le d'ordre complet \u00e0 des points de param\u00e8tre qui s'\u00e9tendent sur l'espace d'int\u00e9r\u00eat. Le choix des points est important.<\/li>\n<li>g\u00e9n\u00e9ration de base. Extrayez un sous-espace de faible dimension qui se rapproche de la vari\u00e9t\u00e9 de la solution.<\/li>\n<li>pr\u00e9-calcul. Projetez les op\u00e9rateurs de commandes compl\u00e8tes sur la base r\u00e9duite et mettez en cache les petites matrices r\u00e9sultantes.<\/li>\n<\/ol>\n<p>Les m\u00e9thodes de g\u00e9n\u00e9ration de base commune comprennent :<\/p>\n<ul>\n<li>D\u00e9composition orthogonale appropri\u00e9e, qui trouve les directions les plus \u00e9nerg\u00e9tiques dans l'espace des instantan\u00e9s.<\/li>\n<li>Gourmande r\u00e9duite G\u00e9n\u00e9ration de base, qui s\u00e9lectionne les points de param\u00e8tres o\u00f9 l'erreur estim\u00e9e est la plus importante.<\/li>\n<\/ul>\n<p>Le pr\u00e9-calcul est l'infrastructure critique. Une fois que le syst\u00e8me r\u00e9duit est assembl\u00e9, il peut \u00eatre \u00e9valu\u00e9 sans toucher \u00e0 plusieurs reprises le maillage d'origine ou les op\u00e9rateurs de commandes complets.<\/p>\n<h3>La phase en ligne<\/h3>\n<p>Lorsque vous avez besoin d'un r\u00e9sultat pour un nouveau point de param\u00e8tre, le mod\u00e8le r\u00e9duit r\u00e9sout un probl\u00e8me beaucoup plus petit. Cela signifie souvent des centaines ou des milliers d'inconnus au lieu de millions.<\/p>\n<p>La phase en ligne suit g\u00e9n\u00e9ralement cette s\u00e9quence :<\/p>\n<ol>\n<li>Construisez ou \u00e9valuez le syst\u00e8me r\u00e9duit pour le nouveau param\u00e8tre.<\/li>\n<li>R\u00e9soudre le probl\u00e8me r\u00e9duit d'alg\u00e8bre lin\u00e9aire.<\/li>\n<li>Estimez \u00e9ventuellement l'erreur avec une borne a posteriori.<\/li>\n<\/ol>\n<p>Le r\u00e9sultat est une solution dans l'espace r\u00e9duit. Vous pouvez reconstruire la solution de commande compl\u00e8te en cas de besoin, bien que les variables r\u00e9duites soient souvent suffisantes pour l'analyse.<\/p>\n<h2>Pymor : architecture et design<\/h2>\n<p>Pymor est une biblioth\u00e8que Python open-source con\u00e7ue sp\u00e9cifiquement pour la r\u00e9duction des commandes de mod\u00e8les. Contrairement aux packages Scientific Python \u00e0 usage g\u00e9n\u00e9ral, Pymor est construit autour du workflow ROM.<\/p>\n<p>La biblioth\u00e8que est utile car elle relie des m\u00e9thodes num\u00e9riques, la g\u00e9n\u00e9ration de base, l'estimation des erreurs et l'int\u00e9gration du backend dans un cadre de r\u00e9duction de mod\u00e8le.<\/p>\n<h3>Ce que Pymor g\u00e8re<\/h3>\n<ul>\n<li>backends discr\u00e9tis\u00e9s. Pymor peut fonctionner avec les discr\u00e9tisations Fenics, FenicsX, Deal.II et Python Pure.<\/li>\n<li>g\u00e9n\u00e9ration de base. Des algorithmes gourmands, une r\u00e9duction bas\u00e9e sur les pods et une troncature \u00e9quilibr\u00e9e sont impl\u00e9ment\u00e9es.<\/li>\n<li>D\u00e9composition hors ligne en ligne. Pymor g\u00e8re la d\u00e9composition affine des op\u00e9rateurs lorsque la structure du probl\u00e8me le permet.<\/li>\n<li>Estimation des erreurs. Les estimateurs d'erreur a posteriori aident \u00e0 certifier la pr\u00e9cision pour les classes de probl\u00e8mes appropri\u00e9es.<\/li>\n<li>Composition du mod\u00e8le. Le framework op\u00e9rateur de Pymor permet de construire des mod\u00e8les complexes \u00e0 partir de composants plus simples.<\/li>\n<\/ul>\n<h3>Un exemple de code Pymor rapide<\/h3>\n<p>Le probl\u00e8me du bloc thermique est un point de d\u00e9part commun. Il s'agit d'une \u00e9quation de chaleur param\u00e9trique o\u00f9 la conductivit\u00e9 varie selon les sous-domaines.<\/p>\n<pre><code class=\"language-python\">from pymor.discretizations.cg import discretize_stationary_cg\nfrom pymor.operators.constructions import LincombOperator\nfrom pymor.analyticalproblems.thermalblock import thermal_block_problem\nfrom pymor.reductors.coercive import CoerciveRBReductor\n\n# 1. Define the problem: thermal block with 4 subdomains,\n# each with a tunable conductivity parameter\nproblem = thermal_block_problem(num_blocks=(2, 2))\n\n# 2. Discretize with continuous Galerkin FEM\nfom, (x, y) = discretize_stationary_cg(problem, diameter=0.05)\n\n# 3. Build a Reduced Basis via greedy algorithm\n# The CoerciveRBReductor uses energy-norm error estimates\nreductor = CoerciveRBReductor(fom, product=fom.H1_0_product)\nrom = reductor.reduce(\n    max_extensions=8,\n    error_thresh=1e-3,\n    error_evals=100\n)\n\n# 4. Evaluate for a new parameter point\nmu = fom.parameters.parse([0.1, 1.0, 0.5, 2.0])\nu_rom = rom.solve(mu)\n<\/code><\/pre>\n<p>Cet exemple montre le mod\u00e8le principal. Pymor g\u00e8re la configuration du probl\u00e8me, la discr\u00e9tisation, la s\u00e9lection gourmande, la g\u00e9n\u00e9ration de base et l'\u00e9valuation r\u00e9duite du mod\u00e8le. Vous n'avez pas besoin d'assembler manuellement des matrices, de construire la base ou de calculer vous-m\u00eame des limites d'erreur.<\/p>\n<h2>Le probl\u00e8me du bloc thermique&nbsp;: une proc\u00e9dure pas \u00e0 pas travaill\u00e9e<\/h2>\n<p>Le probl\u00e8me du bloc thermique est le didacticiel canonique de Pymor car il est physiquement intuitif et math\u00e9matiquement propre.<\/p>\n<h3>D\u00e9finition du probl\u00e8me<\/h3>\n<p>Imaginez un domaine rectangulaire divis\u00e9 en quatre sous-domaines rectangulaires dans une grille 2\u00d72. Chaque sous-domaine a un param\u00e8tre de conductivit\u00e9 thermique uniforme \u03bc\u1d62. L'\u00e9quation r\u00e9gissante est :<\/p>\n<p>-\u2207 \u00b7 (\u03bc\u1d62 \u2207U) = F dans chaque sous-domaine<\/p>\n<p>Les param\u00e8tres \u03bc\u2081, \u03bc\u2082, \u03bc\u2083 et \u03bc\u2084 varient selon les simulations.<\/p>\n<h3>Pourquoi ce probl\u00e8me est utile<\/h3>\n<ol>\n<li>Les param\u00e8tres entrent affinement. Le coefficient \u03bc\u1d62 multiplie l'op\u00e9rateur de gradient lin\u00e9airement, ce qui prend en charge la d\u00e9composition en ligne.<\/li>\n<li>L'espace r\u00e9duit peut \u00eatre tr\u00e8s petit. M\u00eame avec un maillage fin, une base r\u00e9duite de quelques modes peut suffire pour une pr\u00e9cision utile.<\/li>\n<li>La borne d'erreur est calculable pour les probl\u00e8mes coercitifs. Pymor peut estimer cela automatiquement.<\/li>\n<\/ol>\n<h3>Ce que vous pouvez faire avec<\/h3>\n<p>Une fois le mod\u00e8le r\u00e9duit construit, vous pouvez :<\/p>\n<ul>\n<li>Balayez rapidement les conductivit\u00e9s.<\/li>\n<li>Effectuer une analyse de sensibilit\u00e9.<\/li>\n<li>Int\u00e9grez la ROM dans une boucle d'optimisation.<\/li>\n<li>G\u00e9n\u00e9rez des visualisations thermiques en temps r\u00e9el.<\/li>\n<\/ul>\n<h2>M\u00e9thodes ROM : Choisir la bonne approche<\/h2>\n<p>Diff\u00e9rentes techniques de r\u00e9duction conviennent \u00e0 diff\u00e9rents types de probl\u00e8mes. La m\u00e9thode doit correspondre \u00e0 la physique et \u00e0 la structure du mod\u00e8le.<\/p>\n<h3>D\u00e9composition orthogonale appropri\u00e9e<\/h3>\n<ul>\n<li>Id\u00e9al pour les probl\u00e8mes o\u00f9 le collecteur de solution est fluide et la d\u00e9pendance aux param\u00e8tres est l\u00e9g\u00e8re.<\/li>\n<li>Cela fonctionne en collectant des instantan\u00e9s, en effectuant une d\u00e9composition de valeurs singuli\u00e8res et en conservant les modes dominants.<\/li>\n<li>Il est simple, robuste et bien compris.<\/li>\n<li>Il peut ne pas garantir la stabilit\u00e9 des probl\u00e8mes domin\u00e9s par la convection, et les limites d'erreur ne sont pas toujours certifi\u00e9es.<\/li>\n<\/ul>\n<h3>Base gourmande r\u00e9duite<\/h3>\n<ul>\n<li>Id\u00e9al pour les probl\u00e8mes param\u00e9triques o\u00f9 un estimateur d'erreurs r\u00e9siduels est disponible.<\/li>\n<li>Cela fonctionne en s\u00e9lectionnant des points de param\u00e8tres qui maximisent l'erreur estim\u00e9e et la construction de la base de mani\u00e8re progressive.<\/li>\n<li>Il peut fournir des limites d'erreur certifi\u00e9es et s'adapter \u00e0 la structure du probl\u00e8me.<\/li>\n<li>Cela n\u00e9cessite un bon estimateur d'erreurs et la s\u00e9lection gourmande peut manquer certaines r\u00e9gions de l'espace des param\u00e8tres.<\/li>\n<\/ul>\n<h3>troncature \u00e9quilibr\u00e9e<\/h3>\n<ul>\n<li>Id\u00e9al pour les syst\u00e8mes lin\u00e9aires invariants dans le temps et les probl\u00e8mes orient\u00e9s contr\u00f4le.<\/li>\n<li>Il r\u00e9duit le syst\u00e8me tout en pr\u00e9servant la stabilit\u00e9 et les valeurs dominantes de Hankel.<\/li>\n<li>Il peut pr\u00e9server les propri\u00e9t\u00e9s de contr\u00f4labilit\u00e9 et d'observabilit\u00e9.<\/li>\n<li>Il est limit\u00e9 \u00e0 des classes de syst\u00e8mes appropri\u00e9es et peut n\u00e9cessiter des solveurs sp\u00e9cialis\u00e9s.<\/li>\n<\/ul>\n<h3>M\u00e9thodes d'interpolation empiriques<\/h3>\n<ul>\n<li>Id\u00e9al pour la d\u00e9pendance aux param\u00e8tres non-affiniques o\u00f9 les param\u00e8tres n'entrent pas de mani\u00e8re lin\u00e9aire.<\/li>\n<li>Ils se rapprochent des termes non affines par interpolation \u00e0 des points s\u00e9lectionn\u00e9s.<\/li>\n<li>Ils \u00e9tendent la ROM \u00e0 des probl\u00e8mes plus complexes.<\/li>\n<li>Ils ajoutent de la complexit\u00e9 et n\u00e9cessitent une s\u00e9lection minutieuse des points d'interpolation.<\/li>\n<\/ul>\n<p>En r\u00e8gle g\u00e9n\u00e9rale, commencez par une base r\u00e9duite gourmande si vous avez un probl\u00e8me coercitif avec les param\u00e8tres affine. Utilisez POD lorsque vous souhaitez une d\u00e9pendance des param\u00e8tres simplicit\u00e9 et harmonieuse. Utilisez une troncature \u00e9quilibr\u00e9e pour les probl\u00e8mes de contr\u00f4le lin\u00e9aires invariants dans le temps.<\/p>\n<h2>erreurs courantes et comment les \u00e9viter<\/h2>\n<p>M\u00eame avec une biblioth\u00e8que telle que Pymor, la mod\u00e9lisation d'ordre r\u00e9duit peut \u00eatre fragile. Ce sont les erreurs les plus courantes.<\/p>\n<h3>1. Mauvaise s\u00e9lection d'instantan\u00e9s<\/h3>\n<p>Si l'\u00e9chantillonnage de param\u00e8tres manque des r\u00e9gions critiques telles que des transitions pointues, des bifurcations ou des r\u00e9sonances, la base r\u00e9duite ne capturera pas la physique importante.<\/p>\n<p>Corrigez cela avec un \u00e9chantillonnage adaptatif. Les m\u00e9thodes de base r\u00e9duites gourmandes le font naturellement en recherchant des points de param\u00e8tres o\u00f9 l'erreur estim\u00e9e est la plus importante. Pour POD, utilisez un \u00e9chantillonnage dense ou al\u00e9atoire dans les r\u00e9gions o\u00f9 les solutions changent rapidement.<\/p>\n<h3>2. Sur-troncature ou sous-troncature<\/h3>\n<p>Si vous gardez trop peu de modes, la ROM rate une physique importante. Si vous en gardez trop, le mod\u00e8le perd une grande partie de son avantage de calcul.<\/p>\n<p>Utilisez une tol\u00e9rance d'erreur cible au lieu d'un nombre de modes fixes. Laissez la troncature de guide li\u00e9e aux erreurs, puis v\u00e9rifiez que l'ajout de vecteurs de base ne modifie pas sensiblement les r\u00e9sultats.<\/p>\n<h3>3. Instabilit\u00e9 des probl\u00e8mes domin\u00e9s par la convection<\/h3>\n<p>Les ROM POD-Galerkin peuvent devenir instables pour les syst\u00e8mes domin\u00e9s par l'advection ou non lin\u00e9aires. Les modes tronqu\u00e9s peuvent ne pas dissiper correctement l'\u00e9nergie.<\/p>\n<p>Les correctifs possibles incluent :<\/p>\n<ul>\n<li>Utilisez des m\u00e9thodes de stabilisation, telles que la stabilisation de supremizer pour les flux incompressibles ou la viscosit\u00e9 artificielle pour l'advection.<\/li>\n<li>Envisagez des m\u00e9thodes de ROM non lin\u00e9aires ou des approches d'interpolation empiriques.<\/li>\n<li>Pr\u00e9f\u00e9rez les m\u00e9thodes de base r\u00e9duites gourmandes pour les probl\u00e8mes coercitifs o\u00f9 la stabilit\u00e9 est mieux ma\u00eetris\u00e9e.<\/li>\n<\/ul>\n<h3>4. Ignorer la structure de non-lin\u00e9arit\u00e9<\/h3>\n<p>Si la PDE a des termes non lin\u00e9aires qui ne se d\u00e9composent pas, la phase en ligne peut ne pas \u00eatre rapide. Le mod\u00e8le r\u00e9duit peut encore avoir besoin d'\u00e9valuer l'op\u00e9rateur non lin\u00e9aire complet \u00e0 haute r\u00e9solution.<\/p>\n<p>Utilisez des m\u00e9thodes d'interpolation empiriques ou des m\u00e9thodes d'interpolation empiriques discr\u00e8tes pour approximer les termes non lin\u00e9aires \u00e0 des points d'interpolation clairsem\u00e9s. Vous pouvez \u00e9galement reformuler le probl\u00e8me afin que les termes non lin\u00e9aires ou d\u00e9pendant des param\u00e8tres entrent plus facilement.<\/p>\n<h3>5. Pollution de l'\u00e9tat initial<\/h3>\n<p>La projection directe d'une condition initiale d'ordre complet dans l'espace r\u00e9duit peut cr\u00e9er des oscillations parasites car la condition initiale peut vivre dans un espace de dimension plus \u00e9lev\u00e9 que la ROM ne peut repr\u00e9senter.<\/p>\n<p>Pour les probl\u00e8mes d\u00e9pendant du temps, initialisez soigneusement. Utilisez la projection des moindres carr\u00e9s ou un \u00e9tat initial r\u00e9duit filtr\u00e9 en cas de besoin.<\/p>\n<h3>6. Oublier de valider contre le FOM<\/h3>\n<p>Une ROM ne doit pas \u00eatre digne de confiance aveugl\u00e9ment, en particulier pour les combinaisons de param\u00e8tres \u00e9loign\u00e9es de la r\u00e9gion d'entra\u00eenement.<\/p>\n<p>Toujours valider les pr\u00e9dictions de la ROM par rapport au mod\u00e8le de commande complet \u00e0 des points repr\u00e9sentatifs en dehors de l'ensemble de formation. Surveillez les limites des erreurs et \u00e9vitez d'extrapoler au-del\u00e0 de la plage de param\u00e8tres \u00e9chantillonn\u00e9e.<\/p>\n<h2>Int\u00e9gration avec Fenics : un v\u00e9ritable flux de travail<\/h2>\n<p>Pymor a \u00e9t\u00e9 con\u00e7u pour travailler aux c\u00f4t\u00e9s de Fenics et FenicsX. Cela permet aux chercheurs de r\u00e9duire les mod\u00e8les d'\u00e9l\u00e9ments finis existants sans r\u00e9\u00e9crire le solveur complet.<\/p>\n<pre><code class=\"language-python\"># Assuming you already have a FEniCS FOM model\nfrom pymor.bindings.fenics import from_fenics_model\nfrom pymor.reductors import SRReductor, BoBYmaReductor\n\n# Convert FEniCS model to pyMOR model\nfom = from_fenics_model(fenics_model)\n\n# Choose a reductor based on your problem type\n# For parametric stationary problems:\nreductor = CoerciveRBReductor(fom, product=fom.H1_0_product)\n\n# For time-dependent problems:\nreductor = SRReductor(fom)\n\n# Build the ROM\nrom = reductor.reduce(max_extensions=10)\n<\/code><\/pre>\n<p>La fonction <code>from_fenics_model<\/code> pr\u00e9serve la structure de l'op\u00e9rateur et permet \u00e0 Pymor d'utiliser l'assemblage de Fenics en interne. Le mod\u00e8le de commande compl\u00e8te reste en grande partie tel qu'il est, tandis que Pymor l'enveloppe pour la r\u00e9duction.<\/p>\n<p>Pour les utilisateurs de FENICSX, Pymor fournit des liaisons mises \u00e0 jour via <code>pymor.bindings.fenicsx<\/code>.<\/p>\n<h2>Estimation des erreurs&nbsp;: savoir quand votre ROM est digne de confiance<\/h2>\n<p>L'une des forces de Pymor est l'estimation des erreurs certifi\u00e9es pour les classes de probl\u00e8mes appropri\u00e9es. Pour les probl\u00e8mes coercitifs, tels que de nombreux PDE elliptiques avec des op\u00e9rateurs positifs, l'erreur dans la norme \u00e9nerg\u00e9tique peut \u00eatre limit\u00e9e par :<\/p>\n<p>|E| \u2264 1 \/ \u03b3 \u00d7 ||R||*<\/p>\n<p>Ici, \u03b3 est la constante de coercivit\u00e9, et ||r||* est la double norme du r\u00e9sidu. Cette borne peut \u00eatre calcul\u00e9e pendant la phase en ligne car l'op\u00e9rateur a \u00e9t\u00e9 pr\u00e9-calcul\u00e9 dans la phase hors ligne.<\/p>\n<p><code>CoerciveRBReductor<\/code> de Pymor peut calculer ces limites automatiquement. Au cours de la s\u00e9lection gourmande, il \u00e9value la limite d'erreur aux param\u00e8tres candidats et s\u00e9lectionne celle avec l'erreur estim\u00e9e la plus \u00e9lev\u00e9e.<\/p>\n<p>Cela compte parce que les simulations scientifiques ont besoin non seulement de r\u00e9ponses, mais aussi de marges d'erreur. Sans estimations d'erreurs, il est difficile de savoir si une ROM est fiable pour l'optimisation, la quantification de l'incertitude ou les d\u00e9cisions de conception.<\/p>\n<h2>Performances&nbsp;: \u00e0 quel point la ROM est-elle plus rapide&nbsp;?<\/h2>\n<p>L'acc\u00e9l\u00e9ration d\u00e9pend du type de probl\u00e8me, mais les gains typiques peuvent \u00eatre importants.<\/p>\n<table class=\"custom-table\">\n<tbody><tr>\n<th>Type de probl\u00e8me<\/th>\n<th>Format de forme<\/th>\n<th>Taille de la ROM<\/th>\n<th>acc\u00e9l\u00e9ration<\/th>\n<\/tr>\n<tr>\n<td>Bloc thermique en 2D<\/td>\n<td>10\u2074 degr\u00e9s de libert\u00e9<\/td>\n<td>5 \u00e0 10 degr\u00e9s de libert\u00e9<\/td>\n<td>100\u20131000\u00d7<\/td>\n<\/tr>\n<tr>\n<td>\u00c9quation de chaleur en 3D<\/td>\n<td>10\u2076degr\u00e9s de libert\u00e9<\/td>\n<td>20 \u00e0 50 degr\u00e9s de libert\u00e9<\/td>\n<td>10\u2074\u201310\u2075\u00d7<\/td>\n<\/tr>\n<tr>\n<td>\u00c9lasticit\u00e9 lin\u00e9aire<\/td>\n<td>10\u2075 degr\u00e9s de libert\u00e9<\/td>\n<td>15 \u00e0 30 degr\u00e9s de libert\u00e9<\/td>\n<td>10\u00b3\u201310\u2074\u00d7<\/td>\n<\/tr>\n<tr>\n<td>Navier-Stokes lin\u00e9aris\u00e9<\/td>\n<td>10\u2076degr\u00e9s de libert\u00e9<\/td>\n<td>50 \u00e0 100 degr\u00e9s de libert\u00e9<\/td>\n<td>10\u2074\u201310\u2075\u00d7<\/td>\n<\/tr>\n<\/tbody><\/table>\n<p>L'acc\u00e9l\u00e9ration exacte d\u00e9pend de plusieurs facteurs :<\/p>\n<ul>\n<li>Nombre de modes r\u00e9duits retenus.<\/li>\n<li>La complexit\u00e9 de l'\u00e9valuation des param\u00e8tres.<\/li>\n<li>Si le probl\u00e8me a une structure affine ou non-affine.<\/li>\n<li>Que la ROM soit stationnaire ou d\u00e9pendante du temps.<\/li>\n<\/ul>\n<p>Pour de nombreux probl\u00e8mes scientifiques, des tailles de base, m\u00eame modestes, peuvent g\u00e9n\u00e9rer des acc\u00e9l\u00e9rations de centaines \u00e0 des milliers de fois par rapport au mod\u00e8le de commande complet.<\/p>\n<h2>Mise en route : votre premier projet ROM<\/h2>\n<p>Si vous d\u00e9butez dans la ROM, utilisez ce chemin&nbsp;:<\/p>\n<ol>\n<li>Commencez par le didacticiel sur le bloc thermique de Pymor. Il exerce le flux de travail complet hors ligne.<\/li>\n<li>Lisez le didacticiel de projection pour comprendre la projection de Galerkin, la d\u00e9composition en ligne et l'utilisation des r\u00e9ducteurs.<\/li>\n<li>Essayez d'abord un mod\u00e8le de commande complet simple avec la discr\u00e9tisation Pure Python de Pymor.<\/li>\n<li>Passez \u00e0 l'int\u00e9gration de Fenics une fois que vous comprenez la m\u00e9canique.<\/li>\n<li>Validez la ROM par rapport au mod\u00e8le de commande compl\u00e8te \u00e0 plusieurs points de param\u00e8tres.<\/li>\n<li>Utilisez la ROM valid\u00e9e pour les balayages de param\u00e8tres, l'optimisation ou des flux de travail plus importants.<\/li>\n<\/ol>\n<h2>Un cadre de d\u00e9cision pratique<\/h2>\n<p>Utilisez ce cadre pour d\u00e9cider si la ROM vaut le co\u00fbt d'installation.<\/p>\n<ol>\n<li>Avez-vous besoin de nombreuses simulations ? Si vous avez besoin de moins de 10 \u00e9valuations, le co\u00fbt de configuration de la ROM peut ne pas \u00eatre justifi\u00e9.<\/li>\n<li>Le probl\u00e8me a-t-il des param\u00e8tres ? La ROM est plus efficace pour les probl\u00e8mes param\u00e9triques.<\/li>\n<li>Le probl\u00e8me a-t-il un bon estimateur d'erreurs&nbsp;? Sans une borne d'erreur fiable, la pr\u00e9cision est plus difficile \u00e0 certifier.<\/li>\n<li>\u00cates-vous \u00e0 l'aise avec Python et NumPy ? Pymor est natif de Python et s'inscrit naturellement dans l'\u00e9cosyst\u00e8me scientifique de Python.<\/li>\n<li>Avez-vous un code FEM existant&nbsp;? Si vous utilisez d\u00e9j\u00e0 FENICS ou DEAL.II, Pymor peut envelopper des mod\u00e8les existants sans modifications majeures du solveur.<\/li>\n<\/ol>\n<p>Recommandation&nbsp;: si vous ex\u00e9cutez des balayages de param\u00e8tres ou une optimisation avec un solveur PDE, commencez par le didacticiel sur le bloc thermique et adaptez le flux de travail \u00e0 votre probl\u00e8me.<\/p>\n<h2>Guides connexes<\/h2>\n<ul>\n<li><a href=\"\/from-equations-to-simulations-the-modeling-pipeline\/\">Des \u00e9quations aux simulations&nbsp;: le pipeline de mod\u00e9lisation<\/a> - Comprendre o\u00f9 ROM s'inscrit dans le flux de travail complet.<\/li>\n<li><a href=\"\/machine-learning-surrogates-scientific-simulations\/\">substatives d'apprentissage automatique pour les simulations scientifiques<\/a> \u2014 Comparez les ROM avec les substituts d'apprentissage automatique.<\/li>\n<li><a href=\"\/managing-large-scale-pde-problems-strategies-solvers-and-hpc-case-studies\/\">Gestion des probl\u00e8mes de PDE \u00e0 grande \u00e9chelle<\/a> - Contexte sur lorsque les simulations deviennent trop ch\u00e8res.<\/li>\n<li><a href=\"\/finite-volume-method-explained-simply\/\">M\u00e9thode de volume fini expliqu\u00e9e simplement<\/a> \u2014 Concepts num\u00e9riques de base.<\/li>\n<\/ul>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>La mod\u00e9lisation d'ordres r\u00e9duits transforme les simulations co\u00fbteuses de PDE en substituts l\u00e9gers qui produisent des r\u00e9sultats rapidement. Pymor rend ce flux de travail accessible en faisant abstraction de la d\u00e9composition en ligne hors ligne, de la g\u00e9n\u00e9ration de base et de la fourniture d'une estimation des erreurs pour les probl\u00e8mes appropri\u00e9s.<\/p>\n<p>L'id\u00e9e cl\u00e9 est que la ROM ne remplace pas le mod\u00e8le haute fid\u00e9lit\u00e9. Il en apprend. Vous r\u00e9solvez le mod\u00e8le co\u00fbteux \u00e0 des points s\u00e9lectionn\u00e9s, extrayez un comportement dominant, puis \u00e9valuez le mod\u00e8le r\u00e9duit pour de nouveaux param\u00e8tres.<\/p>\n<p>Pour les \u00e9tudes param\u00e9triques, les boucles d'optimisation et l'analyse en temps r\u00e9el, ce mod\u00e8le peut \u00eatre transformateur.<\/p>\n<p>Si vous construisez des simulations scientifiques qui ont besoin de vitesse sans perdre de pr\u00e9cision, Pymor vaut la peine d'\u00eatre envisag\u00e9. Commencez par le probl\u00e8me du bloc thermique, validez la ROM par rapport au mod\u00e8le de commande complet, puis adaptez le flux de travail \u00e0 votre physique r\u00e9elle.<\/p>\n<h2>Prochaines \u00e9tapes<\/h2>\n<ol>\n<li>Installez Pymor avec <code>pip install pymor<\/code>.<\/li>\n<li>Ex\u00e9cutez le tutoriel sur le bloc thermique.<\/li>\n<li>Enveloppez un mod\u00e8le Fenics existant.<\/li>\n<li>Balayez les param\u00e8tres et comparez les r\u00e9sultats de la ROM avec les r\u00e9sultats du mod\u00e8le de commande compl\u00e8te.<\/li>\n<li>Int\u00e9grez la ROM dans votre flux de travail plus important.<\/li>\n<\/ol>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>La mod\u00e9lisation d&rsquo;ordres r\u00e9duits est l&rsquo;un des moyens les plus pratiques d&rsquo;acc\u00e9l\u00e9rer les simulations scientifiques sans sacrifier la fid\u00e9lit\u00e9 physique n\u00e9cessaire \u00e0 des r\u00e9sultats cr\u00e9dibles. Au lieu de r\u00e9soudre des millions d&rsquo;\u00e9quations \u00e0 chaque fois qu&rsquo;un param\u00e8tre change, ROM extrait le comportement dominant d&rsquo;un mod\u00e8le haute fid\u00e9lit\u00e9 dans un substitut l\u00e9ger qui peut fournir des [&hellip;]<\/p>\n","protected":false,"raw":""},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"fr_FR","_original_post":"https:\/\/matforge.org\/?p=359","iawp_total_views":1,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1276","post","type-post","status-publish","format-standard","hentry","category-simulation-modeling-projects","fr-FR"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mod\u00e9lisation d&#039;ordres r\u00e9duits avec Pymor<\/title>\n<meta name=\"description\" content=\"D\u00e9couvrez comment la mod\u00e9lisation d&#039;ordre r\u00e9duit avec Pymor acc\u00e9l\u00e8re les simulations scientifiques gr\u00e2ce \u00e0 la d\u00e9composition en ligne, aux bases r\u00e9duites et aux estimations d&#039;erreurs.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mod\u00e9lisation d&#039;ordres r\u00e9duits avec Pymor\" \/>\n<meta property=\"og:description\" content=\"D\u00e9couvrez comment la mod\u00e9lisation d&#039;ordre r\u00e9duit avec Pymor acc\u00e9l\u00e8re les simulations scientifiques gr\u00e2ce \u00e0 la d\u00e9composition en ligne, aux bases r\u00e9duites et aux estimations d&#039;erreurs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-21T14:31:31+00:00\" \/>\n<meta name=\"author\" content=\"Elena Markovska\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elena Markovska\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\\\/\"},\"author\":{\"name\":\"Elena Markovska\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"headline\":\"Mod\u00e9lisation d&rsquo;ordres r\u00e9duits (ROM) avec Pymor : un guide pratique pour les scientifiques\",\"datePublished\":\"2026-08-21T14:31:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\\\/\"},\"wordCount\":3634,\"commentCount\":0,\"articleSection\":[\"Simulation &amp; Projets de mod\u00e9lisation\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\\\/\",\"name\":\"Mod\u00e9lisation d'ordres r\u00e9duits avec Pymor\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-08-21T14:31:31+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"description\":\"D\u00e9couvrez comment la mod\u00e9lisation d'ordre r\u00e9duit avec Pymor acc\u00e9l\u00e8re les simulations scientifiques gr\u00e2ce \u00e0 la d\u00e9composition en ligne, aux bases r\u00e9duites et aux estimations d'erreurs.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mod\u00e9lisation d&#8217;ordres r\u00e9duits (ROM) avec Pymor : un guide pratique pour les scientifiques\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\",\"name\":\"Elena Markovska\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"caption\":\"Elena Markovska\"},\"sameAs\":[\"http:\\\/\\\/matforge.org\"],\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/elena-markovska\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mod\u00e9lisation d'ordres r\u00e9duits avec Pymor","description":"D\u00e9couvrez comment la mod\u00e9lisation d'ordre r\u00e9duit avec Pymor acc\u00e9l\u00e8re les simulations scientifiques gr\u00e2ce \u00e0 la d\u00e9composition en ligne, aux bases r\u00e9duites et aux estimations d'erreurs.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/","og_locale":"fr_FR","og_type":"article","og_title":"Mod\u00e9lisation d'ordres r\u00e9duits avec Pymor","og_description":"D\u00e9couvrez comment la mod\u00e9lisation d'ordre r\u00e9duit avec Pymor acc\u00e9l\u00e8re les simulations scientifiques gr\u00e2ce \u00e0 la d\u00e9composition en ligne, aux bases r\u00e9duites et aux estimations d'erreurs.","og_url":"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/","og_site_name":"matforge.org","article_published_time":"2026-08-21T14:31:31+00:00","author":"Elena Markovska","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Elena Markovska","Dur\u00e9e de lecture estim\u00e9e":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/"},"author":{"name":"Elena Markovska","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"headline":"Mod\u00e9lisation d&rsquo;ordres r\u00e9duits (ROM) avec Pymor : un guide pratique pour les scientifiques","datePublished":"2026-08-21T14:31:31+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/"},"wordCount":3634,"commentCount":0,"articleSection":["Simulation &amp; Projets de mod\u00e9lisation"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/","url":"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/","name":"Mod\u00e9lisation d'ordres r\u00e9duits avec Pymor","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-08-21T14:31:31+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"description":"D\u00e9couvrez comment la mod\u00e9lisation d'ordre r\u00e9duit avec Pymor acc\u00e9l\u00e8re les simulations scientifiques gr\u00e2ce \u00e0 la d\u00e9composition en ligne, aux bases r\u00e9duites et aux estimations d'erreurs.","breadcrumb":{"@id":"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/fr\/reduced-order-modeling-rom-with-pymor-a-practical-guide-for-scientists\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/"},{"@type":"ListItem","position":2,"name":"Mod\u00e9lisation d&#8217;ordres r\u00e9duits (ROM) avec Pymor : un guide pratique pour les scientifiques"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da","name":"Elena Markovska","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","caption":"Elena Markovska"},"sameAs":["http:\/\/matforge.org"],"url":"https:\/\/matforge.org\/author\/elena-markovska\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=1276"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1276\/revisions"}],"predecessor-version":[{"id":1414,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1276\/revisions\/1414"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=1276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=1276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=1276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}