SERiF 0.0.1a
3+1D Stellar Structure and Evolution
Loading...
Searching...
No Matches
bindings.h File Reference

Declares functions to register MFEM core library components with pybind11. More...

#include <pybind11/pybind11.h>

Go to the source code of this file.

Functions

void register_mfem_bindings (pybind11::module &mfem_submodule)
 Registers all core MFEM bindings to the given Python submodule.
 
void register_operator_bindings (pybind11::module &mfem_submodule)
 Registers mfem::Operator and related classes.
 
void register_matrix_bindings (pybind11::module &mfem_submodule)
 Registers mfem::Matrix and its derived classes (e.g., mfem::DenseMatrix, mfem::SparseMatrix).
 
void register_vector_bindings (pybind11::module &mfem_submodule)
 Registers mfem::Vector.
 
void register_array_bindings (pybind11::module &mfem_submodule)
 Registers mfem::Array.
 
void bind_assembly_level_enum (pybind11::module &mfem_submodule)
 Binds the mfem::AssemblyLevel enum.
 
void register_bilinear_form_bindings (pybind11::module &mfem_submodule)
 Registers mfem::BilinearForm and related functionalities.
 
void register_mixed_bilinear_form_bindings (pybind11::module &mfem_submodule)
 Registers mfem::MixedBilinearForm and related functionalities.
 
void register_table_bindings (pybind11::module &mfem_submodule)
 Registers mfem::Table.
 
void register_mesh_bindings (pybind11::module &mfem_submodule)
 Registers mfem::Mesh.
 
void register_basis_type_bindings (pybind11::module &mfem_submodule)
 Registers mfem::BasisType enum and related constants.
 
void register_finite_element_collection_bindings (pybind11::module &mfem_submodule)
 Registers mfem::FiniteElementCollection base class.
 
void register_H1_FECollection_bindings (pybind11::module &mfem_submodule)
 Registers mfem::H1_FECollection.
 
void register_RT_FECollection_bindings (pybind11::module &mfem_submodule)
 Registers mfem::RT_FECollection.
 
void register_ND_FECollection_bindings (pybind11::module &mfem_submodule)
 Registers mfem::ND_FECollection (Nedelec finite elements).
 
void bind_ordering_enum (pybind11::module &mfem_submodule)
 Binds the mfem::Ordering::Type enum.
 
void register_finite_element_space_bindings (pybind11::module &mfem_submodule)
 Registers mfem::FiniteElementSpace.
 
void register_coefficient_bindings (pybind11::module &m)
 Registers mfem::Coefficient, mfem::VectorCoefficient and related classes/trampolines.
 
void register_eltrans_bindings (pybind11::module &m)
 Registers mfem::ElementTransformation.
 
void register_intrule_bindings (pybind11::module &m)
 Registers mfem::IntegrationRule and mfem::IntegrationPoint.
 
void register_grid_function_bindings (pybind11::module &mfem_submodule)
 Registers mfem::GridFunction.
 

Detailed Description

Declares functions to register MFEM core library components with pybind11.

This header file lists the functions responsible for creating Python bindings for various parts of the MFEM library. Each function typically registers a set of related classes, enums, or functionalities to a pybind11::module, which is expected to be a submodule named mfem within the main serif Python module.

See also
/Users/tboudreaux/Programming/SERiF/src/python/bindings.cpp for how these are used.

Definition in file bindings.h.

Function Documentation

◆ bind_assembly_level_enum()

void bind_assembly_level_enum ( pybind11::module & mfem_submodule)

Binds the mfem::AssemblyLevel enum.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
# level = mfem.AssemblyLevel.LEGACY # Or other enum values
# print(level)

◆ bind_ordering_enum()

void bind_ordering_enum ( pybind11::module & mfem_submodule)

Binds the mfem::Ordering::Type enum.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
ordering = mfem.Ordering.byNODES
print(ordering)

◆ register_array_bindings()

void register_array_bindings ( pybind11::module & mfem_submodule)

Registers mfem::Array.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
arr_int = mfem.intArray(5) # Assuming intArray is a typedef or specific binding
arr_int[0] = 10
print(arr_int.Size(), arr_int[0])

◆ register_basis_type_bindings()

void register_basis_type_bindings ( pybind11::module & mfem_submodule)

Registers mfem::BasisType enum and related constants.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
basis_type = mfem.BasisType.GaussLobatto
print(basis_type)

◆ register_bilinear_form_bindings()

void register_bilinear_form_bindings ( pybind11::module & mfem_submodule)

Registers mfem::BilinearForm and related functionalities.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
# Assuming FiniteElementSpace (fes) is created
# bform = mfem.BilinearForm(fes)
# bform.AddDomainIntegrator(mfem.MassIntegrator()) # Assuming MassIntegrator is bound
# bform.Assemble()
# A = bform.SpMat()

◆ register_coefficient_bindings()

void register_coefficient_bindings ( pybind11::module & m)

Registers mfem::Coefficient, mfem::VectorCoefficient and related classes/trampolines.

Parameters
mThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
const_coeff = mfem.ConstantCoefficient(2.5)
# vec_coeff = mfem.VectorConstantCoefficient(mfem.Vector([1.0, 2.0]))
# Using a Python-derived coefficient (if PyCoefficient trampoline is bound)
class MyCoeff(mfem.Coefficient):
def Eval(self, T, ip):
return 1.0
my_c = MyCoeff()

◆ register_eltrans_bindings()

