From 6fcd826673bcbfc866541ea1a1a1141856a2f3b2 Mon Sep 17 00:00:00 2001 From: D Fournier Date: Wed, 20 Jan 2016 14:23:42 -0800 Subject: [PATCH] Start branch for regularization Add LinearSurvey Add LinearProblem --- SimPEG/Problem.py | 15 +++++++++++++++ SimPEG/Survey.py | 9 ++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/SimPEG/Problem.py b/SimPEG/Problem.py index 607cff5b..4d257fd8 100644 --- a/SimPEG/Problem.py +++ b/SimPEG/Problem.py @@ -213,5 +213,20 @@ class BaseTimeProblem(BaseProblem): if hasattr(self, '_timeMesh'): del self._timeMesh +class LinearProblem(BaseProblem): + + surveyPair = Survey.LinearSurvey + def __init__(self, mesh, G, **kwargs): + Problem.BaseProblem.__init__(self, mesh, **kwargs) + self.G = G + + def fields(self, m): + return self.G.dot(m) + + def Jvec(self, m, v, u=None): + return self.G.dot(v) + + def Jtvec(self, m, v, u=None): + return self.G.T.dot(v) diff --git a/SimPEG/Survey.py b/SimPEG/Survey.py index 88355df1..98a44ee3 100644 --- a/SimPEG/Survey.py +++ b/SimPEG/Survey.py @@ -1,6 +1,5 @@ import Utils, numpy as np, scipy.sparse as sp, uuid - class BaseRx(object): """SimPEG Receiver Object""" @@ -374,3 +373,11 @@ class BaseSurvey(object): self.dobs = self.dtrue+noise self.std = self.dobs*0 + std return self.dobs + +class LinearSurvey(BaseSurvey): + def projectFields(self, u): + return u + + @property + def nD(self): + return self.prob.G.shape[1]