def testNodes(self): # Test if node values are returned when the interpolating grid # is exactly along the nodes for i in range(lcgrid): cgrid[i] = i + 1 flag = fittogrid.fittogrid_func(datain, cgrid, interp, dataout, nthreads, 0) self.assertEqual(flag, 0) for i in range(lcgrid): self.assertAlmostEqual(dataout.GetVal(0, 0, i), datain.GetVal(0, 0, 0, i))
def testExtrap2(self): # Test if extrapolation caught and data is correctly extrapolated (extrap = off) for i in range(lcgrid - 2): cgrid[i+1] = i + 2 cgrid[0] = 0 cgrid[lcgrid-1] = 11 flag = fittogrid.fittogrid_func(datain, cgrid, interp, dataout, nthreads, 0) self.assertEqual(flag, 1) for i in range(lcgrid - 2): self.assertAlmostEqual(dataout.GetVal(0, 0, i+1), datain.GetVal(0, 0, 0, i+1)) self.assertEqual(dataout.GetVal(0, 0, 0), 0) self.assertEqual(dataout.GetVal(0, 0, lcgrid-1), 0)
def testExtrap2(self): # Test if extrapolation caught and data is correctly extrapolated (extrap = off) for i in range(lcgrid - 2): cgrid[i + 1] = i + 2 cgrid[0] = 0 cgrid[lcgrid - 1] = 11 flag = fittogrid.fittogrid_func(datain, cgrid, interp, dataout, nthreads, 0) self.assertEqual(flag, 1) for i in range(lcgrid - 2): self.assertAlmostEqual(dataout.GetVal(0, 0, i + 1), datain.GetVal(0, 0, 0, i + 1)) self.assertEqual(dataout.GetVal(0, 0, 0), 0) self.assertEqual(dataout.GetVal(0, 0, lcgrid - 1), 0)
# Fill cgrid with numbers for i in range(0, lcgrid): cgrid[i] = 2.5 + i / 2.0 # Print the input w~ and c~ dummy = "wc" for i in range(0, 2): print "%c~ is:" % dummy[i] for j in range(0, dim4): print "%6.3f" % datain.GetVal(i, 0, 0, j), print "" # Print cgrid print "cgrid is:" for i in range(0, lcgrid): print "%6.3f" % cgrid[i], print "" # Interpolate w~ along the cgrid flag = fittogrid.fittogrid_func(datain, cgrid, interp, dataout) if flag == 1: print "Interpolation failed: interpolation value out of bounds" exit() # Print w~ values interpolated along cgrid print "w~ inteprolated along cgrid is:" for i in range(0, lcgrid): print "%6.3f " % dataout.GetVal(0, 0, i), print ""
for i in range(0, lcgrid): cgrid[i] = 2.5 + i/2.0 # Print the input w~ and c~ dummy = "wc" for i in range(0, 2): print "%c~ is:" % dummy[i] for j in range(0, dim4): print "%6.3f" % datain.GetVal(i, 0, 0, j), print "" # Print cgrid print "cgrid is:" for i in range(0, lcgrid): print "%6.3f" % cgrid[i], print "" # Interpolate w~ along the cgrid flag = fittogrid.fittogrid_func(datain, cgrid, interp, dataout) if flag == 1: print "Interpolation failed: interpolation value out of bounds" exit() # Print w~ values interpolated along cgrid print "w~ inteprolated along cgrid is:" for i in range(0, lcgrid): print "%6.3f " % dataout.GetVal(0, 0, i), print ""
for k in range(ZvarPoints): if i == 0: datain.SetVal(i,j,k,l,convolutedST[l].GetVal(k,j)) if i == 1: datain.SetVal(i,j,k,l,convolutedC[l].GetVal(k,j)) # Run fit to grid and print results if options["gridextrapolate"][0] == 'yes': extrap = 1 print("WARNING: extrapolating to fit to cgrid (may take minutes)") elif options["gridextrapolate"][0] == 'no': extrap = 0 print("No extrapolation used to fit to grid") else: raise IOError ("must say <yes> or <no> for extrapolate in fittogrid:") f2gflag = fittogrid.fittogrid_func(datain, cgrid, interp, dataout, int(options["nothreads"][0]), extrap) FinalData = np.zeros((lcgrid, dim2, dim3)) f = open("".join(["output/",options["OutputFile"][0]]),'w') f.write('C \tZmean \tZvar \tSourceTerm \n') for j in range(lcgrid): for i in range(dim2): for k in range(dim3): FinalData[j,i,k] = dataout.GetVal(i,k,j) f.write('%8.5g\t %8.5g\t %8.5g\t %g\n' % (cgrid[j], Zmean[i], Zvar[k], FinalData[j,i,k])) f.close() print "\nFinal data written to file: output/%s" % options["OutputFile"][0] # Create contour plots of the chemical source term noplots = 10 if ZvarPoints > (noplots + 1): plots = range(noplots)
for k in range(ZvarPoints): if i == 0: datain.SetVal(i, j, k, l, convolutedST[l].GetVal(k, j)) if i == 1: datain.SetVal(i, j, k, l, convolutedC[l].GetVal(k, j)) # Run fit to grid and print results if options["gridextrapolate"][0] == 'yes': extrap = 1 print("WARNING: extrapolating to fit to cgrid (may take minutes)") elif options["gridextrapolate"][0] == 'no': extrap = 0 print("No extrapolation used to fit to grid") else: raise IOError("must say <yes> or <no> for extrapolate in fittogrid:") f2gflag = fittogrid.fittogrid_func(datain, cgrid, interp, dataout, int(options["nothreads"][0]), extrap) FinalData = np.zeros((lcgrid, dim2, dim3)) f = open("".join(["output/", options["OutputFile"][0]]), 'w') f.write('C \tZmean \tZvar \tSourceTerm \n') for j in range(lcgrid): for i in range(dim2): for k in range(dim3): FinalData[j, i, k] = dataout.GetVal(i, k, j) f.write('%8.5g\t %8.5g\t %8.5g\t %g\n' % (cgrid[j], Zmean[i], Zvar[k], FinalData[j, i, k])) f.close() print "\nFinal data written to file: output/%s" % options["OutputFile"][0] # Create contour plots of the chemical source term noplots = 10 if ZvarPoints > (noplots + 1):