Skip to content

Commit 73a3986

Browse files
committed
Deploying to main from @ AMReX-Codes/amrex@8e7bb00 🚀
1 parent 1dad897 commit 73a3986

File tree

593 files changed

+87861
-82171
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

593 files changed

+87861
-82171
lines changed

amrex/docs_html/FFT.html

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<script src="_static/underscore.js"></script>
2020
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
2121
<script src="_static/doctools.js"></script>
22+
<script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
2223
<script src="_static/js/theme.js"></script>
2324
<link rel="index" title="Index" href="genindex.html" />
2425
<link rel="search" title="Search" href="search.html" />
@@ -166,9 +167,11 @@
166167
</section>
167168
<section id="poisson-solver">
168169
<h1>Poisson Solver<a class="headerlink" href="#poisson-solver" title="Permalink to this heading"></a></h1>
169-
<p>AMReX provides FFT based Poisson solvers. <code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">Poisson</span><span class="w"></span></code> supports
170-
periodic (<code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">Boundary</span><span class="o">::</span><span class="n">periodic</span><span class="w"></span></code>), homogeneous Neumann
171-
(<code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">Boundary</span><span class="o">::</span><span class="n">even</span><span class="w"></span></code>), and homogeneous Dirichlet
170+
<p>AMReX provides FFT based Poisson solvers. Here, Poisson’s equation is</p>
171+
<div class="math notranslate nohighlight">
172+
\[\nabla^2 \phi = \rho.\]</div>
173+
<p><code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">Poisson</span><span class="w"></span></code> supports periodic (<code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">Boundary</span><span class="o">::</span><span class="n">periodic</span><span class="w"></span></code>),
174+
homogeneous Neumann (<code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">Boundary</span><span class="o">::</span><span class="n">even</span><span class="w"></span></code>), and homogeneous Dirichlet
172175
(<code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">Boundary</span><span class="o">::</span><span class="n">odd</span><span class="w"></span></code>) boundaries using FFT. Below is an example of
173176
using the solver.</p>
174177
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="n">Geometry</span><span class="w"> </span><span class="nf">geom</span><span class="p">(...);</span><span class="w"></span>
@@ -194,6 +197,23 @@ <h1>Poisson Solver<a class="headerlink" href="#poisson-solver" title="Permalink
194197
<span class="n">fft_poisson</span><span class="p">.</span><span class="n">solve</span><span class="p">(</span><span class="n">soln</span><span class="p">,</span><span class="w"> </span><span class="n">rhs</span><span class="p">);</span><span class="w"></span>
195198
</pre></div>
196199
</div>
200+
<p><code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">PoissonOpenBC</span><span class="w"></span></code> is a 3D only solver that supports open
201+
boundaries. Its implementation utilizes <code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">OpenBCSolver</span><span class="w"></span></code>, which can
202+
be used for implementing convolution based solvers with a user provided
203+
Green’s function. If users want to extend the open BC solver to 2D or other
204+
types of Green’s function, they could use <code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">PoissonOpenBC</span><span class="w"></span></code> as an
205+
example. Below is an example of solving Poisson’s equation with open
206+
boundaries.</p>
207+
<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="n">Geometry</span><span class="w"> </span><span class="nf">geom</span><span class="p">(...);</span><span class="w"></span>
208+
<span class="n">MultiFab</span><span class="w"> </span><span class="nf">soln</span><span class="p">(...);</span><span class="w"> </span><span class="c1">// soln can be either nodal or cell-centered.</span>
209+
<span class="n">MultiFab</span><span class="w"> </span><span class="nf">rhs</span><span class="p">(...);</span><span class="w"> </span><span class="c1">// rhs must have the same index type as soln.</span>
210+
211+
<span class="kt">int</span><span class="w"> </span><span class="n">ng</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">...;</span><span class="w"> </span><span class="c1">// ng can be non-zero, if we want to compute potential</span>
212+
<span class="w"> </span><span class="c1">// outside the domain.</span>
213+
<span class="n">FFT</span><span class="o">::</span><span class="n">PoissonOpenBC</span><span class="w"> </span><span class="nf">openbc_solver</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span><span class="w"> </span><span class="n">soln</span><span class="p">.</span><span class="n">ixType</span><span class="p">(),</span><span class="w"> </span><span class="n">IntVect</span><span class="p">(</span><span class="n">ng</span><span class="p">));</span><span class="w"></span>
214+
<span class="n">openbc_solver</span><span class="p">.</span><span class="n">solve</span><span class="p">(</span><span class="n">soln</span><span class="p">,</span><span class="w"> </span><span class="n">rhs</span><span class="p">);</span><span class="w"></span>
215+
</pre></div>
216+
</div>
197217
<p><code class="code highlight cpp c++ docutils literal highlight-c++"><span class="n">FFT</span><span class="o">::</span><span class="n">PoissonHybrid</span><span class="w"></span></code> is a 3D only solver that supports periodic
198218
boundaries in the first two dimensions and Neumann boundary in the last
199219
dimension. The last dimension is solved with a tridiagonal solver that can
Binary file not shown.

amrex/docs_html/_sources/FFT.rst.txt

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,14 @@ object. Therefore, one should cache it for reuse if possible. Although
7171
Poisson Solver
7272
==============
7373

74-
AMReX provides FFT based Poisson solvers. :cpp:`FFT::Poisson` supports
75-
periodic (:cpp:`FFT::Boundary::periodic`), homogeneous Neumann
76-
(:cpp:`FFT::Boundary::even`), and homogeneous Dirichlet
74+
AMReX provides FFT based Poisson solvers. Here, Poisson's equation is
75+
76+
.. math::
77+
78+
\nabla^2 \phi = \rho.
79+
80+
:cpp:`FFT::Poisson` supports periodic (:cpp:`FFT::Boundary::periodic`),
81+
homogeneous Neumann (:cpp:`FFT::Boundary::even`), and homogeneous Dirichlet
7782
(:cpp:`FFT::Boundary::odd`) boundaries using FFT. Below is an example of
7883
using the solver.
7984

@@ -103,6 +108,27 @@ using the solver.
103108
FFT::Poisson fft_poisson(geom, fft_bc);
104109
fft_poisson.solve(soln, rhs);
105110

111+
:cpp:`FFT::PoissonOpenBC` is a 3D only solver that supports open
112+
boundaries. Its implementation utilizes :cpp:`FFT::OpenBCSolver`, which can
113+
be used for implementing convolution based solvers with a user provided
114+
Green's function. If users want to extend the open BC solver to 2D or other
115+
types of Green's function, they could use :cpp:`FFT::PoissonOpenBC` as an
116+
example. Below is an example of solving Poisson's equation with open
117+
boundaries.
118+
119+
.. highlight:: c++
120+
121+
::
122+
123+
Geometry geom(...);
124+
MultiFab soln(...); // soln can be either nodal or cell-centered.
125+
MultiFab rhs(...); // rhs must have the same index type as soln.
126+
127+
int ng = ...; // ng can be non-zero, if we want to compute potential
128+
// outside the domain.
129+
FFT::PoissonOpenBC openbc_solver(geom, soln.ixType(), IntVect(ng));
130+
openbc_solver.solve(soln, rhs);
131+
106132
:cpp:`FFT::PoissonHybrid` is a 3D only solver that supports periodic
107133
boundaries in the first two dimensions and Neumann boundary in the last
108134
dimension. The last dimension is solved with a tridiagonal solver that can

amrex/docs_html/doxygen/AMReX__AmrCore_8H_source.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@
191191
<div class="ttc" id="aclassamrex_1_1AmrCore_html_af614cfbec1f40953a32b0786d25f5f6f"><div class="ttname"><a href="classamrex_1_1AmrCore.html#af614cfbec1f40953a32b0786d25f5f6f">amrex::AmrCore::InitAmrCore</a></div><div class="ttdeci">void InitAmrCore()</div><div class="ttdef"><b>Definition:</b> AMReX_AmrCore.cpp:71</div></div>
192192
<div class="ttc" id="aclassamrex_1_1AmrMesh_html"><div class="ttname"><a href="classamrex_1_1AmrMesh.html">amrex::AmrMesh</a></div><div class="ttdef"><b>Definition:</b> AMReX_AmrMesh.H:62</div></div>
193193
<div class="ttc" id="aclassamrex_1_1AmrParGDB_html"><div class="ttname"><a href="classamrex_1_1AmrParGDB.html">amrex::AmrParGDB</a></div><div class="ttdef"><b>Definition:</b> AMReX_AmrParGDB.H:12</div></div>
194-
<div class="ttc" id="aclassamrex_1_1BoxArray_html"><div class="ttname"><a href="classamrex_1_1BoxArray.html">amrex::BoxArray</a></div><div class="ttdoc">A collection of Boxes stored in an Array.</div><div class="ttdef"><b>Definition:</b> AMReX_BoxArray.H:548</div></div>
194+
<div class="ttc" id="aclassamrex_1_1BoxArray_html"><div class="ttname"><a href="classamrex_1_1BoxArray.html">amrex::BoxArray</a></div><div class="ttdoc">A collection of Boxes stored in an Array.</div><div class="ttdef"><b>Definition:</b> AMReX_BoxArray.H:549</div></div>
195195
<div class="ttc" id="aclassamrex_1_1DistributionMapping_html"><div class="ttname"><a href="classamrex_1_1DistributionMapping.html">amrex::DistributionMapping</a></div><div class="ttdoc">Calculates the distribution of FABs to MPI processes.</div><div class="ttdef"><b>Definition:</b> AMReX_DistributionMapping.H:41</div></div>
196196
<div class="ttc" id="aclassamrex_1_1Geometry_html"><div class="ttname"><a href="classamrex_1_1Geometry.html">amrex::Geometry</a></div><div class="ttdoc">Rectangular problem domain geometry.</div><div class="ttdef"><b>Definition:</b> AMReX_Geometry.H:73</div></div>
197197
<div class="ttc" id="aclassamrex_1_1RealBox_html"><div class="ttname"><a href="classamrex_1_1RealBox.html">amrex::RealBox</a></div><div class="ttdoc">A Box with real dimensions. A RealBox is OK iff volume &gt;= 0.</div><div class="ttdef"><b>Definition:</b> AMReX_RealBox.H:21</div></div>

amrex/docs_html/doxygen/AMReX__AmrData_8H_source.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@
394394
<div class="ttc" id="aclassamrex_1_1AmrData_html_afd0ce8b38263bf89dedc4e1c806f3de2"><div class="ttname"><a href="classamrex_1_1AmrData.html#afd0ce8b38263bf89dedc4e1c806f3de2">amrex::AmrData::fabBoxArray</a></div><div class="ttdeci">BoxArray fabBoxArray</div><div class="ttdef"><b>Definition:</b> AMReX_AmrData.H:44</div></div>
395395
<div class="ttc" id="aclassamrex_1_1AmrData_html_afe8bc6f5489bcdb1c869821656362357"><div class="ttname"><a href="classamrex_1_1AmrData.html#afe8bc6f5489bcdb1c869821656362357">amrex::AmrData::boundaryWidth</a></div><div class="ttdeci">int boundaryWidth</div><div class="ttdef"><b>Definition:</b> AMReX_AmrData.H:41</div></div>
396396
<div class="ttc" id="aclassamrex_1_1AmrData_html_aff316a96447744ee3bd4e3abbb555f6b"><div class="ttname"><a href="classamrex_1_1AmrData.html#aff316a96447744ee3bd4e3abbb555f6b">amrex::AmrData::PlotFileVersion</a></div><div class="ttdeci">const std::string &amp; PlotFileVersion() const</div><div class="ttdef"><b>Definition:</b> AMReX_AmrData.H:116</div></div>
397-
<div class="ttc" id="aclassamrex_1_1BoxArray_html"><div class="ttname"><a href="classamrex_1_1BoxArray.html">amrex::BoxArray</a></div><div class="ttdoc">A collection of Boxes stored in an Array.</div><div class="ttdef"><b>Definition:</b> AMReX_BoxArray.H:548</div></div>
397+
<div class="ttc" id="aclassamrex_1_1BoxArray_html"><div class="ttname"><a href="classamrex_1_1BoxArray.html">amrex::BoxArray</a></div><div class="ttdoc">A collection of Boxes stored in an Array.</div><div class="ttdef"><b>Definition:</b> AMReX_BoxArray.H:549</div></div>
398398
<div class="ttc" id="aclassamrex_1_1BoxND_html"><div class="ttname"><a href="classamrex_1_1BoxND.html">amrex::BoxND&lt; AMREX_SPACEDIM &gt;</a></div></div>
399399
<div class="ttc" id="aclassamrex_1_1DistributionMapping_html"><div class="ttname"><a href="classamrex_1_1DistributionMapping.html">amrex::DistributionMapping</a></div><div class="ttdoc">Calculates the distribution of FABs to MPI processes.</div><div class="ttdef"><b>Definition:</b> AMReX_DistributionMapping.H:41</div></div>
400400
<div class="ttc" id="aclassamrex_1_1FArrayBox_html"><div class="ttname"><a href="classamrex_1_1FArrayBox.html">amrex::FArrayBox</a></div><div class="ttdoc">A Fortran Array of REALs.</div><div class="ttdef"><b>Definition:</b> AMReX_FArrayBox.H:229</div></div>

amrex/docs_html/doxygen/AMReX__AmrLevel_8H_source.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -731,8 +731,8 @@
731731
<div class="ttc" id="aclassamrex_1_1Amr_html"><div class="ttname"><a href="classamrex_1_1Amr.html">amrex::Amr</a></div><div class="ttdoc">Manage hierarchy of levels for time-dependent AMR computations.</div><div class="ttdef"><b>Definition:</b> AMReX_Amr.H:35</div></div>
732732
<div class="ttc" id="aclassamrex_1_1Amr_html_a5db40812e41cec37353e6308befc77da"><div class="ttname"><a href="classamrex_1_1Amr.html#a5db40812e41cec37353e6308befc77da">amrex::Amr::getLevel</a></div><div class="ttdeci">AmrLevel &amp; getLevel(int lev) noexcept</div><div class="ttdoc">AmrLevel lev.</div><div class="ttdef"><b>Definition:</b> AMReX_Amr.H:189</div></div>
733733
<div class="ttc" id="aclassamrex_1_1Amr_html_a8101a391189955c50c7a36d359f3f5ed"><div class="ttname"><a href="classamrex_1_1Amr.html#a8101a391189955c50c7a36d359f3f5ed">amrex::Amr::levelSteps</a></div><div class="ttdeci">int levelSteps(int lev) const noexcept</div><div class="ttdoc">Number of time steps at specified level.</div><div class="ttdef"><b>Definition:</b> AMReX_Amr.H:103</div></div>
734-
<div class="ttc" id="aclassamrex_1_1BoxArray_html"><div class="ttname"><a href="classamrex_1_1BoxArray.html">amrex::BoxArray</a></div><div class="ttdoc">A collection of Boxes stored in an Array.</div><div class="ttdef"><b>Definition:</b> AMReX_BoxArray.H:548</div></div>
735-
<div class="ttc" id="aclassamrex_1_1BoxArray_html_ac492bfeacfc03ff2dcb5375e5422d417"><div class="ttname"><a href="classamrex_1_1BoxArray.html#ac492bfeacfc03ff2dcb5375e5422d417">amrex::BoxArray::size</a></div><div class="ttdeci">Long size() const noexcept</div><div class="ttdoc">Return the number of boxes in the BoxArray.</div><div class="ttdef"><b>Definition:</b> AMReX_BoxArray.H:595</div></div>
734+
<div class="ttc" id="aclassamrex_1_1BoxArray_html"><div class="ttname"><a href="classamrex_1_1BoxArray.html">amrex::BoxArray</a></div><div class="ttdoc">A collection of Boxes stored in an Array.</div><div class="ttdef"><b>Definition:</b> AMReX_BoxArray.H:549</div></div>
735+
<div class="ttc" id="aclassamrex_1_1BoxArray_html_ac492bfeacfc03ff2dcb5375e5422d417"><div class="ttname"><a href="classamrex_1_1BoxArray.html#ac492bfeacfc03ff2dcb5375e5422d417">amrex::BoxArray::size</a></div><div class="ttdeci">Long size() const noexcept</div><div class="ttdoc">Return the number of boxes in the BoxArray.</div><div class="ttdef"><b>Definition:</b> AMReX_BoxArray.H:596</div></div>
736736
<div class="ttc" id="aclassamrex_1_1BoxND_html"><div class="ttname"><a href="classamrex_1_1BoxND.html">amrex::BoxND&lt; AMREX_SPACEDIM &gt;</a></div></div>
737737
<div class="ttc" id="aclassamrex_1_1DeriveList_html"><div class="ttname"><a href="classamrex_1_1DeriveList.html">amrex::DeriveList</a></div><div class="ttdoc">A list of DeriveRecs.</div><div class="ttdef"><b>Definition:</b> AMReX_Derive.H:364</div></div>
738738
<div class="ttc" id="aclassamrex_1_1DescriptorList_html"><div class="ttname"><a href="classamrex_1_1DescriptorList.html">amrex::DescriptorList</a></div><div class="ttdef"><b>Definition:</b> AMReX_StateDescriptor.H:437</div></div>

amrex/docs_html/doxygen/AMReX__AmrMesh_8H_source.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@
422422
<div class="ttc" id="aclassamrex_1_1AmrMesh_html_af4a41ee86449b2afa949b6d68f6faf6f"><div class="ttname"><a href="classamrex_1_1AmrMesh.html#af4a41ee86449b2afa949b6d68f6faf6f">amrex::AmrMesh::blockingFactor</a></div><div class="ttdeci">const IntVect &amp; blockingFactor(int lev) const noexcept</div><div class="ttdoc">Return the blocking factor at level lev.</div><div class="ttdef"><b>Definition:</b> AMReX_AmrMesh.H:203</div></div>
423423
<div class="ttc" id="aclassamrex_1_1AmrMesh_html_af5ec08eb03bebbb7a0f37f2af4bbda5d"><div class="ttname"><a href="classamrex_1_1AmrMesh.html#af5ec08eb03bebbb7a0f37f2af4bbda5d">amrex::AmrMesh::ClearDistributionMap</a></div><div class="ttdeci">void ClearDistributionMap(int lev) noexcept</div><div class="ttdef"><b>Definition:</b> AMReX_AmrMesh.cpp:429</div></div>
424424
<div class="ttc" id="aclassamrex_1_1AmrMesh_html_afc5fde984a1cdd6fcfddb6ff26fb92f6"><div class="ttname"><a href="classamrex_1_1AmrMesh.html#afc5fde984a1cdd6fcfddb6ff26fb92f6">amrex::AmrMesh::ClearBoxArray</a></div><div class="ttdeci">void ClearBoxArray(int lev) noexcept</div><div class="ttdef"><b>Definition:</b> AMReX_AmrMesh.cpp:435</div></div>
425-
<div class="ttc" id="aclassamrex_1_1BoxArray_html"><div class="ttname"><a href="classamrex_1_1BoxArray.html">amrex::BoxArray</a></div><div class="ttdoc">A collection of Boxes stored in an Array.</div><div class="ttdef"><b>Definition:</b> AMReX_BoxArray.H:548</div></div>
425+
<div class="ttc" id="aclassamrex_1_1BoxArray_html"><div class="ttname"><a href="classamrex_1_1BoxArray.html">amrex::BoxArray</a></div><div class="ttdoc">A collection of Boxes stored in an Array.</div><div class="ttdef"><b>Definition:</b> AMReX_BoxArray.H:549</div></div>
426426
<div class="ttc" id="aclassamrex_1_1BoxList_html"><div class="ttname"><a href="classamrex_1_1BoxList.html">amrex::BoxList</a></div><div class="ttdoc">A class for managing a List of Boxes that share a common IndexType. This class implements operations ...</div><div class="ttdef"><b>Definition:</b> AMReX_BoxList.H:52</div></div>
427427
<div class="ttc" id="aclassamrex_1_1BoxND_html"><div class="ttname"><a href="classamrex_1_1BoxND.html">amrex::BoxND&lt; AMREX_SPACEDIM &gt;</a></div></div>
428428
<div class="ttc" id="aclassamrex_1_1DistributionMapping_html"><div class="ttname"><a href="classamrex_1_1DistributionMapping.html">amrex::DistributionMapping</a></div><div class="ttdoc">Calculates the distribution of FABs to MPI processes.</div><div class="ttdef"><b>Definition:</b> AMReX_DistributionMapping.H:41</div></div>

0 commit comments

Comments
 (0)