{"id":7373,"date":"2025-01-28T09:38:06","date_gmt":"2025-01-28T14:38:06","guid":{"rendered":"https:\/\/elligno.com\/?p=7373"},"modified":"2025-08-25T13:23:23","modified_gmt":"2025-08-25T18:23:23","slug":"dambreakpp-physique-simulateur","status":"publish","type":"post","link":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/","title":{"rendered":"DamBreak++ Physique Simulateur Supporte C++ Moderne"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">DamBreak++ Physique Simulateur<\/h2>\n\n\n\n<p>Je viens de compl\u00e9ter la premi\u00e8re mise \u00e0 niveau du Dam Break++ physique simulateur pour le support du C++ moderne. Cette t\u00e2che m\u2019a demand\u00e9 un effort soutenu et comme dans la plupart du temps on sous-estime le travail \u00e0 r\u00e9aliser. Depuis quelques ann\u00e9es il y a eu beaucoup de d\u00e9veloppement et plusieurs prototypes. La t\u00e2che \u00e9tait d\u2019abord de fusionner les diff\u00e9rentes impl\u00e9mentations et de faire un tri. Nettoyage du code, des classes restructur\u00e9es, fusionner les classes en double, et \u00e0 r\u00e9\u00e9crire certaines impl\u00e9mentations en utilisant les nouvelles fonctionnalit\u00e9s C++17\/20. Plusieurs bogues ont \u00e9t\u00e9 corrig\u00e9s et un re-factoring a \u00e9t\u00e9 effectu\u00e9 et est toujours en cours.\u00a0<\/p>\n\n\n\n<p>Ce travail m\u2019a amen\u00e9 \u00e0 repenser \u00e0 l\u2019architecture de l\u2019application. Mon approche initiale \u00e9tait celle d\u2019un (framework orientee-objet) couche abstraite de class \u00e0 partir de laquelle on impl\u00e9mente les fonctionnalit\u00e9s de l\u2019application. C++ moderne ajoute beaucoup de nouvelles fonctionnalit\u00e9s qui trouvent de belles applications dans le domaine de la programmation scientifiques (variadic template, move s\u00e9mantique et plusieurs autres). Le concept de \u201cforward reference\u201d, permet d\u2019impl\u00e9menter une forme du polymorphisme appel\u00e9 \u201cperfect forwarding\u201d (s\u00e9lectionner la fonction selon le type d\u2019arguments). Nombreuses sont les situations dans la programmation d\u2019algorithmes (fonctions avec diff\u00e9rentes signatures ou l\u2019on doit choisir l\u2019impl\u00e9mentation selon la signature (\u00e9quivalent des m\u00e9thodes virtuelles). Par exemple, dans l\u2019environnement de programmation, support du \u201clegacy code\u201d ou la signature des fonctions sont des pointeurs. Mais les nouveaux algorithmes prennent comme arguments des tableaux num\u00e9riques \u00e0 virgule flottante tr\u00e8s performant. Une application du \u201cperfect forwarding\u201d.&nbsp;<\/p>\n\n\n\n<p>Je crois qu\u2019une balance de fonctions et un design OO (Orient\u00e9e-Objet) (framework avec une couche d\u2019abstraction) est une approche \u00e0 consid\u00e9rer. Dans bien des cas, en programmation scientifique les algorithmes peuvent \u00eatre impl\u00e9menter par des fonctions. Ceci m\u2019a rappel\u00e9 sur le savoir-faire en d\u00e9veloppement du logiciel. C\u2019est un long processus d\u2019it\u00e9rations et de prototypages.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Propos de DamBreak++ Physique Simulateur <\/h2>\n\n\n\n<p>Environnement de programmation qui utilise des pratiques modernes de d\u00e9veloppement logiciel dans le domaine la mod\u00e9lisation physique.&nbsp; Couche abstraite \u00e0 partir de laquelle l\u2019usager peut impl\u00e9menter des algorithmes physiques afin de les valider sur le probl\u00e8me du bris de barrage uni-dimensionnel. Les projets de recherche industrielle, le physicien est souvent appel\u00e9 \u00e0 tester, prototyper afin d\u2019exp\u00e9rimenter diff\u00e9rents sc\u00e9narios. Ce type d\u2019environnement r\u00e9pond \u00e0 ce besoin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resultats de Validation<\/h2>\n\n\n\n<p>Ci-dessous les resultats de validation.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" data-id=\"7363\" src=\"https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/QGraphst0t1t2.jpg.jpg\" alt=\"Dam Beak wave profile (water level)\" class=\"wp-image-7363\" srcset=\"https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/QGraphst0t1t2.jpg.jpg 640w, https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/QGraphst0t1t2.jpg-300x188.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">Wave propagation in a frictionless and hrizontal channel<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" data-id=\"7365\" src=\"https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/GraphWithLegend.jpg\" alt=\"Dam Break Wave profile \" class=\"wp-image-7365\" srcset=\"https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/GraphWithLegend.jpg 640w, https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/GraphWithLegend-300x188.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">Wave propagation<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple de programmation<\/h2>\n\n\n\n<p>Ci-dessous des exemples tir\u00e9s environnement de programmation. Comme je l&rsquo;ai mentionn\u00e9 ci-haut, j&rsquo;ai commenc\u00e9 \u00e0 r\u00e9\u00e9crire certains algorithmes avec les nouvelles fonctionnalit\u00e9s du langage moderne. Le processus de re-factoring est toujours en cours, pr\u00e9sentement c&rsquo;est la phase de prototypage.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C++20 Concept<\/h3>\n\n\n\n<p>C++20 ajoute le mot cle \u00ab\u00a0Concept\u00a0\u00bb qui est une contraint sur le parametre de la template. <\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-cpp\" data-line=\"\"> template&lt;typename Callable, typename ...Args&gt;\n  decltype(auto) call( Callable&amp;&amp; aCalbl, Args&amp;&amp;... args)\n  {\n    std::invoke( std::forward&lt;Callable&gt;(aCalbl), \/\/ call passed to callable with \n      std::forward&lt;Args&gt;(args)...);              \/\/ all additional passed args\n  }\n\n  \/\/ C++20 concept\n  template&lt;typename T&gt;\n  concept IsPointer = std::is_pointer_v&lt;T&gt;;\n\n  template&lt;IsPointer T, auto N=101&gt;\n    void hllSchemeFlux( T aU1, T aU2, T aFF1, T aFF2) \/\/ E. McNeil version\n    {\n      static_assert( N == vsc19::EMCNEILNbSections::value);\n    \n      \/\/ do some numerical stuff (function-ptr from legacy code)\n      \/\/ by using &quot;call&quot; function above\n      EMcNeilCalculFF(aU1,aU2,aFF1,aFF2); \n    }<\/code><\/pre>\n\n\n\n<div style=\"height:var(--wp--preset--spacing--50)\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">C++20 Range<\/h3>\n\n\n\n<p>Les \u201cviews\u201d s\u00e9quences de nombre que l\u2019on peut traverser par it\u00e9rations. La principale caract\u00e9ristique de ce type, copie n\u2019est pas dispendieuse et supporte la \u201cmove semantic\u201d.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-cpp\" data-line=\"\">   \/\/ C++20 ranges library\n    if( std::ranges::range&lt;decltype(aA)&gt;)\n    {\n      \/\/ pass an lvalue, std::span is used (view) cheap and should pass by value\n      auto w_rng = std::views::counted( std::ranges::begin(w_Avec), aA.size());\n\n      \/\/ Nujic paper(1995) physics consideration we need to take the average over cell\n      auto w_Avrg = Sfx::cell_face_average(w_rng); \/\/ pass a view (cheap to copy)\n\n      \/\/\/ make the product of both average and derivative(computational node)\n      \/\/ Nujic algorithm to take account of some physics stuff ...\n      auto w_TermeS0 = w_Avrg * w_dxHvarray;  \/\/ average times derivative (H_avg x d1xH)\n\n      return w_TermeS0;\n    }<\/code><\/pre>\n\n\n\n<div style=\"height:var(--wp--preset--spacing--50)\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Move semantic<\/h3>\n\n\n\n<p>Ci-dessous, \u201crvalue reference\u201d permet d\u2019eviter une copie qui peut \u00eatre tr\u00e8s couteux dans certains cas. La m\u00e9thode \u201cpredictor\u201d accepte une \u201cprvalue: pure reading value\u201d ou objet temporaire retourn\u00e9&nbsp;par (getRhs()), ainsi on \u00e9vite la copie du tableau.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-cpp\" data-line=\"\">\/\/  SWERHS shall be implemented in terms of numerical array for fast-floating point\n  void NujicIntegrator::predictor( SweRhsAlgorithm::SWERHS&amp;&amp; aRhs, const double aDt)\n  {\n    using namespace std;\n\n    \/\/ although pass an rvalue reference, within the function \n    \/\/ itself it is treated as an lvalue (cast to rvalue ref)\n    const auto w_rhs = std::move(aRhs);\n...\n}\n\n...\n  void NujicIntegrator::step(SweRhsAlgorithm* aRhsAlgo, const double aDt)\n  {\n    \/\/aRhsAlgo-&gt;calculate(m_prevState); ??? not really\n\n    \/\/ \n    switch (m_integratorStep)\n    {\n    case eIntegratorStep::predictor:\n      predictor(aRhsAlgo-&gt;getRHS(), aDt); \/\/prvalue: pure reading value\n      break;\n    case eIntegratorStep::corrector:\n      corrector(aRhsAlgo-&gt;getRHS(), aDt); \/\/prvalue: pure reading value\n      break;\n    default:\n      break;\n    }\n  }<\/code><\/pre>\n\n\n\n<p><a href=\"https:\/\/elligno.com\/industrial-technology-products\/scientific-simulation-framework\/\">en savoir plus<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DamBreak++ Physique Simulateur Je viens de compl\u00e9ter la premi\u00e8re mise \u00e0 niveau du Dam Break++ physique simulateur pour le support du C++ moderne. Cette t\u00e2che m\u2019a demand\u00e9 un effort soutenu et comme dans la plupart du temps on sous-estime le travail \u00e0 r\u00e9aliser. Depuis quelques ann\u00e9es il y a eu beaucoup de d\u00e9veloppement et plusieurs [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[34,37,35],"class_list":["post-7373","post","type-post","status-publish","format-standard","hentry","category-nouvelles","tag-logiciel-scientifique","tag-modelisation-scientifique","tag-programmation-scientifique"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DamBreak++ Physique Simulateur Supporte C++ Moderne - Elligno<\/title>\n<meta name=\"description\" content=\"DamBreak++ simulateur est un environnement de programmation pour la validation d\u2019algorithmes physique sur la mod\u00e9lisation du bris de barrage.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DamBreak++ Physique Simulateur Supporte C++ Moderne - Elligno\" \/>\n<meta property=\"og:description\" content=\"DamBreak++ simulateur est un environnement de programmation pour la validation d\u2019algorithmes physique sur la mod\u00e9lisation du bris de barrage.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/\" \/>\n<meta property=\"og:site_name\" content=\"Elligno\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-28T14:38:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-25T18:23:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/QGraphst0t1t2.jpg.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jean B\u00e9langer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jean B\u00e9langer\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/\"},\"author\":{\"name\":\"Jean B\u00e9langer\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/person\\\/1129358366bfe88ea0feee16d1850da9\"},\"headline\":\"DamBreak++ Physique Simulateur Supporte C++ Moderne\",\"datePublished\":\"2025-01-28T14:38:06+00:00\",\"dateModified\":\"2025-08-25T18:23:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/\"},\"wordCount\":595,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/elligno.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/QGraphst0t1t2.jpg.jpg\",\"keywords\":[\"logiciel scientifique\",\"mod\u00e9lisation scientifique\",\"programmation scientifique\"],\"articleSection\":[\"Nouvelles\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/\",\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/\",\"name\":\"DamBreak++ Physique Simulateur Supporte C++ Moderne - Elligno\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/elligno.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/QGraphst0t1t2.jpg.jpg\",\"datePublished\":\"2025-01-28T14:38:06+00:00\",\"dateModified\":\"2025-08-25T18:23:23+00:00\",\"description\":\"DamBreak++ simulateur est un environnement de programmation pour la validation d\u2019algorithmes physique sur la mod\u00e9lisation du bris de barrage.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/#primaryimage\",\"url\":\"https:\\\/\\\/elligno.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/QGraphst0t1t2.jpg.jpg\",\"contentUrl\":\"https:\\\/\\\/elligno.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/QGraphst0t1t2.jpg.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/dambreakpp-physique-simulateur\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/elligno.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DamBreak++ Physique Simulateur Supporte C++ Moderne\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/\",\"name\":\"Elligno\",\"description\":\"Site dev elligno\",\"publisher\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/elligno.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#organization\",\"name\":\"Elligno Inc\",\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/elligno.com\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/favicon.png\",\"contentUrl\":\"https:\\\/\\\/elligno.com\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/favicon.png\",\"width\":256,\"height\":256,\"caption\":\"Elligno Inc\"},\"image\":{\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/elligno.com\\\/fr\\\/#\\\/schema\\\/person\\\/1129358366bfe88ea0feee16d1850da9\",\"name\":\"Jean B\u00e9langer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g\",\"caption\":\"Jean B\u00e9langer\"},\"url\":\"https:\\\/\\\/elligno.com\\\/fr\\\/author\\\/elligno-panel-xr3w\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DamBreak++ Physique Simulateur Supporte C++ Moderne - Elligno","description":"DamBreak++ simulateur est un environnement de programmation pour la validation d\u2019algorithmes physique sur la mod\u00e9lisation du bris de barrage.","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:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/","og_locale":"fr_FR","og_type":"article","og_title":"DamBreak++ Physique Simulateur Supporte C++ Moderne - Elligno","og_description":"DamBreak++ simulateur est un environnement de programmation pour la validation d\u2019algorithmes physique sur la mod\u00e9lisation du bris de barrage.","og_url":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/","og_site_name":"Elligno","article_published_time":"2025-01-28T14:38:06+00:00","article_modified_time":"2025-08-25T18:23:23+00:00","og_image":[{"width":640,"height":400,"url":"https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/QGraphst0t1t2.jpg.jpg","type":"image\/jpeg"}],"author":"Jean B\u00e9langer","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Jean B\u00e9langer"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/#article","isPartOf":{"@id":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/"},"author":{"name":"Jean B\u00e9langer","@id":"https:\/\/elligno.com\/fr\/#\/schema\/person\/1129358366bfe88ea0feee16d1850da9"},"headline":"DamBreak++ Physique Simulateur Supporte C++ Moderne","datePublished":"2025-01-28T14:38:06+00:00","dateModified":"2025-08-25T18:23:23+00:00","mainEntityOfPage":{"@id":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/"},"wordCount":595,"commentCount":0,"publisher":{"@id":"https:\/\/elligno.com\/fr\/#organization"},"image":{"@id":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/#primaryimage"},"thumbnailUrl":"https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/QGraphst0t1t2.jpg.jpg","keywords":["logiciel scientifique","mod\u00e9lisation scientifique","programmation scientifique"],"articleSection":["Nouvelles"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/","url":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/","name":"DamBreak++ Physique Simulateur Supporte C++ Moderne - Elligno","isPartOf":{"@id":"https:\/\/elligno.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/#primaryimage"},"image":{"@id":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/#primaryimage"},"thumbnailUrl":"https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/QGraphst0t1t2.jpg.jpg","datePublished":"2025-01-28T14:38:06+00:00","dateModified":"2025-08-25T18:23:23+00:00","description":"DamBreak++ simulateur est un environnement de programmation pour la validation d\u2019algorithmes physique sur la mod\u00e9lisation du bris de barrage.","breadcrumb":{"@id":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/#primaryimage","url":"https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/QGraphst0t1t2.jpg.jpg","contentUrl":"https:\/\/elligno.com\/wp-content\/uploads\/2025\/01\/QGraphst0t1t2.jpg.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/elligno.com\/fr\/dambreakpp-physique-simulateur\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/elligno.com\/fr\/"},{"@type":"ListItem","position":2,"name":"DamBreak++ Physique Simulateur Supporte C++ Moderne"}]},{"@type":"WebSite","@id":"https:\/\/elligno.com\/fr\/#website","url":"https:\/\/elligno.com\/fr\/","name":"Elligno","description":"Site dev elligno","publisher":{"@id":"https:\/\/elligno.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/elligno.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/elligno.com\/fr\/#organization","name":"Elligno Inc","url":"https:\/\/elligno.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/elligno.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/elligno.com\/wp-content\/uploads\/2021\/06\/favicon.png","contentUrl":"https:\/\/elligno.com\/wp-content\/uploads\/2021\/06\/favicon.png","width":256,"height":256,"caption":"Elligno Inc"},"image":{"@id":"https:\/\/elligno.com\/fr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/elligno.com\/fr\/#\/schema\/person\/1129358366bfe88ea0feee16d1850da9","name":"Jean B\u00e9langer","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/de24c8e76c71b2cc42a3e48f52b8e4c86199356560cc80ef2224bbc130cae4e8?s=96&d=mm&r=g","caption":"Jean B\u00e9langer"},"url":"https:\/\/elligno.com\/fr\/author\/elligno-panel-xr3w\/"}]}},"_links":{"self":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/posts\/7373","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/comments?post=7373"}],"version-history":[{"count":0,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/posts\/7373\/revisions"}],"wp:attachment":[{"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/media?parent=7373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/categories?post=7373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elligno.com\/fr\/wp-json\/wp\/v2\/tags?post=7373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}