mirror of
https://github.com/wassname/simpeg.git
synced 2026-08-14 12:50:10 +08:00
mass matrices for anisotropic sigma
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import numpy as np
|
||||
import unittest
|
||||
import sys
|
||||
sys.path.append('../')
|
||||
from TensorMesh import TensorMesh
|
||||
from OrderTest import OrderTest
|
||||
from scipy.sparse.linalg import dsolve
|
||||
from getEdgeInnerProducts import getEdgeInnerProducts
|
||||
|
||||
|
||||
class TestNodalGrad(OrderTest):
|
||||
name = "Nodal Gradient"
|
||||
|
||||
meshSizes = [4, 8, 16, 32]
|
||||
|
||||
def getError(self):
|
||||
ex = lambda x, y, z: x**2+y*z
|
||||
ey = lambda x, y, z: (z**2)*x+y*z
|
||||
ez = lambda x, y, z: y**2+x*z
|
||||
|
||||
sigma1 = lambda x, y, z: x*y+1
|
||||
sigma2 = lambda x, y, z: x*z+2
|
||||
sigma3 = lambda x, y, z: 3+z*y
|
||||
sigma4 = lambda x, y, z: 0.1*x*y*z
|
||||
sigma5 = lambda x, y, z: 0.2*x*y
|
||||
sigma6 = lambda x, y, z: 0.1*z
|
||||
|
||||
Ex = ex(self.M.gridEx[:, 0],self.M.gridEx[:, 1],self.M.gridEx[:, 2])
|
||||
Ey = ey(self.M.gridEy[:, 0],self.M.gridEy[:, 1],self.M.gridEy[:, 2])
|
||||
Ez = ez(self.M.gridEz[:, 0],self.M.gridEz[:, 1],self.M.gridEz[:, 2])
|
||||
|
||||
E = np.r_[Ex,Ey,Ez]
|
||||
Gc = self.M.gridCC
|
||||
sigma = np.c_[sigma1(Gc[:,0],Gc[:,1],Gc[:,2]),
|
||||
sigma2(Gc[:,0],Gc[:,1],Gc[:,2]),
|
||||
sigma3(Gc[:,0],Gc[:,1],Gc[:,2]),
|
||||
sigma4(Gc[:,0],Gc[:,1],Gc[:,2]),
|
||||
sigma5(Gc[:,0],Gc[:,1],Gc[:,2]),
|
||||
sigma6(Gc[:,0],Gc[:,1],Gc[:,2])]
|
||||
|
||||
A = getEdgeInnerProducts(self.M, sigma)
|
||||
|
||||
err = np.abs(E.T*A*E - 69881./21600)
|
||||
|
||||
return err
|
||||
|
||||
def test_order(self):
|
||||
self.orderTest()
|
||||
Reference in New Issue
Block a user