void register_eltrans_bindings ( pybind11::module & m)

Registers mfem::ElementTransformation.

Parameters
mThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
# ElementTransformation objects are usually obtained from Mesh or FiniteElementSpace
# mesh = mfem.Mesh.MakeCartesian1D(1)
# el_trans = mesh.GetElementTransformation(0)
# print(el_trans.ElementNo)

◆ register_finite_element_collection_bindings()

void register_finite_element_collection_bindings ( pybind11::module & mfem_submodule)

Registers mfem::FiniteElementCollection base class.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
# fec = mfem.FiniteElementCollection() # Typically use derived classes

Definition at line 517 of file bindings.cpp.

◆ register_finite_element_space_bindings()

void register_finite_element_space_bindings ( pybind11::module & mfem_submodule)

Registers mfem::FiniteElementSpace.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
mesh = mfem.Mesh.MakeCartesian1D(5)
fec = mfem.H1_FECollection(1, mesh.Dimension())
fes = mfem.FiniteElementSpace(mesh, fec)
print(fes.GetNDofs())

◆ register_grid_function_bindings()

void register_grid_function_bindings ( pybind11::module & mfem_submodule)

Registers mfem::GridFunction.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
mesh = mfem.Mesh.MakeCartesian1D(5)
fec = mfem.H1_FECollection(1, mesh.Dimension())
fes = mfem.FiniteElementSpace(mesh, fec)
gf = mfem.GridFunction(fes)
gf.Assign(0.0) # Set all values to 0
print(gf.Size())

◆ register_H1_FECollection_bindings()

void register_H1_FECollection_bindings ( pybind11::module & mfem_submodule)

Registers mfem::H1_FECollection.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
order = 1
dim = 2
fec = mfem.H1_FECollection(order, dim)
print(fec.GetName())

◆ register_intrule_bindings()

void register_intrule_bindings ( pybind11::module & m)

Registers mfem::IntegrationRule and mfem::IntegrationPoint.

Parameters
mThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
# Get a standard integration rule
ir = mfem.IntRules.Get(mfem.Geometry.SEGMENT, 3) # Order 3 for a segment
for i in range(ir.GetNPoints()):
ip = ir.IntPoint(i)
# print(f"Point {i}: coords {ip.x}, weight {ip.weight}")

◆ register_matrix_bindings()

void register_matrix_bindings ( pybind11::module & mfem_submodule)

Registers mfem::Matrix and its derived classes (e.g., mfem::DenseMatrix, mfem::SparseMatrix).

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
mat = mfem.DenseMatrix(2, 2)
mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 4.0
mat.Print()

◆ register_mesh_bindings()

void register_mesh_bindings ( pybind11::module & mfem_submodule)

Registers mfem::Mesh.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
mesh = mfem.Mesh.MakeCartesian1D(10) # Example constructor
print(mesh.Dimension(), mesh.GetNE())

◆ register_mfem_bindings()

void register_mfem_bindings ( pybind11::module & mfem_submodule)

Registers all core MFEM bindings to the given Python submodule.

This function serves as the main entry point for exposing MFEM functionalities to Python. It calls various other register_*_bindings and bind_*_enum functions to populate the mfem_submodule.

Parameters
mfem_submoduleThe pybind11 module (typically serif.mfem) to which MFEM bindings will be added.
Python Usage Example:
import serif.mfem as mfem
# Now mfem.Operator, mfem.Vector, mfem.Mesh, etc., are accessible.
vec = mfem.Vector(10)
print(vec.Size())

◆ register_mixed_bilinear_form_bindings()

void register_mixed_bilinear_form_bindings ( pybind11::module & mfem_submodule)

Registers mfem::MixedBilinearForm and related functionalities.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
# Assuming trial_fes and test_fes are FiniteElementSpaces
# mbform = mfem.MixedBilinearForm(trial_fes, test_fes)
# mbform.AddDomainIntegrator(mfem.VectorFEMassIntegrator()) # Example
# mbform.Assemble()

◆ register_ND_FECollection_bindings()

void register_ND_FECollection_bindings ( pybind11::module & mfem_submodule)

Registers mfem::ND_FECollection (Nedelec finite elements).

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
order = 1
dim = 3
fec = mfem.ND_FECollection(order, dim)
print(fec.GetName())

◆ register_operator_bindings()

void register_operator_bindings ( pybind11::module & mfem_submodule)

Registers mfem::Operator and related classes.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
# Assuming PyOperator trampoline is bound
# op = mfem.Operator() # Or a derived class like mfem.DenseMatrix

◆ register_RT_FECollection_bindings()

void register_RT_FECollection_bindings ( pybind11::module & mfem_submodule)

Registers mfem::RT_FECollection.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
order = 1
dim = 2
fec = mfem.RT_FECollection(order-1, dim) # RT_FECollection uses p-1 for order p
print(fec.GetName())

◆ register_table_bindings()

void register_table_bindings ( pybind11::module & mfem_submodule)

Registers mfem::Table.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
table = mfem.Table()
# ... use table methods ...

Definition at line 489 of file bindings.cpp.

◆ register_vector_bindings()

void register_vector_bindings ( pybind11::module & mfem_submodule)

Registers mfem::Vector.

Parameters
mfem_submoduleThe serif.mfem Python submodule.
Python Usage Example:
import serif.mfem as mfem
vec = mfem.Vector(5)
vec[0] = 1.5
print(vec.Size(), vec[0])