dolfinx.la
Linear algebra functionality
Functions
|
Create a distributed PETSc vector. |
|
Check that list of vectors are orthonormal. |
|
Create a distributed sparse matrix. |
|
Orthogonalise set of PETSc vectors in-place. |
|
Create a distributed vector. |
Classes
|
|
|
A distributed sparse matrix that uses compressed sparse row storage. |
|
|
|
A distributed vector object. |
- class dolfinx.la.InsertMode(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
Enum
- add = 0
- insert = 1
- class dolfinx.la.MatrixCSR(A: MatrixCSR_float32 | MatrixCSR_float64 | MatrixCSR_complex64 | MatrixCSR_complex128)[source]
Bases:
object
A distributed sparse matrix that uses compressed sparse row storage.
Note
Objects of this type should be created using
matrix_csr()
and not created using this initialiser.- Parameters:
A – The C++/nanobind matrix object.
- add(x: ndarray[Any, dtype[floating]], rows: ndarray[Any, dtype[int32]], cols: ndarray[Any, dtype[int32]], bs: int = 1) None [source]
Add a block of values in the matrix.
- property block_size
Block sizes for the matrix.
- property data: ndarray[Any, dtype[floating]]
Underlying matrix entry data.
- index_map(i: int) IndexMap [source]
Index map for row/column.
- Parameters:
i – 0 for row map, 1 for column map.
- property indices: ndarray[Any, dtype[int32]]
Local column indices.
- property indptr: ndarray[Any, dtype[int64]]
Local row pointers.
- set(x: ndarray[Any, dtype[floating]], rows: ndarray[Any, dtype[int32]], cols: ndarray[Any, dtype[int32]], bs: int = 1) None [source]
Set a block of values in the matrix.
- set_value(x: floating) None [source]
Set all non-zero entries to a value.
- Parameters:
x – The value to set all non-zero entries to.
- squared_norm() floating [source]
Compute the squared Frobenius norm.
Note
This operation is collective and requires communication.
- to_dense() ndarray[Any, dtype[floating]] [source]
Copy to a dense 2D array.
Note
Typically used for debugging.
- to_scipy(ghosted=False)[source]
Convert to a SciPy CSR/BSR matrix. Data is shared.
Note
SciPy must be available.
- Parameters:
ghosted – If
True
rows that are ghosted in parallel are included in the returned SciPy matrix, otherwise ghost rows are not included.- Returns:
SciPy compressed sparse row (both block sizes equal to one) or a SciPy block compressed sparse row matrix.
- class dolfinx.la.Norm(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)
Bases:
Enum
- frobenius = 3
- l1 = 0
- l2 = 1
- linf = 2
- class dolfinx.la.Vector(x: Vector_float32 | Vector_float64 | Vector_complex64 | Vector_complex128 | Vector_int8 | Vector_int32 | Vector_int64)[source]
Bases:
object
A distributed vector object.
- Parameters:
x – C++ Vector object.
Note
This initialiser is intended for internal library use only. User code should call
vector()
to create a vector object.- property array: ndarray
Local representation of the vector.
- property block_size: int
Block size for the vector.
- property petsc_vec
PETSc vector holding the entries of the vector.
Upon first call, this function creates a PETSc
Vec
object that wraps the degree-of-freedom data. TheVec
object is cached and the cachedVec
is returned upon subsequent calls.Note
When the object is destroyed it will destroy the underlying petsc4py vector automatically.
- scatter_reverse(mode: InsertMode) None [source]
Scatter ghost entries to owner.
- Parameters:
mode – Control how scattered values are set/accumulated by owner.
- dolfinx.la.create_petsc_vector(map, bs: int)[source]
Create a distributed PETSc vector.
Note
Due to subtle issues in the interaction between petsc4py memory management and the Python garbage collector, it is recommended that the method
PETSc.Vec.destroy()
is called on the returned object once the object is no longer required. Note thatPETSc.Vec.destroy()
is collective over the object’s MPI communicator.- Parameters:
map – Index map that describes the size and parallel layout of the vector to create.
bs – Block size of the vector.
- Returns:
PETSc Vec object.
- dolfinx.la.is_orthonormal(basis: list[Vector], eps: float = 1e-12) bool [source]
Check that list of vectors are orthonormal.
- dolfinx.la.matrix_csr(sp: ~dolfinx.cpp.la.SparsityPattern, block_mode=BlockMode.compact, dtype: ~numpy.dtype[~typing.Any] | None | type[~typing.Any] | ~numpy._typing._dtype_like._SupportsDType[~numpy.dtype[~typing.Any]] | str | tuple[~typing.Any, int] | tuple[~typing.Any, ~typing.SupportsIndex | ~collections.abc.Sequence[~typing.SupportsIndex]] | list[~typing.Any] | ~numpy._typing._dtype_like._DTypeDict | tuple[~typing.Any, ~typing.Any] = <class 'numpy.float64'>) MatrixCSR [source]
Create a distributed sparse matrix.
The matrix uses compressed sparse row storage.
- Parameters:
sp – The sparsity pattern that defines the nonzero structure of the matrix the parallel distribution of the matrix.
dtype – The scalar type.
- Returns:
A sparse matrix.
- dolfinx.la.orthonormalize(basis: list[Vector])[source]
Orthogonalise set of PETSc vectors in-place.
- dolfinx.la.vector(map, bs=1, dtype: ~numpy.dtype[~typing.Any] | None | type[~typing.Any] | ~numpy._typing._dtype_like._SupportsDType[~numpy.dtype[~typing.Any]] | str | tuple[~typing.Any, int] | tuple[~typing.Any, ~typing.SupportsIndex | ~collections.abc.Sequence[~typing.SupportsIndex]] | list[~typing.Any] | ~numpy._typing._dtype_like._DTypeDict | tuple[~typing.Any, ~typing.Any] = <class 'numpy.float64'>) Vector [source]
Create a distributed vector.
- Parameters:
map – Index map the describes the size and distribution of the vector.
bs – Block size.
dtype – The scalar type.
- Returns:
A distributed vector.