Regularization now just takes a model. (The mesh can be attached to the model.)

This commit is contained in:
rowanc1
2014-01-24 08:37:47 -07:00
parent 56dc9a5591
commit 18476e53c2
2 changed files with 7 additions and 6 deletions
+5 -5
View File
@@ -14,15 +14,13 @@ class BaseRegularization(object):
modelPair = Model.BaseModel #: Some regularizations only work on specific models
mesh = None #: A SimPEG.Mesh instance.
model = None #: A SimPEG.Model instance.
counter = None
def __init__(self, mesh, model, **kwargs):
def __init__(self, model, **kwargs):
Utils.setKwargs(self, **kwargs)
assert isinstance(model, self.modelPair), "Incorrect model for this regularization"
self.mesh = mesh
self.model = model
mref = Utils.ParameterProperty('mref', default=None, doc='Reference model.')
@@ -49,6 +47,8 @@ class BaseRegularization(object):
def prob(self): return self.parent.prob
@property
def data(self): return self.parent.data
@property
def mesh(self): return self.model.mesh
@property
@@ -193,8 +193,8 @@ class Tikhonov(BaseRegularization):
alpha_yy = Utils.dependentProperty('_alpha_yy', 0.0, ['_W', '_Wyy'], "Weight for the second derivative in the y direction")
alpha_zz = Utils.dependentProperty('_alpha_zz', 0.0, ['_W', '_Wzz'], "Weight for the second derivative in the z direction")
def __init__(self, mesh, model, **kwargs):
BaseRegularization.__init__(self, mesh, model, **kwargs)
def __init__(self, model, **kwargs):
BaseRegularization.__init__(self, model, **kwargs)
@property
def Ws(self):
+2 -1
View File
@@ -20,8 +20,9 @@ class RegularizationTests(unittest.TestCase):
# if 'Regularization' not in R: continue
print 'Check:', R
model = r.modelPair(self.mesh2)
reg = r(self.mesh2, model)
reg = r(model)
m = model.example()
reg.mref = model.example()*0
passed = checkDerivative(lambda m : [reg.modelObj(m), reg.modelObjDeriv(m)], m, plotIt=False)
self.assertTrue(passed)