Page MenuHomec4science

fenics_la.py
No OneTemporary

File Metadata

Created
Fri, May 17, 02:21

fenics_la.py

# Copyright (C) 2018 by the RROMPy authors
#
# This file is part of RROMPy.
#
# RROMPy is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# RROMPy is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with RROMPy. If not, see <http://www.gnu.org/licenses/>.
#
from numpy import array, complex
from scipy.sparse import csr_matrix
import fenics as fen
from rrompy.utilities.base.types import Np2D, FenBC, FenExpr
__all__ = ['fenics2Sparse', 'fenics2Vector']
def fenics2Sparse(expr:FenExpr, formCompPars : dict = {}, DBC : FenBC = None,
BCType : int = -1, dtype = complex) -> Np2D:
assembled = fen.assemble(expr, form_compiler_parameters = formCompPars)
if BCType == 0:
DBC.zero(assembled)
elif BCType >= 1:
DBC.apply(assembled)
emat = fen.as_backend_type(assembled).mat()
er, ec, ev = emat.getValuesCSR()
return csr_matrix((ev, ec, er), shape = emat.size, dtype = dtype)
def fenics2Vector(expr:FenExpr, formCompPars : dict = {}, DBC : FenBC = None,
BCType : int = -1, dtype = complex) -> Np2D:
assembled = fen.assemble(expr, form_compiler_parameters = formCompPars)
if BCType == 0:
DBC.zero(assembled)
elif BCType >= 1:
DBC.apply(assembled)
return array(assembled[:], dtype = dtype)

Event Timeline