diff --git a/interfaces/cython/cantera/test/test_onedim.py b/interfaces/cython/cantera/test/test_onedim.py index 79918e11f..4a3ad305d 100644 --- a/interfaces/cython/cantera/test/test_onedim.py +++ b/interfaces/cython/cantera/test/test_onedim.py @@ -1,5 +1,6 @@ import cantera as ct from . import utilities +import numpy as np import os @@ -121,6 +122,7 @@ class TestFreeFlame(utilities.CanteraTest): for rhou_j in self.sim.density * self.sim.u: self.assertNear(rhou_j, rhou, 1e-4) + # @utilities.unittest.skip('sometimes slow') def test_multicomponent(self): reactants= 'H2:1.1, O2:1, AR:5.3' p = ct.OneAtm @@ -218,3 +220,81 @@ class TestFreeFlame(utilities.CanteraTest): for attr in ct.FlameBase.__dict__: if isinstance(ct.FlameBase.__dict__[attr], property): getattr(self.sim, attr) + + +class TestDiffusionFlame(utilities.CanteraTest): + referenceFile = '../data/DiffusionFlameTest-h2-mix.csv' + # Note: to re-create the reference file: + # (1) set PYTHONPATH to build/python2 or build/python3. + # (2) Start Python in the test/work directory and run: + # >>> import cantera.test + # >>> t = cantera.test.test_onedim.TestDiffusionFlame("test_mixture_averaged") + # >>> t.test_mixture_averaged(True) + + def create_sim(self, p, fuel='H2:1.0, AR:1.0', T_fuel=300, mdot_fuel=0.24, + oxidizer='O2:0.2, AR:0.8', T_ox=300, mdot_ox=0.72): + + initial_grid = initial_grid = np.linspace(0, 0.02, 6) # m + tol_ss = [1.0e-5, 1.0e-12] # [rtol, atol] for steady-state problem + tol_ts = [5.0e-4, 1.0e-9] # [rtol, atol] for time stepping + + # IdealGasMix object used to compute mixture properties + self.gas = ct.Solution('h2o2.xml', 'ohmech') + self.gas.TP = T_fuel, p + + # Flame object + self.sim = ct.CounterflowDiffusionFlame(self.gas, initial_grid) + self.sim.flame.setSteadyTolerances(default=tol_ss) + self.sim.flame.setTransientTolerances(default=tol_ts) + + # Set properties of the fuel and oxidizer mixtures + self.sim.fuel_inlet.mdot = mdot_fuel + self.sim.fuel_inlet.X = fuel + self.sim.fuel_inlet.T = T_fuel + + self.sim.oxidizer_inlet.mdot = mdot_ox + self.sim.oxidizer_inlet.X = oxidizer + self.sim.oxidizer_inlet.T = T_ox + + self.sim.setInitialGuess(fuel='H2') + + def solve_fixed_T(self): + # Solve with the energy equation disabled + self.sim.energyEnabled = False + self.sim.solve(loglevel=0, refine_grid=False) + + self.assertFalse(self.sim.energyEnabled) + + def solve_mix(self, ratio=3.0, slope=0.1, curve=0.12, prune=0.0): + # Solve with the energy equation enabled + + self.sim.setRefineCriteria(ratio=ratio, slope=slope, curve=curve, prune=prune) + self.sim.energyEnabled = True + self.sim.solve(loglevel=0, refine_grid=True) + + self.assertTrue(self.sim.energyEnabled) + self.assertEqual(self.sim.transportModel, 'Mix') + + def test_mixture_averaged(self, saveReference=False): + self.create_sim(p=ct.OneAtm) + + nPoints = len(self.sim.grid) + Tfixed = self.sim.T + self.solve_fixed_T() + self.assertEqual(nPoints, len(self.sim.grid)) + self.assertArrayNear(Tfixed, self.sim.T) + + self.solve_mix() + data = np.empty((self.sim.flame.nPoints, self.gas.nSpecies + 4)) + data[:,0] = self.sim.grid + data[:,1] = self.sim.u + data[:,2] = self.sim.V + data[:,3] = self.sim.T + data[:,4:] = self.sim.Y.T + + if saveReference: + np.savetxt(self.referenceFile, data, '%11.6e', ', ') + else: + bad = utilities.compareProfiles(self.referenceFile, data, + rtol=1e-2, atol=1e-8, xtol=1e-2) + self.assertFalse(bad, bad) diff --git a/interfaces/cython/cantera/test/utilities.py b/interfaces/cython/cantera/test/utilities.py index fa0d391fc..b72e941bd 100644 --- a/interfaces/cython/cantera/test/utilities.py +++ b/interfaces/cython/cantera/test/utilities.py @@ -20,3 +20,63 @@ class CanteraTest(unittest.TestCase): for a,b in zip(A.flat, B.flat): self.assertNear(a,b, rtol, atol, msg) + + +def compareProfiles(reference, sample, rtol=1e-5, atol=1e-12, xtol=1e-5): + """ + Compare two 2D arrays of spatial or time profiles. Each data set should + contain the time or space coordinate in the first column and data series + to be compared in successive columns. + + The coordinates in each data set do not need to be the same: The data from + the second data set will be interpolated onto the coordinates in the first + data set before being compared. This means that the range of the "sample" + data set should be at least as long as the "reference" data set. + + After interpolation, each data point must satisfy a combined relative and absolute + error criterion specified by `rtol` and `atol`. + + If the comparison succeeds, this function returns `None`. If the comparison + fails, a formatted report of the differing elements is returned. + """ + if isinstance(reference, str): + reference = np.genfromtxt(reference, delimiter=',').T + else: + reference = np.asarray(reference).T + + sample = np.asarray(sample).T + + assert reference.shape[0] == sample.shape[0] + + nVars = reference.shape[0] + nTimes = reference.shape[1] + + bad = [] + template = '{0:9.4e} {1: 3d} {2:14.7e} {3:14.7e} {4:9.3e} {5:9.3e} {6:9.3e}' + for i in range(1, nVars): + scale = max(max(abs(reference[i])), reference[i].ptp(), + max(abs(sample[i])), sample[i].ptp()) + slope = np.zeros(nTimes) + slope[1:] = np.diff(reference[i]) / np.diff(reference[0]) * reference[0].ptp() + + comp = np.interp(reference[0], sample[0], sample[i]) + for j in range(nTimes): + a = reference[i,j] + b = comp[j] + abserr = abs(a-b) + relerr = abs(a-b) / (scale + atol) + + # error that can be accounted for by shifting the profile along + # the time / spatial coordinate + xerr = abserr / (abs(slope[j]) + atol) + + if abserr > atol and relerr > rtol and xerr > xtol: + bad.append(template.format(reference[0][j], i, a, b, abserr, relerr, xerr)) + + if bad: + header = ['Failed series comparisons:', + 'coordinate comp. reference val test value abs. err rel. err pos. err', + '---------- --- -------------- -------------- --------- --------- ---------'] + return '\n'.join(header + bad) + else: + return None diff --git a/test/data/DiffusionFlameTest-h2-mix.csv b/test/data/DiffusionFlameTest-h2-mix.csv new file mode 100644 index 000000000..86ed3b6fc --- /dev/null +++ b/test/data/DiffusionFlameTest-h2-mix.csv @@ -0,0 +1,125 @@ +0.000000e+00, 2.815612e-01, -1.397559e-15, 3.000000e+02, 4.803073e-02, 5.107431e-08, 1.380995e-14, 2.523482e-14, 6.073548e-18, 2.310082e-08, 1.757737e-17, 1.379886e-18, 9.519692e-01 +4.166667e-04, 2.795051e-01, 4.962352e+00, 3.000442e+02, 4.801977e-02, 8.834416e-08, 1.190364e-14, 2.498022e-14, 2.068926e-17, 9.941571e-08, 8.258484e-17, 2.092338e-18, 9.519800e-01 +8.333333e-04, 2.733413e-01, 9.925426e+00, 3.001645e+02, 4.799326e-02, 1.540190e-07, 1.020063e-14, 2.504437e-14, 2.147975e-17, 4.258004e-07, 9.904964e-17, 2.838931e-18, 9.520062e-01 +1.250000e-03, 2.631234e-01, 1.489041e+01, 3.004867e+02, 4.793001e-02, 2.703782e-07, 8.777158e-15, 2.744081e-14, 2.491046e-17, 1.796080e-06, 1.109903e-16, 3.649081e-18, 9.520679e-01 +1.666667e-03, 2.489908e-01, 1.986006e+01, 3.013276e+02, 4.778281e-02, 4.784306e-07, 8.090943e-15, 4.204415e-14, 4.123811e-17, 7.364085e-06, 1.692793e-16, 4.719451e-18, 9.522093e-01 +1.875000e-03, 2.405832e-01, 2.234996e+01, 3.022256e+02, 4.764043e-02, 6.471479e-07, 8.707836e-15, 7.103229e-14, 7.514464e-17, 1.616433e-05, 2.839076e-16, 5.660640e-18, 9.523428e-01 +2.083333e-03, 2.314349e-01, 2.484765e+01, 3.037791e+02, 4.741377e-02, 8.846061e-07, 1.107157e-14, 1.508014e-13, 1.829238e-16, 3.707975e-05, 5.953664e-16, 7.508436e-18, 9.525483e-01 +2.291667e-03, 2.217300e-01, 2.735932e+01, 3.064135e+02, 4.706116e-02, 1.221550e-06, 1.716207e-14, 3.644320e-13, 5.299816e-16, 8.521436e-05, 1.410222e-15, 1.162503e-17, 9.528524e-01 +2.500000e-03, 2.117319e-01, 2.989490e+01, 3.107776e+02, 4.652809e-02, 1.704744e-06, 3.096291e-14, 9.255945e-13, 1.616331e-15, 1.916554e-04, 3.471352e-15, 2.123326e-17, 9.532786e-01 +2.604167e-03, 2.067608e-01, 3.117866e+01, 3.139638e+02, 4.616685e-02, 2.031104e-06, 4.372729e-14, 1.546602e-12, 2.938557e-15, 2.900056e-04, 5.673330e-15, 3.092540e-17, 9.535411e-01 +2.708333e-03, 2.019138e-01, 3.247953e+01, 3.180895e+02, 4.572702e-02, 2.429706e-06, 6.289054e-14, 2.635004e-12, 5.375273e-15, 4.407314e-04, 9.407662e-15, 4.695425e-17, 9.538298e-01 +2.812500e-03, 1.972646e-01, 3.380352e+01, 3.233771e+02, 4.519889e-02, 2.917583e-06, 9.101266e-14, 4.524570e-12, 9.759741e-15, 6.669466e-04, 1.563552e-14, 7.315600e-17, 9.541312e-01 +2.916667e-03, 1.928875e-01, 3.515826e+01, 3.300790e+02, 4.457426e-02, 3.515686e-06, 1.312721e-13, 7.776301e-12, 1.742768e-14, 9.987438e-04, 2.585969e-14, 1.154778e-16, 9.544235e-01 +3.020833e-03, 1.888526e-01, 3.655314e+01, 3.384733e+02, 4.384750e-02, 4.249468e-06, 1.872944e-13, 1.332471e-11, 3.044278e-14, 1.473384e-03, 4.239644e-14, 1.831233e-16, 9.546749e-01 +3.125000e-03, 1.852189e-01, 3.799924e+01, 3.488554e+02, 4.301644e-02, 5.149352e-06, 2.626909e-13, 2.271170e-11, 5.193211e-14, 2.134397e-03, 6.877326e-14, 2.904986e-16, 9.548440e-01 +3.229167e-03, 1.820269e-01, 3.950908e+01, 3.615275e+02, 4.208301e-02, 6.250958e-06, 3.602297e-13, 3.845560e-11, 8.684218e-14, 3.029306e-03, 1.103062e-13, 4.608041e-16, 9.548814e-01 +3.333333e-03, 1.792922e-01, 4.109607e+01, 3.767846e+02, 4.105343e-02, 7.594975e-06, 4.807293e-13, 6.462534e-11, 1.446409e-13, 4.205989e-03, 1.749245e-13, 7.331695e-16, 9.547330e-01 +3.437500e-03, 1.769997e-01, 4.277357e+01, 3.948997e+02, 3.993786e-02, 9.226555e-06, 6.221775e-13, 1.077193e-10, 2.511330e-13, 5.708124e-03, 2.743158e-13, 1.177645e-15, 9.543448e-01 +3.541667e-03, 1.751009e-01, 4.455380e+01, 4.161096e+02, 3.874950e-02, 1.119418e-05, 7.802903e-13, 1.779846e-10, 5.023101e-13, 7.570531e-03, 4.254607e-13, 1.928088e-15, 9.536688e-01 +3.645833e-03, 1.735135e-01, 4.644655e+01, 4.406019e+02, 3.750340e-02, 1.354801e-05, 9.528642e-13, 2.913518e-10, 1.306429e-12, 9.815372e-03, 6.526026e-13, 3.257396e-15, 9.526677e-01 +3.750000e-03, 1.721245e-01, 4.845799e+01, 4.685058e+02, 3.621516e-02, 1.633777e-05, 1.152892e-12, 4.721927e-10, 4.427643e-12, 1.244997e-02, 9.896669e-13, 5.758011e-15, 9.513185e-01 +3.854167e-03, 1.707952e-01, 5.058966e+01, 4.998859e+02, 3.489979e-02, 1.961050e-05, 1.445125e-12, 7.571246e-10, 1.720493e-11, 1.546656e-02, 1.483106e-12, 1.079980e-14, 9.496140e-01 +3.958333e-03, 1.693692e-01, 5.283795e+01, 5.347415e+02, 3.357084e-02, 2.340820e-05, 2.059727e-12, 1.200080e-09, 6.824255e-11, 1.884380e-02, 2.195106e-12, 2.176506e-14, 9.475620e-01 +4.062500e-03, 1.676798e-01, 5.519390e+01, 5.730086e+02, 3.223994e-02, 2.776591e-05, 3.784982e-12, 1.878830e-09, 2.603657e-10, 2.254945e-02, 3.207065e-12, 4.759642e-14, 9.451828e-01 +4.166667e-03, 1.655588e-01, 5.764357e+01, 6.145669e+02, 3.091656e-02, 3.271024e-05, 9.440838e-12, 2.903168e-09, 9.390676e-10, 2.654365e-02, 4.622755e-12, 1.136144e-13, 9.425071e-01 +4.375000e-03, 1.595059e-01, 6.275479e+01, 7.067449e+02, 2.841165e-02, 4.391143e-05, 6.273309e-11, 6.265145e-09, 9.177045e-09, 3.489820e-02, 8.638268e-12, 5.668346e-13, 9.366462e-01 +4.583333e-03, 1.498473e-01, 6.797356e+01, 8.090880e+02, 2.599769e-02, 5.738017e-05, 4.587547e-10, 1.293532e-08, 6.539199e-08, 4.377075e-02, 1.553482e-11, 3.764432e-12, 9.301741e-01 +4.791667e-03, 1.358481e-01, 7.311395e+01, 9.198133e+02, 2.369029e-02, 7.299761e-05, 2.785096e-09, 2.578158e-08, 3.479245e-07, 5.287912e-02, 2.729052e-11, 2.525780e-11, 9.233572e-01 +5.000000e-03, 1.170840e-01, 7.799450e+01, 1.037081e+03, 2.149507e-02, 9.057518e-05, 1.365300e-08, 5.125118e-08, 1.440000e-06, 6.198441e-02, 4.928023e-11, 1.444226e-10, 9.164284e-01 +5.208333e-03, 9.341691e-02, 8.245691e+01, 1.159065e+03, 1.941205e-02, 1.098854e-04, 5.510523e-08, 1.071437e-07, 4.832682e-06, 7.089609e-02, 1.002340e-10, 6.463488e-10, 9.095770e-01 +5.416667e-03, 6.496586e-02, 8.637684e+01, 1.284134e+03, 1.743851e-02, 1.306843e-04, 1.887550e-07, 2.453501e-07, 1.366427e-05, 7.946848e-02, 2.407406e-10, 2.155729e-09, 9.029482e-01 +5.625000e-03, 3.204257e-02, 8.966764e+01, 1.410803e+03, 1.557048e-02, 1.527244e-04, 5.653004e-07, 6.110233e-07, 3.362812e-05, 8.759461e-02, 6.273083e-10, 5.103353e-09, 8.966474e-01 +5.833333e-03, -4.899930e-03, 9.227908e+01, 1.537708e+03, 1.380354e-02, 1.757567e-04, 1.519789e-06, 1.590226e-06, 7.399904e-05, 9.519866e-02, 1.621646e-09, 8.673491e-09, 8.907449e-01 +6.041667e-03, -4.531027e-02, 9.419510e+01, 1.663526e+03, 1.213319e-02, 1.995189e-04, 3.751334e-06, 4.172933e-06, 1.488170e-04, 1.022290e-01, 4.141262e-09, 1.184807e-08, 8.852815e-01 +6.250000e-03, -8.857315e-02, 9.543885e+01, 1.786983e+03, 1.055490e-02, 2.236973e-04, 8.665889e-06, 1.081086e-05, 2.784618e-04, 1.086542e-01, 1.041891e-08, 1.474245e-08, 8.802692e-01 +6.458333e-03, -1.340350e-01, 9.604797e+01, 1.906792e+03, 9.064876e-03, 2.478686e-04, 1.904671e-05, 2.757548e-05, 4.919576e-04, 1.144453e-01, 2.524717e-08, 1.810216e-08, 8.757034e-01 +6.666667e-03, -1.810114e-01, 9.606867e+01, 2.021552e+03, 7.660578e-03, 2.713710e-04, 4.038922e-05, 6.961325e-05, 8.303523e-04, 1.195610e-01, 5.793262e-08, 2.296794e-08, 8.715666e-01 +6.875000e-03, -2.287769e-01, 9.555130e+01, 2.129591e+03, 6.341884e-03, 2.930395e-04, 8.353991e-05, 1.750997e-04, 1.350923e-03, 1.239261e-01, 1.259747e-07, 3.081943e-08, 8.678293e-01 +7.083333e-03, -2.765343e-01, 9.454701e+01, 2.228760e+03, 5.113334e-03, 3.107242e-04, 1.694253e-04, 4.381973e-04, 2.128846e-03, 1.273940e-01, 2.624901e-07, 4.374077e-08, 8.644452e-01 +7.187500e-03, -3.000777e-01, 9.387604e+01, 2.273953e+03, 4.530998e-03, 3.170138e-04, 2.402907e-04, 7.068020e-04, 2.644141e-03, 1.287163e-01, 3.790224e-07, 5.324761e-08, 8.628440e-01 +7.291667e-03, -3.232479e-01, 9.309922e+01, 2.315720e+03, 3.978469e-03, 3.205944e-04, 3.377432e-04, 1.128771e-03, 3.251801e-03, 1.296832e-01, 5.414105e-07, 6.512361e-08, 8.612988e-01 +7.395833e-03, -3.458888e-01, 9.222238e+01, 2.353509e+03, 3.459763e-03, 3.206020e-04, 4.685727e-04, 1.785190e-03, 3.950447e-03, 1.302274e-01, 7.645845e-07, 7.965463e-08, 8.597871e-01 +7.447917e-03, -3.569454e-01, 9.174801e+01, 2.370680e+03, 3.213796e-03, 3.189677e-04, 5.485798e-04, 2.241709e-03, 4.330627e-03, 1.303149e-01, 9.054551e-07, 8.803657e-08, 8.590304e-01 +7.500000e-03, -3.678020e-01, 9.125033e+01, 2.386621e+03, 2.978132e-03, 3.161310e-04, 6.386061e-04, 2.799814e-03, 4.726616e-03, 1.302685e-01, 1.066854e-06, 9.706325e-08, 8.582710e-01 +7.552083e-03, -3.784340e-01, 9.072999e+01, 2.401251e+03, 2.753337e-03, 3.120154e-04, 7.385449e-04, 3.476806e-03, 5.133597e-03, 1.300800e-01, 1.249991e-06, 1.066820e-07, 8.575043e-01 +7.604167e-03, -3.888161e-01, 9.018761e+01, 2.414491e+03, 2.539867e-03, 3.065795e-04, 8.477929e-04, 4.289652e-03, 5.545638e-03, 1.297429e-01, 1.455348e-06, 1.168053e-07, 8.567260e-01 +7.656250e-03, -3.989225e-01, 8.962380e+01, 2.426264e+03, 2.338043e-03, 2.998213e-04, 9.652194e-04, 5.254392e-03, 5.955898e-03, 1.292530e-01, 1.682582e-06, 1.273142e-07, 8.559319e-01 +7.708333e-03, -4.087275e-01, 8.903914e+01, 2.436498e+03, 2.148032e-03, 2.917798e-04, 1.089172e-03, 6.385413e-03, 6.356933e-03, 1.286082e-01, 1.930454e-06, 1.380627e-07, 8.551184e-01 +7.760417e-03, -4.182051e-01, 8.843417e+01, 2.445121e+03, 1.969834e-03, 2.825343e-04, 1.217537e-03, 7.694771e-03, 6.741081e-03, 1.278092e-01, 2.196806e-06, 1.488829e-07, 8.542827e-01 +7.812500e-03, -4.273294e-01, 8.780943e+01, 2.452067e+03, 1.803293e-03, 2.721995e-04, 1.347849e-03, 9.191682e-03, 7.100855e-03, 1.268589e-01, 2.478588e-06, 1.595906e-07, 8.534225e-01 +7.864583e-03, -4.360749e-01, 8.716542e+01, 2.457273e+03, 1.648108e-03, 2.609184e-04, 1.477434e-03, 1.088226e-02, 7.429311e-03, 1.257622e-01, 2.771936e-06, 1.699911e-07, 8.525369e-01 +7.916667e-03, -4.444162e-01, 8.650263e+01, 2.460675e+03, 1.503861e-03, 2.488526e-04, 1.603556e-03, 1.276952e-02, 7.720323e-03, 1.245253e-01, 3.072300e-06, 1.798855e-07, 8.516253e-01 +7.968750e-03, -4.523284e-01, 8.582153e+01, 2.462215e+03, 1.370055e-03, 2.361738e-04, 1.723558e-03, 1.485354e-02, 7.968773e-03, 1.231560e-01, 3.374586e-06, 1.890766e-07, 8.506884e-01 +8.020833e-03, -4.597865e-01, 8.512256e+01, 2.461834e+03, 1.246138e-03, 2.230551e-04, 1.834978e-03, 1.713182e-02, 8.170632e-03, 1.216621e-01, 3.673333e-06, 1.973754e-07, 8.497274e-01 +8.072917e-03, -4.667664e-01, 8.440615e+01, 2.459473e+03, 1.131535e-03, 2.096642e-04, 1.935636e-03, 1.959969e-02, 8.322970e-03, 1.200521e-01, 3.962908e-06, 2.046083e-07, 8.487442e-01 +8.125000e-03, -4.732436e-01, 8.367272e+01, 2.455076e+03, 1.025671e-03, 1.961586e-04, 2.023685e-03, 2.225067e-02, 8.423914e-03, 1.183341e-01, 4.237715e-06, 2.106254e-07, 8.477414e-01 +8.177083e-03, -4.791945e-01, 8.292265e+01, 2.448587e+03, 9.279817e-04, 1.826824e-04, 2.097643e-03, 2.507686e-02, 8.472569e-03, 1.165159e-01, 4.492436e-06, 2.153082e-07, 8.467216e-01 +8.229167e-03, -4.845953e-01, 8.215632e+01, 2.439949e+03, 8.379317e-04, 1.693643e-04, 2.156403e-03, 2.806926e-02, 8.468922e-03, 1.146050e-01, 4.722283e-06, 2.185790e-07, 8.456882e-01 +8.281250e-03, -4.894228e-01, 8.137409e+01, 2.429107e+03, 7.550148e-04, 1.563173e-04, 2.199225e-03, 3.121796e-02, 8.413761e-03, 1.126081e-01, 4.923268e-06, 2.204083e-07, 8.446445e-01 +8.333333e-03, -4.936538e-01, 8.057630e+01, 2.416008e+03, 6.787589e-04, 1.436382e-04, 2.225724e-03, 3.451233e-02, 8.308578e-03, 1.105315e-01, 5.092479e-06, 2.208225e-07, 8.435942e-01 +8.385417e-03, -4.972659e-01, 7.976329e+01, 2.400598e+03, 6.087246e-04, 1.314088e-04, 2.235851e-03, 3.794117e-02, 8.155504e-03, 1.083810e-01, 5.228349e-06, 2.199085e-07, 8.425409e-01 +8.437500e-03, -5.002368e-01, 7.893537e+01, 2.382827e+03, 5.445040e-04, 1.196959e-04, 2.229869e-03, 4.149272e-02, 7.957239e-03, 1.061617e-01, 5.330905e-06, 2.178160e-07, 8.414887e-01 +8.489583e-03, -5.025454e-01, 7.809285e+01, 2.362648e+03, 4.857157e-04, 1.085530e-04, 2.208331e-03, 4.515468e-02, 7.717009e-03, 1.038786e-01, 5.401971e-06, 2.147566e-07, 8.404415e-01 +8.541667e-03, -5.041714e-01, 7.723603e+01, 2.340018e+03, 4.319993e-04, 9.802085e-05, 2.172060e-03, 4.891414e-02, 7.438593e-03, 1.015361e-01, 5.445335e-06, 2.109993e-07, 8.394034e-01 +8.645833e-03, -5.052905e-01, 7.548023e+01, 2.287288e+03, 3.381380e-04, 7.875811e-05, 2.057852e-03, 5.671962e-02, 6.779277e-03, 9.666077e-02, 5.474036e-06, 2.026650e-07, 8.373599e-01 +8.750000e-03, -5.035001e-01, 7.367183e+01, 2.224550e+03, 2.608984e-04, 6.212386e-05, 1.897723e-03, 6.476616e-02, 6.017830e-03, 9.158970e-02, 5.482963e-06, 1.956470e-07, 8.353999e-01 +8.854167e-03, -4.987181e-01, 7.181298e+01, 2.151820e+03, 1.981455e-04, 4.807040e-05, 1.702764e-03, 7.294789e-02, 5.192043e-03, 8.635069e-02, 5.562981e-06, 1.929063e-07, 8.335546e-01 +8.906250e-03, -4.952127e-01, 7.086563e+01, 2.111808e+03, 1.717248e-04, 4.202331e-05, 1.597307e-03, 7.701741e-02, 4.770761e-03, 8.370252e-02, 5.663443e-06, 1.941198e-07, 8.326924e-01 +8.958333e-03, -4.909447e-01, 6.990620e+01, 2.069368e+03, 1.481843e-04, 3.655640e-05, 1.487806e-03, 8.107918e-02, 4.348020e-03, 8.102393e-02, 5.821979e-06, 1.974978e-07, 8.318703e-01 +9.010417e-03, -4.859140e-01, 6.893503e+01, 2.024554e+03, 1.272904e-04, 3.163755e-05, 1.375824e-03, 8.511989e-02, 3.928897e-03, 7.831834e-02, 6.052901e-06, 2.034696e-07, 8.310919e-01 +9.062500e-03, -4.801256e-01, 6.795246e+01, 1.977432e+03, 1.088261e-04, 2.723346e-05, 1.262789e-03, 8.912737e-02, 3.517942e-03, 7.558910e-02, 6.369776e-06, 2.125241e-07, 8.303602e-01 +9.114583e-03, -4.735869e-01, 6.695889e+01, 1.928079e+03, 9.258863e-05, 2.330913e-05, 1.150027e-03, 9.309025e-02, 3.119437e-03, 7.283941e-02, 6.786449e-06, 2.253176e-07, 8.296780e-01 +9.166667e-03, -4.663070e-01, 6.595473e+01, 1.876581e+03, 7.838891e-05, 1.982749e-05, 1.038798e-03, 9.699775e-02, 2.737574e-03, 7.007230e-02, 7.316458e-06, 2.427847e-07, 8.290478e-01 +9.270833e-03, -4.495047e-01, 6.391559e+01, 1.767399e+03, 5.525315e-05, 1.397211e-05, 8.215504e-04, 1.047210e-01, 2.028845e-03, 6.441443e-02, 8.763586e-06, 2.968002e-07, 8.279359e-01 +9.375000e-03, -4.299602e-01, 6.184148e+01, 1.651095e+03, 3.842671e-05, 9.478656e-06, 6.206104e-04, 1.121306e-01, 1.421055e-03, 5.871816e-02, 1.081907e-05, 3.938324e-07, 8.270505e-01 +9.427083e-03, -4.192614e-01, 6.079353e+01, 1.590718e+03, 3.208898e-05, 7.692903e-06, 5.295146e-04, 1.156394e-01, 1.162893e-03, 5.591453e-02, 1.210761e-05, 4.713912e-07, 8.267013e-01 +9.479167e-03, -4.079508e-01, 5.973870e+01, 1.528993e+03, 2.691984e-05, 6.156620e-06, 4.444810e-04, 1.190505e-01, 9.342355e-04, 5.311211e-02, 1.357566e-05, 5.803619e-07, 8.264114e-01 +9.531250e-03, -3.960646e-01, 5.867791e+01, 1.466102e+03, 2.278458e-05, 4.844059e-06, 3.661036e-04, 1.223584e-01, 7.357293e-04, 5.031475e-02, 1.521131e-05, 7.379523e-07, 8.261814e-01 +9.583333e-03, -3.836463e-01, 5.761220e+01, 1.402255e+03, 1.954435e-05, 3.734042e-06, 2.948862e-04, 1.255586e-01, 5.670886e-04, 4.752697e-02, 1.699248e-05, 9.739722e-07, 8.260112e-01 +9.609375e-03, -3.772626e-01, 5.707800e+01, 1.370060e+03, 1.822026e-05, 3.253979e-06, 2.624884e-04, 1.270998e-01, 4.943271e-04, 4.615377e-02, 1.791892e-05, 1.137590e-06, 8.259491e-01 +9.635417e-03, -3.707657e-01, 5.654302e+01, 1.337715e+03, 1.706481e-05, 2.817632e-06, 2.320685e-04, 1.286124e-01, 4.285487e-04, 4.478502e-02, 1.886089e-05, 1.339631e-06, 8.259019e-01 +9.661458e-03, -3.641633e-01, 5.600745e+01, 1.305254e+03, 1.606003e-05, 2.422796e-06, 2.036958e-04, 1.300960e-01, 3.695169e-04, 4.342148e-02, 1.980343e-05, 1.584509e-06, 8.258695e-01 +9.687500e-03, -3.574642e-01, 5.547148e+01, 1.272714e+03, 1.518834e-05, 2.067445e-06, 1.774273e-04, 1.315502e-01, 3.169288e-04, 4.206394e-02, 2.072953e-05, 1.871645e-06, 8.258517e-01 +9.713542e-03, -3.506779e-01, 5.493534e+01, 1.240133e+03, 1.443276e-05, 1.749584e-06, 1.533078e-04, 1.329746e-01, 2.704280e-04, 4.071325e-02, 2.162038e-05, 2.193550e-06, 8.258484e-01 +9.739583e-03, -3.438144e-01, 5.439926e+01, 1.207550e+03, 1.377723e-05, 1.467241e-06, 1.313635e-04, 1.343690e-01, 2.296122e-04, 3.937028e-02, 2.245453e-05, 2.535946e-06, 8.258595e-01 +9.765625e-03, -3.368848e-01, 5.386347e+01, 1.175010e+03, 1.320684e-05, 1.218394e-06, 1.115994e-04, 1.357331e-01, 1.940457e-04, 3.803595e-02, 2.320793e-05, 2.879898e-06, 8.258848e-01 +9.791667e-03, -3.299007e-01, 5.332826e+01, 1.142556e+03, 1.270796e-05, 1.000984e-06, 9.399273e-05, 1.370669e-01, 1.632705e-04, 3.671118e-02, 2.385252e-05, 3.205344e-06, 8.259239e-01 +9.817708e-03, -3.228747e-01, 5.279390e+01, 1.110235e+03, 1.226844e-05, 8.128778e-07, 7.849061e-05, 1.383702e-01, 1.368206e-04, 3.539691e-02, 2.435652e-05, 3.494530e-06, 8.259766e-01 +9.843750e-03, -3.158195e-01, 5.226072e+01, 1.078095e+03, 1.187759e-05, 6.518838e-07, 6.500770e-05, 1.396431e-01, 1.142331e-04, 3.409409e-02, 2.468461e-05, 3.734365e-06, 8.260427e-01 +9.869792e-03, -3.087493e-01, 5.172904e+01, 1.046185e+03, 1.152626e-05, 5.157397e-07, 5.342798e-05, 1.408855e-01, 9.506062e-05, 3.280366e-02, 2.480067e-05, 3.917354e-06, 8.261216e-01 +9.895833e-03, -3.016778e-01, 5.119922e+01, 1.014555e+03, 1.120672e-05, 4.021329e-07, 4.360769e-05, 1.420975e-01, 7.887900e-05, 3.152659e-02, 2.467095e-05, 4.041262e-06, 8.262131e-01 +9.921875e-03, -2.946201e-01, 5.067165e+01, 9.832562e+02, 1.091256e-05, 3.087098e-07, 3.538205e-05, 1.432791e-01, 6.529455e-05, 3.026382e-02, 2.426908e-05, 4.108091e-06, 8.263168e-01 +9.947917e-03, -2.875906e-01, 5.014674e+01, 9.523380e+02, 1.063857e-05, 2.331048e-07, 2.857258e-05, 1.444305e-01, 5.394738e-05, 2.901631e-02, 2.358079e-05, 4.122763e-06, 8.264321e-01 +9.973958e-03, -2.806049e-01, 4.962492e+01, 9.218504e+02, 1.038052e-05, 1.729750e-07, 2.299600e-05, 1.455516e-01, 4.451323e-05, 2.778504e-02, 2.260802e-05, 4.091906e-06, 8.265586e-01 +1.000000e-02, -2.736777e-01, 4.910666e+01, 8.918424e+02, 1.013506e-05, 1.260398e-07, 1.847206e-05, 1.466423e-01, 3.670316e-05, 2.657098e-02, 2.137149e-05, 4.022853e-06, 8.266959e-01 +1.002604e-02, -2.668243e-01, 4.859245e+01, 8.623614e+02, 9.899515e-06, 9.013101e-08, 1.483087e-05, 1.477027e-01, 3.026230e-05, 2.537513e-02, 1.990998e-05, 3.922916e-06, 8.268433e-01 +1.005208e-02, -2.600595e-01, 4.808279e+01, 8.334532e+02, 9.671753e-06, 6.323237e-08, 1.191777e-05, 1.487325e-01, 2.496776e-05, 2.419853e-02, 1.827808e-05, 3.798910e-06, 8.270003e-01 +1.007813e-02, -2.533982e-01, 4.757823e+01, 8.051616e+02, 9.450085e-06, 4.352532e-08, 9.596688e-06, 1.497315e-01, 2.062646e-05, 2.304223e-02, 1.653983e-05, 3.656887e-06, 8.271663e-01 +1.010417e-02, -2.468546e-01, 4.707933e+01, 7.775284e+02, 9.233169e-06, 2.941081e-08, 7.751194e-06, 1.506996e-01, 1.707265e-05, 2.190729e-02, 1.476300e-05, 3.502027e-06, 8.273408e-01 +1.013021e-02, -2.404431e-01, 4.658666e+01, 7.505929e+02, 9.019934e-06, 1.953184e-08, 6.284227e-06, 1.516364e-01, 1.416556e-05, 2.079484e-02, 1.301117e-05, 3.338639e-06, 8.275229e-01 +1.015625e-02, -2.341773e-01, 4.610083e+01, 7.243921e+02, 8.809536e-06, 1.276795e-08, 5.116520e-06, 1.525416e-01, 1.178688e-05, 1.970601e-02, 1.133918e-05, 3.170231e-06, 8.277121e-01 +1.018229e-02, -2.280707e-01, 4.562245e+01, 6.989609e+02, 8.601312e-06, 8.228026e-09, 4.184478e-06, 1.534150e-01, 9.838322e-06, 1.864199e-02, 9.788727e-06, 2.999610e-06, 8.279076e-01 +1.020833e-02, -2.221365e-01, 4.515212e+01, 6.743315e+02, 8.394758e-06, 5.219090e-09, 3.437746e-06, 1.542561e-01, 8.239034e-06, 1.760397e-02, 8.388716e-06, 2.829001e-06, 8.281086e-01 +1.026042e-02, -2.108164e-01, 4.423711e+01, 6.275556e+02, 7.978763e-06, 2.174109e-09, 2.360550e-06, 1.558673e-01, 5.844452e-06, 1.557770e-02, 6.048008e-06, 2.487836e-06, 8.285303e-01 +1.031250e-02, -2.002969e-01, 4.336007e+01, 5.842028e+02, 7.566511e-06, 9.202415e-10, 1.647779e-06, 1.573455e-01, 4.196363e-06, 1.367240e-02, 4.311760e-06, 2.163753e-06, 8.289622e-01 +1.036458e-02, -1.906641e-01, 4.252557e+01, 5.444330e+02, 7.157555e-06, 4.046297e-10, 1.167335e-06, 1.586898e-01, 3.046194e-06, 1.189751e-02, 3.062493e-06, 1.862400e-06, 8.293964e-01 +1.041667e-02, -1.819956e-01, 4.173776e+01, 5.083606e+02, 6.752385e-06, 1.858495e-10, 8.380236e-07, 1.598998e-01, 2.233039e-06, 1.026172e-02, 2.177335e-06, 1.587093e-06, 8.298249e-01 +1.046875e-02, -1.743565e-01, 4.100011e+01, 4.760463e+02, 6.352174e-06, 8.876826e-11, 6.089466e-07, 1.609768e-01, 1.651594e-06, 8.772308e-03, 1.553902e-06, 1.339628e-06, 8.302394e-01 +1.052083e-02, -1.677955e-01, 4.031514e+01, 4.474881e+02, 5.958578e-06, 4.359796e-11, 4.475016e-07, 1.619237e-01, 1.231835e-06, 7.434356e-03, 1.115542e-06, 1.120704e-06, 8.306321e-01 +1.062500e-02, -1.578361e-01, 3.909594e+01, 4.009133e+02, 5.180663e-06, 1.210061e-11, 2.541337e-07, 1.634911e-01, 7.108167e-07, 5.156998e-03, 5.951467e-07, 7.559662e-07, 8.313444e-01 +1.072917e-02, -1.517888e-01, 3.806806e+01, 3.666262e+02, 4.456899e-06, 3.705307e-12, 1.499351e-07, 1.646292e-01, 4.218385e-07, 3.453229e-03, 3.242265e-07, 4.910969e-07, 8.319118e-01 +1.083333e-02, -1.493040e-01, 3.721387e+01, 3.427136e+02, 3.799905e-06, 1.254915e-12, 9.153491e-08, 1.654163e-01, 2.572698e-07, 2.247183e-03, 1.806770e-07, 3.093737e-07, 8.323319e-01 +1.093750e-02, -1.497880e-01, 3.650248e+01, 3.268737e+02, 3.217064e-06, 4.654749e-13, 5.757441e-08, 1.659367e-01, 1.610500e-07, 1.436311e-03, 1.031509e-07, 1.912282e-07, 8.326232e-01 +1.104167e-02, -1.525445e-01, 3.589807e+01, 3.168528e+02, 2.710073e-06, 1.870829e-13, 3.720863e-08, 1.662675e-01, 1.034370e-07, 9.150377e-04, 6.065061e-08, 1.179984e-07, 8.328144e-01 +1.125000e-02, -1.620678e-01, 3.486931e+01, 3.066848e+02, 1.897097e-06, 3.802003e-14, 1.696731e-08, 1.666092e-01, 4.656624e-08, 3.719334e-04, 2.288119e-08, 4.492764e-08, 8.330168e-01 +1.145833e-02, -1.741036e-01, 3.395933e+01, 3.025830e+02, 1.314795e-06, 8.480769e-15, 7.920290e-09, 1.667495e-01, 2.145650e-08, 1.478759e-04, 8.656124e-09, 1.663669e-08, 8.331012e-01 +1.166667e-02, -1.871326e-01, 3.310128e+01, 3.010380e+02, 9.100170e-07, 2.103431e-15, 3.840260e-09, 1.668038e-01, 1.028071e-08, 6.107241e-05, 3.449284e-09, 6.435149e-09, 8.331342e-01 +1.208333e-02, -2.134537e-01, 3.142988e+01, 3.002056e+02, 4.377538e-07, 1.790541e-16, 1.036905e-09, 1.668342e-01, 2.728221e-09, 1.259437e-05, 6.649883e-10, 1.196937e-09, 8.331528e-01 +1.250000e-02, -2.388297e-01, 2.977251e+01, 3.000440e+02, 2.121256e-07, 1.817064e-17, 2.971585e-10, 1.668404e-01, 7.697912e-10, 2.803072e-06, 1.386341e-10, 2.417372e-10, 8.331566e-01 +1.333333e-02, -2.856562e-01, 2.646367e+01, 3.000036e+02, 5.298517e-08, 3.882491e-19, 3.508431e-11, 1.668420e-01, 8.917282e-11, 2.396486e-07, 1.067422e-11, 1.831884e-11, 8.331577e-01 +1.416667e-02, -3.270019e-01, 2.315565e+01, 3.000003e+02, 1.246911e-08, 7.988002e-21, 3.779701e-12, 1.668422e-01, 9.422037e-12, 1.849331e-08, 7.347205e-13, 1.248275e-12, 8.331578e-01 +1.500000e-02, -3.628377e-01, 1.984770e+01, 3.000000e+02, 3.158476e-09, 2.202269e-22, 4.616822e-13, 1.668422e-01, 1.129906e-12, 1.642462e-09, 5.839427e-14, 9.835327e-14, 8.331578e-01 +1.666667e-02, -4.179701e-01, 1.323180e+01, 3.000000e+02, 3.277762e-10, 9.383206e-25, 2.039906e-14, 1.668422e-01, 4.891807e-14, 5.122105e-11, 1.613980e-15, 2.697179e-15, 8.331578e-01 +1.833333e-02, -4.510496e-01, 6.615899e+00, 3.000000e+02, 3.192308e-11, 3.598017e-27, 8.397886e-16, 1.668422e-01, 1.973086e-15, 1.485939e-12, 4.147151e-17, 6.877400e-17, 8.331578e-01 +2.000000e-02, -4.620761e-01, 0.000000e+00, 3.000000e+02, 3.048127e-12, 5.118502e-28, 3.381245e-17, 1.668422e-01, 7.783186e-17, 4.213639e-14, 1.041417e-18, 1.713575e-18, 8.331578e-01