mirror of
https://github.com/wassname/simpeg.git
synced 2026-07-07 21:02:27 +08:00
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
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()
|