.. _usage-api:
Python API
==========
Imports
-------
pyAMReX provides the public imports ``amrex.space1d``, ``amrex.space2d`` and ``amrex.space3d``, mirroring the compile-time option ``AMReX_SPACEDIM``.
Due to limitations in AMReX, currently, only one of the imports can be used at a time in the same Python process.
For example:
.. code-block:: python
import amrex.space3d as amr
A 1D or 2D AMReX run needs its own Python process.
Another dimensionality *cannot be imported into the same Python process* after choosing a specific dimensionality for import.
For brevity, below the 3D APIs are shown.
pyAMReX classes and functions follow the same structure as the `C++ AMReX APIs `__.
.. _usage-api-base:
Base
----
.. autoclass:: amrex.space3d.AMReX
:members:
:undoc-members:
.. autoclass:: amrex.space3d.Config
:members:
:undoc-members:
.. autofunction:: amrex.space3d.initialize
.. autofunction:: amrex.space3d.finalize
.. autofunction:: amrex.space3d.initialized
.. autofunction:: amrex.space3d.size
.. autoclass:: amrex.space3d.Arena
:members:
:undoc-members:
.. autoclass:: amrex.space3d.Direction
:members:
:undoc-members:
.. autoclass:: amrex.space3d.CoordSys
:members:
:undoc-members:
.. autoclass:: amrex.space3d.DistributionMapping
:members:
:undoc-members:
.. autoclass:: amrex.space3d.GeometryData
:members:
:undoc-members:
.. autoclass:: amrex.space3d.Geometry
:members:
:undoc-members:
.. automodule:: amrex.space3d.ParallelDescriptor
:members:
:undoc-members:
.. autoclass:: amrex.space3d.Periodicity
:members:
:undoc-members:
.. autoclass:: amrex.space3d.RealBox
:members:
:undoc-members:
.. autofunction:: amrex.space3d.AlmostEqual
Indexing: Box, IntVect and IndexType
""""""""""""""""""""""""""""""""""""
`Corresponding AMReX documentation `__.
.. autoclass:: amrex.space3d.IntVect
:members:
:undoc-members:
.. autoclass:: amrex.space3d.Box
:members:
:undoc-members:
.. autoclass:: amrex.space3d.BoxArray
:members:
:undoc-members:
.. autoclass:: amrex.space3d.Dim3
:members:
:undoc-members:
.. autoclass:: amrex.space3d.XDim3
:members:
:undoc-members:
.. autoclass:: amrex.space3d.IndexType
:members:
:undoc-members:
Vectors
"""""""
.. autoclass:: amrex.space3d.RealVect
:members:
:undoc-members:
.. autofunction:: amrex.space3d.min
.. autofunction:: amrex.space3d.max
``amrex::Vector`` is implemented for many types, e.g.,
.. autoclass:: amrex.space3d.Vector_Real
:members:
:undoc-members:
.. autoclass:: amrex.space3d.Vector_int
:members:
:undoc-members:
.. autoclass:: amrex.space3d.Vector_string
:members:
:undoc-members:
Data Containers
"""""""""""""""
``amrex::Array4`` is implemented for many floating point and integer types, e.g.,
.. autoclass:: amrex.space3d.Array4_double
:members:
:undoc-members:
.. autoclass:: amrex.space3d.BaseFab_Real
:members:
:undoc-members:
.. autoclass:: amrex.space3d.FArrayBox
:members:
:undoc-members:
.. autoclass:: amrex.space3d.MultiFab
:members:
:undoc-members:
.. autoclass:: amrex.space3d.MFInfo
:members:
:undoc-members:
.. autoclass:: amrex.space3d.MFIter
:members:
:undoc-members:
``amrex::PODVector`` is implemented for many allocators, e.g.,
.. autoclass:: amrex.space3d.PODVector_real_arena
:members:
:undoc-members:
.. autoclass:: amrex.space3d.PODVector_int_pinned
:members:
:undoc-members:
Small Matrices and Vectors
""""""""""""""""""""""""""
.. autoclass:: amrex.space3d.SmallMatrix_6x6_F_SI1_double
:members:
:undoc-members:
Utility
"""""""
.. autoclass:: amrex.space3d.ParmParse
:members:
:undoc-members:
.. autofunction:: amrex.space3d.Print
.. autofunction:: amrex.space3d.d_decl
.. autofunction:: amrex.space3d.concatenate
.. autofunction:: amrex.space3d.write_single_level_plotfile
.. _usage-api-amrcore:
AmrCore
-------
.. autoclass:: amrex.space3d.AmrInfo
:members:
:undoc-members:
.. autoclass:: amrex.space3d.AmrMesh
:members:
:undoc-members:
.. _usage-api-particles:
Particles
---------
Particle support is implemented for both legacy (AoS+SoA) and pure SoA particle memory layouts in AMReX.
Additional runtime attributes (Real or Int) are always in SoA memory layout.
``amrex::StructOfArrays`` is implemented for many numbers of Real and Int arguments, and allocators, e.g.,
.. autoclass:: amrex.space3d.StructOfArrays_8_0_idcpu_default
:members:
:undoc-members:
``amrex::ParticleTile`` is implemented for both legacy (AoS+SoA) and pure SoA particle types, many number of Real and Int arguments, and allocators, e.g.,
.. autoclass:: amrex.space3d.ParticleTile_pureSoA_8_0_default
:members:
:undoc-members:
``amrex::ParticleTileData`` is implemented for both legacy (AoS+SoA) and pure SoA particle types, many number of Real and Int arguments, e.g.,
.. autoclass:: amrex.space3d.ParticleTileData_pureSoA_8_0
:members:
:undoc-members:
``amrex::ParticleContainer_impl`` is implemented for both legacy (AoS+SoA) and pure SoA particle types, many number of Real and Int arguments, and allocators, e.g.,
.. autoclass:: amrex.space3d.ParticleContainer_2_1_3_1_default
:members:
:undoc-members:
.. autoclass:: amrex.space3d.ParticleContainer_pureSoA_8_0_default
:members:
:undoc-members:
Likewise for other classes accessible and usable on particle containers:
.. autoclass:: amrex.space3d.ParIter_pureSoA_8_0_default
:members:
:undoc-members:
.. autoclass:: amrex.space3d.ParConstIter_pureSoA_8_0_default
.. autoclass:: amrex.space3d.ParticleInitType_2_1_3_1
:members:
:undoc-members:
.. TODO for pure SoA
.. .. autoclass:: amrex.space3d.ParticleInitType_pureSoA_8_0
.. :members:
.. :undoc-members:
AoS
"""
This is for the legacy, AoS + SoA particle containers only:
``amrex::ArrayOfStructs`` is implemented for many numbers of extra Real and Int arguments, and allocators, e.g.,
.. autoclass:: amrex.space3d.ArrayOfStructs_2_1_default
:members:
:undoc-members:
``amrex::Particle`` is implemented for many numbers of extra Real and Int arguments, e.g.,
.. autoclass:: amrex.space3d.Particle_2_1
:members:
:undoc-members:
.. _usage-api-eb:
Embedded Boundaries
-------------------
Embedded boundary (EB) support in pyAMReX is still minimal. To build pyAMReX with
EB support, you need to add ``-DAMReX_EB=ON`` to CMake build options.
.. autofunction:: amrex.space3d.EB2_Build
.. autoclass:: amrex.space3d.EBFArrayBoxFactory
:members:
:undoc-members:
.. autofunction:: amrex.space3d.makeEBFabFactory