Source code for optalg.lin_solver
#****************************************************#
# This file is part of OPTALG. #
# #
# Copyright (c) 2015-, Tomas Tinoco De Rubira. #
# #
# OPTALG is released under the BSD 2-clause license. #
#****************************************************#
from .lin_solver import LinSolver
from .mumps import LinSolverMUMPS
from .superlu import LinSolverSUPERLU
from .umfpack import LinSolverUMFPACK
[docs]def new_linsolver(name,prop):
"""
Creates a linear solver.
Parameters
----------
name : string
prop : string
Returns
-------
solver : :class:`LinSolver <optalg.lin_solver.LinSolver>`
"""
if name == 'mumps':
return LinSolverMUMPS(prop)
elif name == 'superlu':
return LinSolverSUPERLU(prop)
elif name == 'umfpack':
return LinSolverUMFPACK(prop)
elif name == 'default':
try:
return new_linsolver('mumps',prop)
except ImportError:
return new_linsolver('superlu',prop)
else:
raise ValueError('invalid linear solver name')