mirror of
https://github.com/wassname/simpeg.git
synced 2026-07-10 07:00:42 +08:00
light notation clean up
This commit is contained in:
+14
-49
@@ -67,37 +67,28 @@ class BaseFDEMProblem(BaseEMProblem):
|
||||
Jv = self.dataPair(self.survey)
|
||||
|
||||
for freq in self.survey.freqs:
|
||||
dA_du = self.getA(freq) #
|
||||
dA_duI = self.Solver(dA_du, **self.solverOpts)
|
||||
A = self.getA(freq) #
|
||||
Ainv = self.Solver(A, **self.solverOpts)
|
||||
|
||||
for src in self.survey.getSrcByFreq(freq):
|
||||
ftype = self._fieldType + 'Solution'
|
||||
u_src = f[src, ftype]
|
||||
dA_dm = self.getADeriv_m(freq, u_src, v)
|
||||
dRHS_dm = self.getRHSDeriv_m(freq, src, v)
|
||||
# if dRHS_dm is None:
|
||||
# du_dm = dA_duI * ( - dA_dm )
|
||||
# else:
|
||||
du_dm = dA_duI * ( - dA_dm + dRHS_dm )
|
||||
du_dm = Ainv * ( - dA_dm + dRHS_dm )
|
||||
|
||||
|
||||
for rx in src.rxList:
|
||||
# df_duFun = u.deriv_u(rx.fieldsUsed, m)
|
||||
df_duFun = getattr(f, '_%sDeriv_u'%rx.projField, None)
|
||||
df_du = df_duFun(src, du_dm, adjoint=False)
|
||||
# if df_du is not None:
|
||||
|
||||
du_dm = df_du
|
||||
df_dudu_dm = df_duFun(src, du_dm, adjoint=False)
|
||||
|
||||
df_dmFun = getattr(f, '_%sDeriv_m'%rx.projField, None)
|
||||
df_dm = df_dmFun(src, v, adjoint=False)
|
||||
# if df_dm is not None:
|
||||
|
||||
du_dm += df_dm
|
||||
|
||||
Df_Dm = np.array(df_dudu_dm + df_dm,dtype=complex)
|
||||
|
||||
P = lambda v: rx.projectFieldsDeriv(src, self.mesh, f, v) # wrt u, also have wrt m
|
||||
|
||||
Jv[src, rx] = P(du_dm)
|
||||
Jv[src, rx] = P(Df_Dm)
|
||||
|
||||
return Utils.mkvc(Jv)
|
||||
|
||||
@@ -130,23 +121,16 @@ class BaseFDEMProblem(BaseEMProblem):
|
||||
|
||||
df_duTFun = getattr(f, '_%sDeriv_u'%rx.projField, None)
|
||||
df_duT = df_duTFun(src, PTv, adjoint=True)
|
||||
# if df_duT is not None:
|
||||
dA_duIT = ATinv * df_duT
|
||||
# else:
|
||||
# dA_duIT = ATinv * PTv
|
||||
|
||||
ATinvdf_duT = ATinv * df_duT
|
||||
|
||||
dA_dmT = self.getADeriv_m(freq, u_src, dA_duIT, adjoint=True)
|
||||
|
||||
dRHS_dmT = self.getRHSDeriv_m(freq,src, dA_duIT, adjoint=True)
|
||||
|
||||
# if dRHS_dmT is None:
|
||||
# du_dmT = - dA_dmT
|
||||
# else:
|
||||
dA_dmT = self.getADeriv_m(freq, u_src, ATinvdf_duT, adjoint=True)
|
||||
dRHS_dmT = self.getRHSDeriv_m(freq,src, ATinvdf_duT, adjoint=True)
|
||||
du_dmT = -dA_dmT + dRHS_dmT
|
||||
|
||||
df_dmFun = getattr(f, '_%sDeriv_m'%rx.projField, None)
|
||||
dfT_dm = df_dmFun(src, PTv, adjoint=True)
|
||||
# if dfT_dm is not None:
|
||||
|
||||
du_dmT += dfT_dm
|
||||
|
||||
real_or_imag = rx.projComp
|
||||
@@ -379,43 +363,27 @@ class ProblemFDEM_b(BaseFDEMProblem):
|
||||
C = self.mesh.edgeCurl
|
||||
S_m, S_e = src.eval(self)
|
||||
MfMui = self.MfMui
|
||||
# Me = self.Me
|
||||
|
||||
if self._makeASymmetric and adjoint:
|
||||
v = self.MfMui * v
|
||||
|
||||
# if S_e is not None:
|
||||
MeSigmaIDeriv = self.MeSigmaIDeriv(S_e)
|
||||
if not adjoint:
|
||||
RHSderiv = C * (MeSigmaIDeriv * v)
|
||||
elif adjoint:
|
||||
RHSderiv = MeSigmaIDeriv.T * (C.T * v)
|
||||
# else:
|
||||
# RHSderiv = None
|
||||
|
||||
S_mDeriv, S_eDeriv = src.evalDeriv(self, adjoint)
|
||||
S_mDeriv, S_eDeriv = S_mDeriv(v), S_eDeriv(v)
|
||||
# if S_mDeriv is not None and S_eDeriv is not None:
|
||||
|
||||
if not adjoint:
|
||||
SrcDeriv = S_mDeriv + C * (self.MeSigmaI * S_eDeriv)
|
||||
elif adjoint:
|
||||
SrcDeriv = S_mDeriv + self.MeSigmaI.T * ( C.T * S_eDeriv)
|
||||
# elif S_mDeriv is not None:
|
||||
# SrcDeriv = S_mDeriv
|
||||
# elif S_eDeriv is not None:
|
||||
# if not adjoint:
|
||||
# SrcDeriv = C * (self.MeSigmaI * S_eDeriv)
|
||||
# elif adjoint:
|
||||
# SrcDeriv = self.MeSigmaI.T * ( C.T * S_eDeriv)
|
||||
# else:
|
||||
# SrcDeriv = None
|
||||
|
||||
# if RHSderiv is not None and SrcDeriv is not None:
|
||||
print RHSderiv, SrcDeriv
|
||||
RHSderiv += SrcDeriv
|
||||
# elif SrcDeriv is not None:
|
||||
# RHSderiv = SrcDeriv
|
||||
|
||||
# if RHSderiv is not None:
|
||||
if self._makeASymmetric is True and not adjoint:
|
||||
return MfMui.T * RHSderiv
|
||||
|
||||
@@ -635,9 +603,6 @@ class ProblemFDEM_h(BaseFDEMProblem):
|
||||
C = self.mesh.edgeCurl
|
||||
MfRho = self.MfRho
|
||||
|
||||
# RHSDeriv = Zero()
|
||||
|
||||
# if S_e is not None:
|
||||
MfRhoDeriv = self.MfRhoDeriv(S_e)
|
||||
if not adjoint:
|
||||
RHSDeriv = C.T * (MfRhoDeriv * v)
|
||||
|
||||
Reference in New Issue
Block a user