diff --git a/SimPEG/mesh/DiffOperators.py b/SimPEG/mesh/DiffOperators.py index 756b9a48..b767ef31 100644 --- a/SimPEG/mesh/DiffOperators.py +++ b/SimPEG/mesh/DiffOperators.py @@ -264,10 +264,10 @@ class DiffOperators(object): if(self.dim == 1): self._aveF2CC = av(n[0]) elif(self.dim == 2): - self._aveF2CC = sp.hstack((sp.kron(speye(n[1]), av(n[0])), + self._aveF2CC = (0.5)*sp.hstack((sp.kron(speye(n[1]), av(n[0])), sp.kron(av(n[1]), speye(n[0]))), format="csr") elif(self.dim == 3): - self._aveF2CC = sp.hstack((kron3(speye(n[2]), speye(n[1]), av(n[0])), + self._aveF2CC = (1./3.)*sp.hstack((kron3(speye(n[2]), speye(n[1]), av(n[0])), kron3(speye(n[2]), av(n[1]), speye(n[0])), kron3(av(n[2]), speye(n[1]), speye(n[0]))), format="csr") return self._aveF2CC @@ -285,10 +285,10 @@ class DiffOperators(object): if(self.dim == 1): raise Exception('Edge Averaging does not make sense in 1D: Use Identity?') elif(self.dim == 2): - self._aveE2CC = sp.hstack((sp.kron(av(n[1]), speye(n[0])), + self._aveE2CC = 0.5*sp.hstack((sp.kron(av(n[1]), speye(n[0])), sp.kron(speye(n[1]), av(n[0]))), format="csr") elif(self.dim == 3): - self._aveE2CC = sp.hstack((kron3(av(n[2]), av(n[1]), speye(n[0])), + self._aveE2CC = (1./3)*sp.hstack((kron3(av(n[2]), av(n[1]), speye(n[0])), kron3(av(n[2]), speye(n[1]), av(n[0])), kron3(speye(n[2]), av(n[1]), av(n[0]))), format="csr") return self._aveE2CC @@ -314,26 +314,47 @@ class DiffOperators(object): _aveN2CC = None aveN2CC = property(**aveN2CC()) - def aveN2CCv(): - doc = "Construct the averaging operator on cell nodes to cell centers, keeping each dimension separate." + def aveN2E(): + doc = "Construct the averaging operator on cell nodes to cell edges, keeping each dimension separate." def fget(self): - if(self._aveN2CCv is None): + if(self._aveN2E is None): # The number of cell centers in each direction n = self.n if(self.dim == 1): - self._aveN2CCv = av(n[0]) + self._aveN2E = av(n[0]) elif(self.dim == 2): - self._aveN2CCv = sp.block_diag((sp.kron(speye(n[1]), av(n[0])), - sp.kron(av(n[1]), speye(n[0]))), format="csr") + self._aveN2E = sp.vstack((sp.kron(speye(n[1]+1), av(n[0])), + sp.kron(av(n[1]), speye(n[0]+1))), format="csr") elif(self.dim == 3): - self._aveN2CCv = sp.block_diag((kron3(speye(n[2]), speye(n[1]), av(n[0])), - kron3(speye(n[2]), av(n[1]), speye(n[0])), - kron3(av(n[2]), speye(n[1]), speye(n[0]))), format="csr") - return self._aveN2CCv + self._aveN2E = sp.vstack((kron3(speye(n[2]+1), speye(n[1]+1), av(n[0])), + kron3(speye(n[2]+1), av(n[1]), speye(n[0]+1)), + kron3(av(n[2]), speye(n[1]+1), speye(n[0]+1))), format="csr") + return self._aveN2E return locals() - _aveN2CCv = None - aveN2CCv = property(**aveN2CCv()) + _aveN2E = None + aveN2E = property(**aveN2E()) + + def aveN2F(): + doc = "Construct the averaging operator on cell nodes to cell faces, keeping each dimension separate." + + def fget(self): + if(self._aveN2F is None): + # The number of cell centers in each direction + n = self.n + if(self.dim == 1): + self._aveN2F = av(n[0]) + elif(self.dim == 2): + self._aveN2F = sp.vstack((sp.kron(av(n[1]), speye(n[0]+1)), + sp.kron(speye(n[1]+1), av(n[0]))), format="csr") + elif(self.dim == 3): + self._aveN2F = sp.vstack((kron3(av(n[2]), av(n[1]), speye(n[0]+1)), + kron3(av(n[2]), speye(n[1]+1), av(n[0])), + kron3(speye(n[2]+1), av(n[1]), av(n[0]))), format="csr") + return self._aveN2F + return locals() + _aveN2F = None + aveN2F = property(**aveN2F()) def getMass(self, materialProp=None, loc='e'): """ Produces mass matricies. diff --git a/SimPEG/mesh/LogicallyOrthogonalMesh.py b/SimPEG/mesh/LogicallyOrthogonalMesh.py index b510a754..5c4a73db 100644 --- a/SimPEG/mesh/LogicallyOrthogonalMesh.py +++ b/SimPEG/mesh/LogicallyOrthogonalMesh.py @@ -45,8 +45,7 @@ class LogicallyOrthogonalMesh(BaseMesh, DiffOperators, InnerProducts, LomView): def fget(self): if self._gridCC is None: - ccV = (self.aveN2CCv*mkvc(self.gridN)) - self._gridCC = ccV.reshape((-1, self.dim), order='F') + self._gridCC = np.concatenate([self.aveN2CC*self.gridN[:,i] for i in range(self.dim)]).reshape((-1,self.dim), order='F') return self._gridCC return locals() _gridCC = None # Store grid by default diff --git a/SimPEG/tests/test_LogicallyOrthogonalMesh.py b/SimPEG/tests/test_LogicallyOrthogonalMesh.py index 5f792c2f..d760e230 100644 --- a/SimPEG/tests/test_LogicallyOrthogonalMesh.py +++ b/SimPEG/tests/test_LogicallyOrthogonalMesh.py @@ -83,11 +83,15 @@ class BasicLOMTests(unittest.TestCase): self.assertTrue(np.all(self.LOM3.r(N, 'F', 'Fz', 'V')[2] == np.ones(self.LOM3.nFv[2]))) def test_grid(self): + self.assertTrue(np.all(self.LOM2.gridCC == self.TM2.gridCC)) + self.assertTrue(np.all(self.LOM2.gridN == self.TM2.gridN)) self.assertTrue(np.all(self.LOM2.gridFx == self.TM2.gridFx)) self.assertTrue(np.all(self.LOM2.gridFy == self.TM2.gridFy)) self.assertTrue(np.all(self.LOM2.gridEx == self.TM2.gridEx)) self.assertTrue(np.all(self.LOM2.gridEy == self.TM2.gridEy)) + self.assertTrue(np.all(self.LOM3.gridCC == self.TM3.gridCC)) + self.assertTrue(np.all(self.LOM3.gridN == self.TM3.gridN)) self.assertTrue(np.all(self.LOM3.gridFx == self.TM3.gridFx)) self.assertTrue(np.all(self.LOM3.gridFy == self.TM3.gridFy)) self.assertTrue(np.all(self.LOM3.gridFz == self.TM3.gridFz)) diff --git a/SimPEG/tests/test_operators.py b/SimPEG/tests/test_operators.py index 6906c580..26233626 100644 --- a/SimPEG/tests/test_operators.py +++ b/SimPEG/tests/test_operators.py @@ -155,6 +155,109 @@ class TestNodalGrad2D(OrderTest): def test_order(self): self.orderTest() +class TestAveraging2D(OrderTest): + name = "Averaging 2D" + meshTypes = MESHTYPES + meshDimension = 2 + + def getError(self): + num = self.getAve(self.M) * self.getHere(self.M) + err = np.linalg.norm((self.getThere(self.M)-num), np.inf) + return err + + def test_orderN2CC(self): + self.name = "Averaging 2D: N2CC" + fun = lambda x, y: (np.cos(x)+np.sin(y)) + self.getHere = lambda M: call2(fun, M.gridN) + self.getThere = lambda M: call2(fun, M.gridCC) + self.getAve = lambda M: M.aveN2CC + self.orderTest() + + def test_orderN2F(self): + self.name = "Averaging 2D: N2F" + fun = lambda x, y: (np.cos(x)+np.sin(y)) + self.getHere = lambda M: call2(fun, M.gridN) + self.getThere = lambda M: np.r_[call2(fun, M.gridFx), call2(fun, M.gridFy)] + self.getAve = lambda M: M.aveN2F + self.orderTest() + + def test_orderN2E(self): + self.name = "Averaging 2D: N2E" + fun = lambda x, y: (np.cos(x)+np.sin(y)) + self.getHere = lambda M: call2(fun, M.gridN) + self.getThere = lambda M: np.r_[call2(fun, M.gridEx), call2(fun, M.gridEy)] + self.getAve = lambda M: M.aveN2E + self.orderTest() + + def test_orderF2CC(self): + self.name = "Averaging 2D: F2CC" + fun = lambda x, y: (np.cos(x)+np.sin(y)) + self.getHere = lambda M: np.r_[call2(fun, M.gridFx), call2(fun, M.gridFy)] + self.getThere = lambda M: call2(fun, M.gridCC) + self.getAve = lambda M: M.aveF2CC + self.orderTest() + + + def test_orderE2CC(self): + self.name = "Averaging 2D: E2CC" + fun = lambda x, y: (np.cos(x)+np.sin(y)) + self.getHere = lambda M: np.r_[call2(fun, M.gridEx), call2(fun, M.gridEy)] + self.getThere = lambda M: call2(fun, M.gridCC) + self.getAve = lambda M: M.aveE2CC + self.orderTest() + + +class TestAveraging3D(OrderTest): + name = "Averaging 3D" + meshTypes = MESHTYPES + meshDimension = 3 + + def getError(self): + num = self.getAve(self.M) * self.getHere(self.M) + err = np.linalg.norm((self.getThere(self.M)-num), np.inf) + return err + + def test_orderN2CC(self): + self.name = "Averaging 3D: N2CC" + fun = lambda x, y, z: (np.cos(x)+np.sin(y)+np.exp(z)) + self.getHere = lambda M: call3(fun, M.gridN) + self.getThere = lambda M: call3(fun, M.gridCC) + self.getAve = lambda M: M.aveN2CC + self.orderTest() + + def test_orderN2F(self): + self.name = "Averaging 3D: N2F" + fun = lambda x, y, z: (np.cos(x)+np.sin(y)+np.exp(z)) + self.getHere = lambda M: call3(fun, M.gridN) + self.getThere = lambda M: np.r_[call3(fun, M.gridFx), call3(fun, M.gridFy), call3(fun, M.gridFz)] + self.getAve = lambda M: M.aveN2F + self.orderTest() + + def test_orderN2E(self): + self.name = "Averaging 3D: N2E" + fun = lambda x, y, z: (np.cos(x)+np.sin(y)+np.exp(z)) + self.getHere = lambda M: call3(fun, M.gridN) + self.getThere = lambda M: np.r_[call3(fun, M.gridEx), call3(fun, M.gridEy), call3(fun, M.gridEz)] + self.getAve = lambda M: M.aveN2E + self.orderTest() + + def test_orderF2CC(self): + self.name = "Averaging 3D: F2CC" + fun = lambda x, y, z: (np.cos(x)+np.sin(y)+np.exp(z)) + self.getHere = lambda M: np.r_[call3(fun, M.gridFx), call3(fun, M.gridFy), call3(fun, M.gridFz)] + self.getThere = lambda M: call3(fun, M.gridCC) + self.getAve = lambda M: M.aveF2CC + self.orderTest() + + + def test_orderE2CC(self): + self.name = "Averaging 3D: E2CC" + fun = lambda x, y, z: (np.cos(x)+np.sin(y)+np.exp(z)) + self.getHere = lambda M: np.r_[call3(fun, M.gridEx), call3(fun, M.gridEy), call3(fun, M.gridEz)] + self.getThere = lambda M: call3(fun, M.gridCC) + self.getAve = lambda M: M.aveE2CC + self.orderTest() + if __name__ == '__main__': unittest.main() diff --git a/docs/api_TestResults.rst b/docs/api_TestResults.rst index 77c553ac..8e432568 100644 --- a/docs/api_TestResults.rst +++ b/docs/api_TestResults.rst @@ -185,9 +185,9 @@ Test Results -->
-

Start Time: 2013-11-06 11:11:28

-

Duration: 0:00:31.165229

-

Status: Pass 99

+

Start Time: 2013-11-06 12:40:59

+

Duration: 0:00:32.198864

+

Status: Pass 108 Failure 1

SimPEG Test Report was automatically generated.

@@ -377,15 +377,15 @@ Test Results pt3.2: ==================== checkDerivative ==================== iter h |J0-Jt| |J0+h*dJ'*dx-Jt| Order --------------------------------------------------------- - 0 1.00e-01 3.539e+01 3.808e+01 nan - 1 1.00e-02 1.088e-01 3.784e-01 2.003 - 2 1.00e-03 2.318e-02 3.783e-03 2.000 - 3 1.00e-04 2.659e-03 3.782e-05 2.000 - 4 1.00e-05 2.693e-04 3.782e-07 2.000 - 5 1.00e-06 2.696e-05 3.787e-09 2.000 - 6 1.00e-07 2.696e-06 4.574e-11 1.918 + 0 1.00e-01 4.588e+01 2.799e+01 nan + 1 1.00e-02 2.072e+00 2.831e-01 1.995 + 2 1.00e-03 1.817e-01 2.835e-03 1.999 + 3 1.00e-04 1.792e-02 2.835e-05 2.000 + 4 1.00e-05 1.789e-03 2.835e-07 2.000 + 5 1.00e-06 1.789e-04 2.831e-09 2.001 + 6 1.00e-07 1.789e-05 2.124e-11 2.125 ========================= PASS! ========================= - You are awesome. + That was easy! @@ -414,13 +414,13 @@ Test Results pt3.3: ==================== checkDerivative ==================== iter h |J0-Jt| |J0+h*dJ'*dx-Jt| Order --------------------------------------------------------- - 0 1.00e-01 5.058e-02 4.612e-03 nan - 1 1.00e-02 5.059e-03 4.602e-05 2.001 - 2 1.00e-03 5.060e-04 4.600e-07 2.000 - 3 1.00e-04 5.060e-05 4.600e-09 2.000 - 4 1.00e-05 5.060e-06 4.600e-11 2.000 - 5 1.00e-06 5.060e-07 4.619e-13 1.998 - 6 1.00e-07 5.060e-08 4.783e-15 1.985 + 0 1.00e-01 9.439e-02 8.315e-03 nan + 1 1.00e-02 9.344e-03 8.324e-05 2.000 + 2 1.00e-03 2.787e+00 2.787e+00 -4.525 + 3 1.00e-04 9.336e-05 8.323e-09 8.525 + 4 1.00e-05 9.336e-06 8.323e-11 2.000 + 5 1.00e-06 9.336e-07 8.335e-13 1.999 + 6 1.00e-07 9.336e-08 9.031e-15 1.965 ========================= PASS! ========================= You are awesome. @@ -451,13 +451,13 @@ Test Results pt3.4: ==================== checkDerivative ==================== iter h |J0-Jt| |J0+h*dJ'*dx-Jt| Order --------------------------------------------------------- - 0 1.00e-01 7.509e+00 7.507e+00 nan - 1 1.00e-02 7.529e-02 7.507e-02 2.000 - 2 1.00e-03 7.725e-04 7.507e-04 2.000 - 3 1.00e-04 9.680e-06 7.507e-06 2.000 - 4 1.00e-05 2.924e-07 7.507e-08 2.000 - 5 1.00e-06 2.248e-08 7.507e-10 2.000 - 6 1.00e-07 2.181e-09 7.507e-12 2.000 + 0 1.00e-01 8.866e+00 8.270e+00 nan + 1 1.00e-02 1.423e-01 8.270e-02 2.000 + 2 1.00e-03 6.787e-03 8.270e-04 2.000 + 3 1.00e-04 6.042e-04 8.270e-06 2.000 + 4 1.00e-05 5.968e-05 8.270e-08 2.000 + 5 1.00e-06 5.960e-06 8.270e-10 2.000 + 6 1.00e-07 5.960e-07 8.271e-12 2.000 ========================= PASS! ========================= Testing is important. @@ -498,15 +498,15 @@ Test Results ==================== checkDerivative ==================== iter h |J0-Jt| |J0+h*dJ'*dx-Jt| Order --------------------------------------------------------- - 0 1.00e-01 2.750e-01 6.208e-17 nan - 1 1.00e-02 2.750e-02 6.731e-17 -0.035 - 2 1.00e-03 2.750e-03 6.483e-17 0.016 - 3 1.00e-04 2.750e-04 5.624e-17 0.062 - 4 1.00e-05 2.750e-05 6.905e-17 -0.089 - 5 1.00e-06 2.750e-06 3.779e-17 0.262 - 6 1.00e-07 2.750e-07 5.028e-17 -0.124 + 0 1.00e-01 2.817e-01 5.296e-17 nan + 1 1.00e-02 2.817e-02 6.505e-17 -0.089 + 2 1.00e-03 2.817e-03 4.768e-17 0.135 + 3 1.00e-04 2.817e-04 5.112e-17 -0.030 + 4 1.00e-05 2.817e-05 7.422e-17 -0.162 + 5 1.00e-06 2.817e-06 8.012e-17 -0.033 + 6 1.00e-07 2.817e-07 4.930e-17 0.211 ========================= PASS! ========================= - The test be workin! + Once upon a time, a happy little test passed. @@ -535,15 +535,15 @@ Test Results pt4.2: ==================== checkDerivative ==================== iter h |J0-Jt| |J0+h*dJ'*dx-Jt| Order --------------------------------------------------------- - 0 1.00e-01 5.097e-01 3.406e-02 nan - 1 1.00e-02 4.790e-02 3.406e-04 2.000 - 2 1.00e-03 4.760e-03 3.406e-06 2.000 - 3 1.00e-04 4.757e-04 3.406e-08 2.000 - 4 1.00e-05 4.756e-05 3.406e-10 2.000 - 5 1.00e-06 4.756e-06 3.409e-12 2.000 - 6 1.00e-07 4.756e-07 3.712e-14 1.963 + 0 1.00e-01 4.194e-01 8.200e-02 nan + 1 1.00e-02 3.456e-02 8.200e-04 2.000 + 2 1.00e-03 3.382e-03 8.200e-06 2.000 + 3 1.00e-04 3.375e-04 8.200e-08 2.000 + 4 1.00e-05 3.374e-05 8.200e-10 2.000 + 5 1.00e-06 3.374e-06 8.204e-12 2.000 + 6 1.00e-07 3.374e-07 8.252e-14 1.997 ========================= PASS! ========================= - Once upon a time, a happy little test passed. + Testing is important. @@ -584,21 +584,21 @@ Test Results h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ 8 | 2.73e-01 | - 16 | 7.43e-02 | 3.6706 | 1.8760 - 32 | 1.68e-02 | 4.4243 | 2.1454 + 16 | 7.11e-02 | 3.8392 | 1.9408 + 32 | 1.56e-02 | 4.5463 | 2.1847 --------------------------------------------- - That was easy! + You get a gold star! randomTensorMesh: Interpolation 1D: CC _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 4.10e-01 | - 16 | 1.03e-01 | 3.9943 | 2.3138 - 32 | 2.38e-02 | 4.3129 | 2.1747 + 8 | 2.38e-01 | + 16 | 9.97e-02 | 2.3888 | 1.3742 + 32 | 3.33e-02 | 2.9985 | 1.6242 --------------------------------------------- - Go Test Go! + Yay passed! @@ -629,9 +629,9 @@ Test Results _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 2.67e-01 | - 16 | 6.20e-02 | 4.3031 | 2.1054 - 32 | 1.74e-02 | 3.5710 | 1.8363 + 8 | 2.22e-01 | + 16 | 5.39e-02 | 4.1229 | 2.0437 + 32 | 1.59e-02 | 3.3980 | 1.7647 --------------------------------------------- That was easy! @@ -640,11 +640,11 @@ Test Results _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 5.93e-01 | - 16 | 6.78e-02 | 8.7462 | 3.4908 - 32 | 3.76e-02 | 1.8044 | 0.9007 + 8 | 4.51e-01 | + 16 | 9.69e-02 | 4.6544 | 2.0364 + 32 | 4.23e-02 | 2.2891 | 1.9120 --------------------------------------------- - You get a gold star! + And then everyone was happy. @@ -655,11 +655,11 @@ Test Results - + test_interpolation.TestInterpolation2d 6 - 6 - 0 + 5 + 1 0 Detail @@ -684,24 +684,24 @@ Test Results _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 7.05e-02 | - 16 | 1.77e-02 | 3.9862 | 1.9950 - 32 | 4.41e-03 | 4.0153 | 2.0055 - 64 | 1.17e-03 | 3.7677 | 1.9137 + 8 | 7.61e-02 | + 16 | 1.92e-02 | 3.9713 | 1.9896 + 32 | 4.75e-03 | 4.0298 | 2.0107 + 64 | 1.14e-03 | 4.1621 | 2.0573 --------------------------------------------- - The test be workin! + You get a gold star! randomTensorMesh: Interpolation 2D: CC _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 1.89e-01 | - 16 | 4.17e-02 | 4.5168 | 1.7836 - 32 | 9.85e-03 | 4.2370 | 3.1893 - 64 | 2.20e-03 | 4.4807 | 2.0262 + 8 | 1.54e-01 | + 16 | 3.87e-02 | 3.9740 | 2.8437 + 32 | 7.65e-03 | 5.0512 | 2.1271 + 64 | 3.67e-03 | 2.0838 | 0.9869 --------------------------------------------- - And then everyone was happy. + Testing is important. @@ -732,24 +732,24 @@ Test Results _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 7.03e-02 | - 16 | 1.71e-02 | 4.1134 | 2.0403 - 32 | 4.76e-03 | 3.5912 | 1.8445 - 64 | 1.12e-03 | 4.2361 | 2.0827 + 8 | 6.94e-02 | + 16 | 1.84e-02 | 3.7623 | 1.9116 + 32 | 4.71e-03 | 3.9144 | 1.9688 + 64 | 1.17e-03 | 4.0345 | 2.0124 --------------------------------------------- - You are awesome. + And then everyone was happy. randomTensorMesh: Interpolation 2D: Ex _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 1.56e-01 | - 16 | 3.08e-02 | 5.0805 | 2.2001 - 32 | 1.55e-02 | 1.9870 | 1.1651 - 64 | 2.69e-03 | 5.7523 | 2.4072 + 8 | 1.24e-01 | + 16 | 3.44e-02 | 3.6027 | 2.3303 + 32 | 1.47e-02 | 2.3355 | 1.0793 + 64 | 4.05e-03 | 3.6347 | 2.3831 --------------------------------------------- - Happy little convergence test! + And then everyone was happy. @@ -780,24 +780,24 @@ Test Results _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 7.02e-02 | - 16 | 1.72e-02 | 4.0871 | 2.0311 - 32 | 4.79e-03 | 3.5869 | 1.8427 - 64 | 1.14e-03 | 4.2023 | 2.0712 + 8 | 7.03e-02 | + 16 | 1.88e-02 | 3.7352 | 1.9012 + 32 | 4.77e-03 | 3.9519 | 1.9826 + 64 | 1.20e-03 | 3.9618 | 1.9862 --------------------------------------------- - Go Test Go! + The test be workin! randomTensorMesh: Interpolation 2D: Ey _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 1.31e-01 | - 16 | 2.59e-02 | 5.0781 | 5.2443 - 32 | 1.23e-02 | 2.0999 | 0.8534 - 64 | 3.11e-03 | 3.9548 | 2.0421 + 8 | 2.09e-01 | + 16 | 4.41e-02 | 4.7441 | 1.6758 + 32 | 1.04e-02 | 4.2565 | 2.2490 + 64 | 2.73e-03 | 3.8032 | 2.2280 --------------------------------------------- - You are awesome. + Yay passed! @@ -828,24 +828,24 @@ Test Results _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 7.05e-02 | - 16 | 1.77e-02 | 3.9862 | 1.9950 - 32 | 4.41e-03 | 4.0153 | 2.0055 - 64 | 1.17e-03 | 3.7677 | 1.9137 + 8 | 7.61e-02 | + 16 | 1.92e-02 | 3.9713 | 1.9896 + 32 | 4.75e-03 | 4.0298 | 2.0107 + 64 | 1.14e-03 | 4.1621 | 2.0573 --------------------------------------------- - You are awesome. + The test be workin! randomTensorMesh: Interpolation 2D: Fx _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 9.96e-02 | - 16 | 1.73e-02 | 5.7675 | 2.0865 - 32 | 1.01e-02 | 1.7044 | 1.2299 - 64 | 2.77e-03 | 3.6586 | 1.7076 + 8 | 1.34e-01 | + 16 | 2.08e-02 | 6.4246 | 3.1408 + 32 | 9.86e-03 | 2.1089 | 1.1456 + 64 | 2.32e-03 | 4.2458 | 1.9464 --------------------------------------------- - Happy little convergence test! + Yay passed! @@ -876,24 +876,24 @@ Test Results _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 7.59e-02 | - 16 | 1.90e-02 | 3.9961 | 1.9986 - 32 | 4.59e-03 | 4.1347 | 2.0478 - 64 | 1.20e-03 | 3.8324 | 1.9383 + 8 | 7.50e-02 | + 16 | 1.81e-02 | 4.1461 | 2.0517 + 32 | 4.70e-03 | 3.8447 | 1.9429 + 64 | 1.17e-03 | 4.0103 | 2.0037 --------------------------------------------- - Testing is important. + Happy little convergence test! randomTensorMesh: Interpolation 2D: Fy _____________________________________________ h | error | e(i-1)/e(i) | order ~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~~~~|~~~~~~~~~~ - 8 | 3.03e-01 | - 16 | 4.25e-02 | 7.1320 | 1.7548 - 32 | 1.32e-02 | 3.2231 | 1.6324 - 64 | 3.93e-03 | 3.3594 | 1.7875 + 8 | 7.60e-02 | + 16 | 3.01e-02 | 2.5304 | 1.4734 + 32 | 1.20e-02 | 2.5084 | 1.0636 + 64 | 2.94e-03 | 4.0744 | 1.9937 --------------------------------------------- - Once upon a time, a happy little test passed. + You get a gold star! @@ -904,45 +904,52 @@ Test Results - -
test_orderN
+ +
test_orderN
- - pass + + fail -