mirror of
https://github.com/wassname/simpeg.git
synced 2026-08-16 11:28:21 +08:00
@@ -66,8 +66,8 @@ class BaseInvProblem(object):
|
|||||||
self.curModel = m0
|
self.curModel = m0
|
||||||
|
|
||||||
print """SimPEG.InvProblem is setting bfgsH0 to the inverse of the eval2Deriv.
|
print """SimPEG.InvProblem is setting bfgsH0 to the inverse of the eval2Deriv.
|
||||||
***Done using same solver as the problem***"""
|
***Done using same Solver and solverOpts as the problem***"""
|
||||||
self.opt.bfgsH0 = self.prob.Solver(self.reg.eval2Deriv(self.curModel))
|
self.opt.bfgsH0 = self.prob.Solver(self.reg.eval2Deriv(self.curModel), **self.prob.solverOpts)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def warmstart(self):
|
def warmstart(self):
|
||||||
|
|||||||
@@ -26,7 +26,14 @@ def SolverWrapD(fun, factorize=True, checkAccuracy=True, accuracyTol=1e-6):
|
|||||||
|
|
||||||
def __init__(self, A, **kwargs):
|
def __init__(self, A, **kwargs):
|
||||||
self.A = A.tocsc()
|
self.A = A.tocsc()
|
||||||
|
|
||||||
|
self.checkAccuracy = kwargs.get("checkAccuracy", checkAccuracy)
|
||||||
|
if kwargs.has_key("checkAccuracy"): del kwargs["checkAccuracy"]
|
||||||
|
self.accuracyTol = kwargs.get("accuracyTol", accuracyTol)
|
||||||
|
if kwargs.has_key("accuracyTol"): del kwargs["accuracyTol"]
|
||||||
|
|
||||||
self.kwargs = kwargs
|
self.kwargs = kwargs
|
||||||
|
|
||||||
if factorize:
|
if factorize:
|
||||||
self.solver = fun(self.A, **kwargs)
|
self.solver = fun(self.A, **kwargs)
|
||||||
|
|
||||||
@@ -57,8 +64,8 @@ def SolverWrapD(fun, factorize=True, checkAccuracy=True, accuracyTol=1e-6):
|
|||||||
else:
|
else:
|
||||||
X[:,i] = fun(self.A, b[:,i], **self.kwargs)
|
X[:,i] = fun(self.A, b[:,i], **self.kwargs)
|
||||||
|
|
||||||
if checkAccuracy:
|
if self.checkAccuracy:
|
||||||
_checkAccuracy(self.A, b, X, accuracyTol)
|
_checkAccuracy(self.A, b, X, self.accuracyTol)
|
||||||
return X
|
return X
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
@@ -81,6 +88,12 @@ def SolverWrapI(fun, checkAccuracy=True, accuracyTol=1e-5):
|
|||||||
|
|
||||||
def __init__(self, A, **kwargs):
|
def __init__(self, A, **kwargs):
|
||||||
self.A = A
|
self.A = A
|
||||||
|
|
||||||
|
self.checkAccuracy = kwargs.get("checkAccuracy", checkAccuracy)
|
||||||
|
if kwargs.has_key("checkAccuracy"): del kwargs["checkAccuracy"]
|
||||||
|
self.accuracyTol = kwargs.get("accuracyTol", accuracyTol)
|
||||||
|
if kwargs.has_key("accuracyTol"): del kwargs["accuracyTol"]
|
||||||
|
|
||||||
self.kwargs = kwargs
|
self.kwargs = kwargs
|
||||||
|
|
||||||
def __mul__(self, b):
|
def __mul__(self, b):
|
||||||
@@ -108,8 +121,8 @@ def SolverWrapI(fun, checkAccuracy=True, accuracyTol=1e-5):
|
|||||||
else:
|
else:
|
||||||
X[:,i] = out
|
X[:,i] = out
|
||||||
|
|
||||||
if checkAccuracy:
|
if self.checkAccuracy:
|
||||||
_checkAccuracy(self.A, b, X, accuracyTol)
|
_checkAccuracy(self.A, b, X, self.accuracyTol)
|
||||||
return X
|
return X
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user