Skip to content

Commit

Permalink
Introduce explicit DummySolver for PETSc
Browse files Browse the repository at this point in the history
PETSc seems pickier about matrices with nothing on the diagonal than the
other solvers. This `DummySolver` is an attempt to work around that,
although I'm not clear what the `DummySolver` is attempting to resolve in
the first place.

Addresses usnistgov#644
  • Loading branch information
guyer committed Sep 24, 2019
1 parent 90ab7a5 commit 1806159
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 1 deletion.
3 changes: 2 additions & 1 deletion fipy/solvers/petsc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
from fipy.solvers.petsc.linearGMRESSolver import *
from fipy.solvers.petsc.linearBicgSolver import *
from fipy.solvers.petsc.linearCGSSolver import *
from fipy.solvers.petsc.dummySolver import *

DefaultSolver = LinearGMRESSolver
DefaultAsymmetricSolver = LinearGMRESSolver
DummySolver = DefaultSolver
DummySolver = DummySolver
GeneralSolver = DefaultSolver

__all__ = ["DefaultSolver",
Expand Down
49 changes: 49 additions & 0 deletions fipy/solvers/petsc/dummySolver.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/usr/bin/env python

## -*-Pyth-*-
# ###################################################################
# FiPy - Python-based finite volume PDE solver
#
# FILE: "dummySolver.py"
#
# Author: Jonathan Guyer <guyer@nist.gov>
# Author: Daniel Wheeler <daniel.wheeler@nist.gov>
# Author: James Warren <jwarren@nist.gov>
# mail: NIST
# www: http://www.ctcms.nist.gov/fipy/
#
# ========================================================================
# This software was developed at the National Institute of Standards
# and Technology by employees of the Federal Government in the course
# of their official duties. Pursuant to title 17 Section 105 of the
# United States Code this software is not subject to copyright
# protection and is in the public domain. FiPy is an experimental
# system. NIST assumes no responsibility whatsoever for its use by
# other parties, and makes no guarantees, expressed or implied, about
# its quality, reliability, or any other characteristic. We would
# appreciate acknowledgement if the software is used.
#
# This software can be redistributed and/or modified freely
# provided that any derivative works bear some notice that they are
# derived from it, and any modified versions bear some notice that
# they have been modified.
# ========================================================================
#
# ###################################################################
##

__docformat__ = 'restructuredtext'

from fipy.solvers.petsc.petscSolver import PETScSolver

__all__ = ["DummySolver"]

class DummySolver(PETScSolver):

"""Solver that doesn't do anything.
PETSc is intolerant of having zeros on the diagonal
"""

def _solve_(self, L, x, b):
pass

0 comments on commit 1806159

Please sign in to comment.