Skip to content

Commit

Permalink
deploy: 3c00cdb
Browse files Browse the repository at this point in the history
  • Loading branch information
cbritopacheco committed Jan 20, 2025
1 parent 23b2037 commit 9ed8de5
Showing 1 changed file with 72 additions and 16 deletions.
88 changes: 72 additions & 16 deletions docs/refs/heads/develop/_p_d_es_2_poisson_8cpp-example.html
Original file line number Diff line number Diff line change
Expand Up @@ -90,25 +90,81 @@ <h1>

<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="o">**</span><span class="p">)</span>
<span class="p">{</span>
<span class="w"> </span><span class="n">MMG</span><span class="o">::</span><span class="n">Mesh</span><span class="w"> </span><span class="n">mesh</span><span class="p">;</span>
<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="s">&quot;oscar.mesh&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">IO</span><span class="o">::</span><span class="n">FileFormat</span><span class="o">::</span><span class="n">MEDIT</span><span class="p">);</span>
<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">getConnectivity</span><span class="p">().</span><span class="n">compute</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="c1">// std::set&lt;size_t&gt; attrs;</span>
<span class="w"> </span><span class="c1">// size_t count54 = 0;</span>
<span class="w"> </span><span class="c1">// size_t count120 = 0;</span>
<span class="w"> </span><span class="c1">// for (auto edge = mesh.getFace(); edge; ++edge)</span>
<span class="w"> </span><span class="n">Mesh</span><span class="w"> </span><span class="n">mesh</span><span class="p">;</span>
<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="s">&quot;atria_fluid2.mesh&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">IO</span><span class="o">::</span><span class="n">FileFormat</span><span class="o">::</span><span class="n">MEDIT</span><span class="p">);</span>
<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">scale</span><span class="p">(</span><span class="mf">0.95</span><span class="p">);</span>
<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="s">&quot;atria_fluid2_scaled.mesh&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">IO</span><span class="o">::</span><span class="n">FileFormat</span><span class="o">::</span><span class="n">MEDIT</span><span class="p">);</span>

<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">it</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">getFace</span><span class="p">();</span><span class="w"> </span><span class="n">it</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">it</span><span class="p">)</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">it</span><span class="o">-&gt;</span><span class="n">getAttribute</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">({</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">it</span><span class="o">-&gt;</span><span class="n">getIndex</span><span class="p">()},</span><span class="w"> </span><span class="mi">111</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>

<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">getConnectivity</span><span class="p">().</span><span class="n">compute</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>

