diff --git a/code/pycompact/pycompact.py b/code/pycompact/pycompact.py index 59e04c6..dae1419 100644 --- a/code/pycompact/pycompact.py +++ b/code/pycompact/pycompact.py @@ -114,9 +114,9 @@ class CompactScheme: dx_fortran = compact.rhs1np(self.hx, x) - print (np.linalg.norm((dx - dx_fortran) / dx_fortran)) - print (((dx - dx_fortran) / dx_fortran).min()) - print (((dx - dx_fortran) / dx_fortran).max()) + print ("RelError Norm: ", np.linalg.norm((dx - dx_fortran) / dx_fortran)) + print ("RelError Min : ", ((dx - dx_fortran) / dx_fortran).min()) + print ("RelError Min : ", ((dx - dx_fortran) / dx_fortran).max()) @@ -130,16 +130,14 @@ class CompactScheme: compact.tdslv(dx_fortran,l1) print ("dx - exact") - print (np.linalg.norm((dx - exact) / exact)) - - print (((dx - exact) / exact).min()) - print (((dx - exact) / exact).max()) + print ("RelError Norm: ", np.linalg.norm((dx - exact) / exact)) + print ("RelError Min : ", ((dx - exact) / exact).min()) + print ("RelError Min : ", ((dx - exact) / exact).max()) print ("dx_fortran - exact") - print (np.linalg.norm((dx_fortran - exact) / exact)) - - print (((dx_fortran - exact) / exact).min()) - print (((dx_fortran - exact) / exact).max()) + print ("RelError Norm: ", np.linalg.norm((dx_fortran - exact) / exact)) + print ("RelError Min : ", ((dx_fortran - exact) / exact).min()) + print ("RelError Min : ", ((dx_fortran - exact) / exact).max()) ''' import pprint @@ -165,7 +163,7 @@ class CompactScheme: coef_verify = self.py_stdlu(aa) - print (np.linalg.norm((coef - coef_verify)/coef_verify)) + print ("RelError Norm: ", np.linalg.norm((coef - coef_verify)/coef_verify)) def verify_nonp_lud2(self): @@ -183,7 +181,7 @@ class CompactScheme: coef_verify = self.py_stdlu(aa) - print (np.linalg.norm((coef - coef_verify)/coef_verify)) + print ("RelError Norm: ", np.linalg.norm((coef - coef_verify)/coef_verify)) def py_stdlu(self, aa): @@ -211,13 +209,11 @@ class CompactScheme: if self.px: # Periodic BC for i in range(nz): - xsrc[:] = src[i] - dst[i] = compact.dfp(self.hx, xsrc, 1) + dst[i] = compact.dfp(self.hx, src[i], 1) else: for i in range(nz): - xsrc[:] = src[i] - dst[i] = compact.dfnonp(self.hx, xsrc, 1) + dst[i] = compact.dfnonp(self.hx, src[i], 1) # return np.swapaxes(dst, 1, 2) return dst @@ -236,13 +232,11 @@ class CompactScheme: if self.py: # Periodic BC for i in range(nz): - xysrc = src[i].reshape(-1).reshape((nx,ny), order='F') - dst[i] = compact.dfp(self.hx, xysrc, 2).reshape(-1).reshape((ny,nx), order='C') + dst[i] = compact.dfp(self.hx, src[i].T, 2).T else: for i in range(nz): - xysrc = src[i].reshape(-1).reshape((nx,ny), order='F') - dst[i] = compact.dfnonp(self.hx, xysrc, 2).reshape(-1).reshape((ny,nx), order='C') + dst[i] = compact.dfnonp(self.hx, src[i].T, 2).T # return np.swapaxes(dst, 1, 2) return dst @@ -254,20 +248,17 @@ class CompactScheme: nz, ny, nx = self.shape - xsrc = np.zeros((nz, nx,), dtype=np.float64) # , order="F") # dst = np.zeros((nx, ny, nz,), order="F") dst = np.zeros((nz, ny, nx,), dtype=np.float64,) if self.pz: # Periodic BC for i in range(ny): - xsrc[:] = src[:,i,:] - dst[i] = compact.dfp(self.hx, xsrc, 3) + dst[:,i,:] = compact.dfp(self.hx, src[:,i,:], 3) else: for i in range(ny): - xsrc[:] = src[:,i,:] - dst[i] = compact.dfnonp(self.hx, xsrc, 3) + dst[:,i,:] = compact.dfnonp(self.hx, src[:,i,:], 3) # return np.swapaxes(dst, 1, 2) return dst @@ -377,14 +368,8 @@ def read_data (fname): V = np.fromfile(f1, dtype=np.float64, count=(3*count)).reshape((3,nz,ny,nx)) s = np.fromfile(f1, dtype=np.float64, count=(2*count)).reshape((2,nz,ny,nx)) - print (V.order) - print (s.order) - - print (V.shape) - print (s.shape) - - V.order="F" - s.order="F" + print (V.flags) + print (s.flags) print (V.shape) print (s.shape) @@ -443,11 +428,11 @@ def validate_trigonometric(): cos_fortran = compact.dfnonp(hxp, np.sin(1.1*XX).reshape((1,-1)), 1) cos_exact = 1.1 * np.cos(1.1*XX).reshape((1,-1)) - print (cos_fortran.min(), cos_fortran.max()) + print ("Compact Scheme: ", cos_fortran.min(), cos_fortran.max()) - print (cos_exact.min(), cos_exact.max()) + print ("Exact : ",cos_exact.min(), cos_exact.max()) - print (np.linalg.norm((cos_fortran - cos_exact)/cos_exact)) + print ("Norm of relative errors: ", np.linalg.norm((cos_fortran - cos_exact)/cos_exact)) # print (((cos_fortran - cos_exact)/cos_exact)) @@ -510,30 +495,26 @@ def validate_trigonometric(): def test_dns_data(): import sys - file_name = sys.argv[1] + file_name = "./fort.1000" - t, nx, ny, nz, u, v, w, Y0, Y1 = read_data(file_name) + answer = "export-ddxc.dat" + + t, nx, ny, nz, u, v, w, Y0, Y1 = read_data(file_name) + + ddx_answer = np.fromfile(answer, dtype=np.float64, count=Y1.size).reshape(Y1.shape) cs = CompactScheme(nx, ny, nz, False, True, True, 4, 2, 2) - y = np.memmap("yr", dtype=np.float64, mode="w+", shape=cs.shape) - - y[:] = Y1[:] + ddx = cs.ddx(1.-Y1) - print (y.min(), y.max()) - - dydx = np.memmap("dyr", dtype=np.float64, mode="w+", shape=cs.shape) - - dydx[:] = cs.ddx(Y1)[:] - - dydx.flush() - - print (dydx.min(), dydx.max()) + print (ddx.min(), ddx.max()) + print (ddx_answer.min(), ddx_answer.max()) if __name__ == "__main__": validate_trigonometric() - # test_dns_data() + + test_dns_data()