<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">it</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">getFace</span><span class="p">();</span><span class="w"> </span><span class="n">it</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">it</span><span class="p">)</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="o">&amp;</span><span class="w"> </span><span class="n">inc</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">getConnectivity</span><span class="p">().</span><span class="n">getIncidence</span><span class="p">({</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">},</span><span class="w"> </span><span class="n">it</span><span class="o">-&gt;</span><span class="n">getIndex</span><span class="p">());</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">inc</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">vecino</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">*</span><span class="n">std</span><span class="o">::</span><span class="n">begin</span><span class="p">(</span><span class="n">inc</span><span class="p">);</span>
<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">({</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">vecino</span><span class="p">},</span><span class="w"> </span><span class="mi">110</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>

<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="s">&quot;miaow.mesh&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">IO</span><span class="o">::</span><span class="n">FileFormat</span><span class="o">::</span><span class="n">MEDIT</span><span class="p">);</span>

<span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">P1</span><span class="w"> </span><span class="n">vh</span><span class="p">(</span><span class="n">mesh</span><span class="p">);</span>
<span class="w"> </span><span class="n">RealFunction</span><span class="w"> </span><span class="n">one</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1000.0</span><span class="p">;</span>

<span class="w"> </span><span class="n">TrialFunction</span><span class="w"> </span><span class="n">u</span><span class="p">(</span><span class="n">vh</span><span class="p">);</span>
<span class="w"> </span><span class="n">TestFunction</span><span class="w"> </span><span class="n">v</span><span class="p">(</span><span class="n">vh</span><span class="p">);</span>
<span class="w"> </span><span class="n">Problem</span><span class="w"> </span><span class="n">poisson</span><span class="p">(</span><span class="n">u</span><span class="p">,</span><span class="w"> </span><span class="n">v</span><span class="p">);</span>
<span class="w"> </span><span class="n">poisson</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Integral</span><span class="p">(</span><span class="n">Grad</span><span class="p">(</span><span class="n">u</span><span class="p">),</span><span class="w"> </span><span class="n">Grad</span><span class="p">(</span><span class="n">v</span><span class="p">))</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">Integral</span><span class="p">(</span><span class="n">one</span><span class="p">,</span><span class="w"> </span><span class="n">v</span><span class="p">)</span>
<span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">DirichletBC</span><span class="p">(</span><span class="n">u</span><span class="p">,</span><span class="w"> </span><span class="n">Zero</span><span class="p">());</span>
<span class="w"> </span><span class="n">CG</span><span class="p">(</span><span class="n">poisson</span><span class="p">).</span><span class="n">solve</span><span class="p">();</span>

<span class="w"> </span><span class="c1">// u.getSolution().save(&quot;atria_fluid2.o.sol&quot;, IO::FileFormat::MEDIT);</span>

<span class="w"> </span><span class="c1">// mesh.save(&quot;atria_fluid3.mesh&quot;);</span>
<span class="w"> </span><span class="c1">// std::exit(1);</span>

<span class="w"> </span><span class="c1">// P1 vh(mesh);</span>
<span class="w"> </span><span class="c1">// GridFunction gf(vh);</span>
<span class="w"> </span><span class="c1">// // gf.load(&quot;atria_fluid.o.sol&quot;);</span>

<span class="w"> </span><span class="c1">// Math::Vector&lt;Real&gt; c{{43, 1340, -3}};</span>
<span class="w"> </span><span class="c1">// gf = [&amp;](const Point&amp; p)</span>
<span class="w"> </span><span class="c1">// {</span>
<span class="w"> </span><span class="c1">// if (edge-&gt;getAttribute() == 54)</span>
<span class="w"> </span><span class="c1">// count54++;</span>
<span class="w"> </span><span class="c1">// else if (edge-&gt;getAttribute() == 120)</span>
<span class="w"> </span><span class="c1">// count120++;</span>
<span class="w"> </span><span class="c1">// }</span>
<span class="w"> </span><span class="c1">// std::cout &lt;&lt; count54 &lt;&lt; &quot; &quot; &lt;&lt; count120 &lt;&lt; std::endl;</span>
<span class="w"> </span><span class="c1">// auto r = (p - c).norm();</span>
<span class="w"> </span><span class="c1">// return r;</span>
<span class="w"> </span><span class="c1">// };</span>
<span class="w"> </span><span class="n">Real</span><span class="w"> </span><span class="n">max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u</span><span class="p">.</span><span class="n">getSolution</span><span class="p">().</span><span class="n">max</span><span class="p">(),</span><span class="w"> </span><span class="n">min</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u</span><span class="p">.</span><span class="n">getSolution</span><span class="p">().</span><span class="n">min</span><span class="p">();</span>
<span class="w"> </span><span class="n">Real</span><span class="w"> </span><span class="n">hmax</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">hmin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.1</span><span class="p">;</span>
<span class="w"> </span><span class="n">GridFunction</span><span class="w"> </span><span class="n">newgf</span><span class="p">(</span><span class="n">vh</span><span class="p">);</span>
<span class="w"> </span><span class="n">newgf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">hmin</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">getSolution</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">min</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">hmax</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">hmin</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="n">max</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">min</span><span class="p">);</span>
<span class="w"> </span><span class="n">newgf</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="s">&quot;atria_fluid2.sol&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">IO</span><span class="o">::</span><span class="n">FileFormat</span><span class="o">::</span><span class="n">MEDIT</span><span class="p">);</span>

<span class="w"> </span><span class="c1">// mesh.getConnectivity().compute(1, 2);</span>
<span class="w"> </span><span class="c1">// // std::set&lt;size_t&gt; attrs;</span>
<span class="w"> </span><span class="c1">// // size_t count54 = 0;</span>
<span class="w"> </span><span class="c1">// // size_t count120 = 0;</span>
<span class="w"> </span><span class="c1">// // for (auto edge = mesh.getFace(); edge; ++edge)</span>
<span class="w"> </span><span class="c1">// // {</span>
<span class="w"> </span><span class="c1">// // if (edge-&gt;getAttribute() == 54)</span>
<span class="w"> </span><span class="c1">// // count54++;</span>
<span class="w"> </span><span class="c1">// // else if (edge-&gt;getAttribute() == 120)</span>
<span class="w"> </span><span class="c1">// // count120++;</span>
<span class="w"> </span><span class="c1">// // }</span>
<span class="w"> </span><span class="c1">// // std::cout &lt;&lt; count54 &lt;&lt; &quot; &quot; &lt;&lt; count120 &lt;&lt; std::endl;</span>

<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">trace</span><span class="p">({{</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">666</span><span class="p">}});</span>
<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">trace</span><span class="p">({{{</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">},</span><span class="w"> </span><span class="mi">666</span><span class="p">}});</span>
<span class="w"> </span><span class="c1">// mesh.trace({{6, 666}});</span>
<span class="w"> </span><span class="c1">// mesh.trace({{{6, 7}, 666}});</span>

<span class="w"> </span><span class="n">mesh</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="s">&quot;test.mesh&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">IO</span><span class="o">::</span><span class="n">FileFormat</span><span class="o">::</span><span class="n">MEDIT</span><span class="p">);</span>
<span class="w"> </span><span class="c1">// mesh.save(&quot;test.mesh&quot;, IO::FileFormat::MEDIT);</span>

<span class="w"> </span><span class="c1">// // Build a mesh</span>
<span class="w"> </span><span class="c1">// Mesh mesh;</span>
Expand Down

0 comments on commit 9ed8de5

Please sign in to comment.