diff --git a/test/material/fluidmatrixinteractions/2p/CMakeLists.txt b/test/material/fluidmatrixinteractions/2p/CMakeLists.txt index 2d9abe86dba83f333f77ebc915b8394801aba009..13813a52bcd47de21496c6b514338f9a6b8d5249 100644 --- a/test/material/fluidmatrixinteractions/2p/CMakeLists.txt +++ b/test/material/fluidmatrixinteractions/2p/CMakeLists.txt @@ -7,3 +7,11 @@ dumux_add_test(SOURCES test_thermalconductivity.cc ${CMAKE_SOURCE_DIR}/test/references/thermalconductivityjohansen-reference.dat ${CMAKE_CURRENT_BINARY_DIR}/johansen_lambda_eff.dat --command "${CMAKE_CURRENT_BINARY_DIR}/test_thermalconductivity") + +dumux_add_test(SOURCES test_materiallaws.cc + LABELS unit material + COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py + CMD_ARGS --script fuzzyData --delimiter " " + --files ${CMAKE_SOURCE_DIR}/test/references/pcswcurve.dat + ${CMAKE_CURRENT_BINARY_DIR}/pcswcurve.dat + --command "${CMAKE_CURRENT_BINARY_DIR}/test_materiallaws") diff --git a/test/material/fluidmatrixinteractions/2p/test_materiallaws.cc b/test/material/fluidmatrixinteractions/2p/test_materiallaws.cc new file mode 100644 index 0000000000000000000000000000000000000000..56e465f8d3463259bf307ec774fc269be2e42b34 --- /dev/null +++ b/test/material/fluidmatrixinteractions/2p/test_materiallaws.cc @@ -0,0 +1,195 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * \ingroup MaterialTests + * \brief Test for the material laws Brooks-Corey and van-Genuchten. + */ + + #include <config.h> + #include <dumux/common/math.hh> + + #include <dumux/material/fluidmatrixinteractions/2p/brookscorey.hh> + #include <dumux/material/fluidmatrixinteractions/2p/brookscoreyparams.hh> + #include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> + #include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscoreyparams.hh> + + #include <dumux/material/fluidmatrixinteractions/2p/vangenuchten.hh> + #include <dumux/material/fluidmatrixinteractions/2p/vangenuchtenparams.hh> + #include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> + #include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchtenparams.hh> + + #include <dumux/common/numericdifferentiation.hh> + #include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> + + #include <dumux/io/plotmateriallaw.hh> + #include <dumux/io/gnuplotinterface.hh> + #include <dumux/io/container.hh> + +template <class Scalar, class MaterialLaw, class MaterialLawRegularized, class MaterialLawParams, class MaterialLawParamsRegularized> +void testMaterialLawCommon(MaterialLaw &materialLaw, + MaterialLawRegularized &materialLawRegularized, + MaterialLawParams &materialLawParams, + MaterialLawParamsRegularized &materialLawParamsRegularized, + Scalar sweValue, + Scalar pcValue, + Scalar eps) +{ + // test if derivatives match numerical derivatives for dpc_dsw + Scalar analyticDerivativePcSw = materialLaw.dpc_dswe(materialLawParams, sweValue); + Scalar numericDerivativePcSw = 0.0; + + auto materialLawPcNumericPcSw = [&](Scalar sw) + { + return materialLaw.pc(materialLawParams, sw); + }; + + Dumux::NumericDifferentiation::partialDerivative(materialLawPcNumericPcSw, sweValue, + numericDerivativePcSw, + materialLaw.pc(materialLawParams, sweValue), + eps, 0 /*central*/); + + if (Dune::FloatCmp::eq(analyticDerivativePcSw, numericDerivativePcSw, eps*analyticDerivativePcSw)) + DUNE_THROW(Dune::Exception, "analytic derivative dpc_dswe doesn't match numerical derivative dpc_dswe: " + << analyticDerivativePcSw << " != " << numericDerivativePcSw << "\n"); + + // test if derivatives match numerical derivatives for dsw_dpc + Scalar analyticDerivativeSwPc = materialLaw.dswe_dpc(materialLawParams, pcValue); + Scalar numericDerivativeSwPc = 0.0; + + auto materialLawPcNumericSwPc = [&](Scalar pc) + { + return materialLaw.sw(materialLawParams, pc); + }; + + Dumux::NumericDifferentiation::partialDerivative(materialLawPcNumericSwPc, pcValue, + numericDerivativeSwPc, + materialLaw.sw(materialLawParams, pcValue), + eps, 0 /*central*/); + + if (Dune::FloatCmp::eq(analyticDerivativeSwPc, numericDerivativeSwPc, eps*analyticDerivativeSwPc)) + DUNE_THROW(Dune::Exception, "analytic derivative dswe_dpc doesn't match numerical derivative dsw_dpc: " + << analyticDerivativeSwPc << " != " << numericDerivativeSwPc << "\n"); + + // test if the unregularized pc is the same as regularized pc in the non-regularized range + Scalar pC = materialLaw.pc(materialLawParams, sweValue); + Scalar pCReg = materialLawRegularized.pc(materialLawParamsRegularized, sweValue); + + if (Dune::FloatCmp::ne(pC, pCReg, eps*pC)) + DUNE_THROW(Dune::Exception, "regulized pc doesn't match unregularized pc: " + << pCReg << " != " << pC << "\n"); + + // test if endPointPc() is the same as evaluation at Sw=1 and entryPressure + // for the un-regularized material law + Scalar pCSat = materialLaw.pc(materialLawParams, 1.0); + Scalar endPointPc = materialLaw.endPointPc(materialLawParams); + + if (Dune::FloatCmp::ne(pCSat, endPointPc, eps*pCSat)) + DUNE_THROW(Dune::Exception, "pc(Sw=1) doesn't match endPointPc: " << pCSat << " != " + << endPointPc << "\n"); + + // for the regularized material law + Scalar pCSatReg = materialLawRegularized.pc(materialLawParamsRegularized, 1.0); + Scalar endPointPcReg = materialLawRegularized.endPointPc(materialLawParamsRegularized); + + if (Dune::FloatCmp::ne(pCSatReg, endPointPcReg, eps*pCSatReg)) + DUNE_THROW(Dune::Exception, "regularized pc(Sw=1) doesn't match regularized endPointPc: " + << pCSatReg << " != " << endPointPcReg << "\n"); +} + + int main(int argc, char** argv) + { + using namespace Dumux; + + using Scalar = double; + + using BrooksCorey = BrooksCorey<Scalar>; + using BrooksCoreyParams = typename BrooksCorey::Params; + using BrooksCoreyRegularized = RegularizedBrooksCorey<Scalar>; + using BrooksCoreyParamsRegularized = typename BrooksCoreyRegularized::Params; + + BrooksCorey brooksCorey; + BrooksCoreyParams brooksCoreyParams; + BrooksCoreyRegularized brooksCoreyRegularized; + BrooksCoreyParamsRegularized brooksCoreyParamsRegularized; + + using VanGenuchten = VanGenuchten<Scalar>; + using VanGenuchtenParams = typename VanGenuchten::Params; + using VanGenuchtenRegularized = RegularizedVanGenuchten<Scalar>; + using VanGenuchtenParamsRegularized = typename VanGenuchtenRegularized::Params; + + // set Params Brooks-Corey + brooksCoreyParams.setPe(1e4); + brooksCoreyParams.setLambda(2.0); + brooksCoreyParamsRegularized.setPe(1e4); + brooksCoreyParamsRegularized.setLambda(2.0); + + VanGenuchten vanGenuchten; + VanGenuchtenParams vanGenuchtenParams; + VanGenuchtenRegularized vanGenuchtenRegularized; + VanGenuchtenParamsRegularized vanGenuchtenParamsRegularized; + + // set Params van-Genuchten + vanGenuchtenParams.setVgAlpha(6.66e-5); + vanGenuchtenParams.setVgn(3.652); + vanGenuchtenParamsRegularized.setVgAlpha(6.66e-5); + vanGenuchtenParamsRegularized.setVgn(3.652); + + // test common functions of both material laws + // define ranges for sw and pc for testing the material laws + const int n = 10; //size of the following vectors + const auto sweValues = Dumux::linspace(0.005, 1.0, n); // range of tested sw values + const auto pcValues = Dumux::linspace(1.0, 10000.0, n); // range of tested pc values + Scalar eps = 1.0e-6; // threshhold value + + for( int i = 0; i < n; i++) + { + // test Brooks-Corey + testMaterialLawCommon<Scalar, BrooksCorey, BrooksCoreyRegularized, BrooksCoreyParams, BrooksCoreyParamsRegularized> + (brooksCorey, brooksCoreyRegularized, brooksCoreyParams, brooksCoreyParamsRegularized, sweValues[i], pcValues[i], eps); + // test van-Genuchten + testMaterialLawCommon<Scalar, VanGenuchten, VanGenuchtenRegularized, VanGenuchtenParams, VanGenuchtenParamsRegularized> + (vanGenuchten, vanGenuchtenRegularized, vanGenuchtenParams, vanGenuchtenParamsRegularized, sweValues[i], pcValues[i], eps); + } + + // test Brooks-Corey specific functions + // test if endPointPc() is the same as entryPressure + Scalar pCSat = brooksCorey.pc(brooksCoreyParams, 1.0); + Scalar pCSatReg = brooksCoreyRegularized.pc(brooksCoreyParamsRegularized, 1.0); + if (Dune::FloatCmp::ne(pCSat, brooksCoreyParams.pe(), eps*pCSat)) + DUNE_THROW(Dune::Exception, "pc(Sw=1) doesn't match entryPressure: " << pCSat << " != " << brooksCoreyParams.pe() << "\n"); + if (Dune::FloatCmp::ne(pCSatReg, brooksCoreyParamsRegularized.pe(), eps*pCSatReg)) + DUNE_THROW(Dune::Exception, "regularized pc(Sw=1) doesn't match regularized entryPressure: " << pCSatReg << " != " << brooksCoreyParamsRegularized.pe() << "\n"); + +// 4) test against some precomputed reference values (a good regression test) + GnuplotInterface<double> gnuplot; + gnuplot.setOpenPlotWindow(false); + using PlotMaterialLaw = PlotMaterialLaw<Scalar, BrooksCorey>; + PlotMaterialLaw plotMaterialLaw; + const std::string fileName = "pcswcurve.dat"; + + plotMaterialLaw.addpcswcurve(gnuplot, brooksCoreyParams, 0.0 + eps, 1.0, fileName); + +// 5) //TODO test eff to abs law +// using MaterialLaw = EffToAbsLaw<BrooksCorey>; +// using MaterialLawRegularized = EffToAbsLaw<EffectiveLawRegularized>; + + + return 0; + } \ No newline at end of file diff --git a/test/references/pcswcurve.dat b/test/references/pcswcurve.dat new file mode 100644 index 0000000000000000000000000000000000000000..72066bc8edea164ca327b532f4cba3e11873287f --- /dev/null +++ b/test/references/pcswcurve.dat @@ -0,0 +1,1001 @@ +1e-06 1e+07 +0.001001 316070 +0.002001 223551 +0.003001 182544 +0.004001 158094 +0.005001 141407 +0.00600099 129089 +0.00700099 119514 +0.00800099 111796 +0.00900099 105403 +0.010001 99995.1 +0.011001 95342 +0.012001 91283.3 +0.013001 87702.5 +0.014001 84512.4 +0.015001 81647 +0.016001 79054.5 +0.017001 76694.3 +0.018001 74533.6 +0.019001 72545.8 +0.020001 70708.9 +0.021001 69004.9 +0.022001 67418.5 +0.023001 65936.6 +0.024001 64548.4 +0.025001 63244.3 +0.026001 62016.2 +0.027001 60857 +0.028001 59760.4 +0.029001 58721 +0.030001 57734.1 +0.031001 56795.3 +0.032001 55900.9 +0.033001 55047.4 +0.034001 54231.8 +0.035001 53451.5 +0.036001 52703.9 +0.037001 51986.8 +0.038001 51298.3 +0.039001 50636.3 +0.040001 49999.4 +0.041001 49385.9 +0.042001 48794.4 +0.043001 48223.7 +0.044001 47672.6 +0.045001 47140 +0.046001 46624.8 +0.047001 46126.1 +0.048001 45643.1 +0.049001 45175 +0.050001 44720.9 +0.0510009 44280.3 +0.0520009 43852.5 +0.0530009 43436.8 +0.0540009 43032.8 +0.0550009 42639.8 +0.0560009 42257.4 +0.0570009 41885 +0.0580009 41522.4 +0.0590009 41169 +0.0600009 40824.5 +0.0610009 40488.5 +0.0620009 40160.7 +0.0630009 39840.7 +0.0640009 39528.2 +0.0650009 39222.9 +0.0660009 38924.7 +0.0670009 38633.1 +0.0680009 38348 +0.0690009 38069.1 +0.0700009 37796.2 +0.0710009 37529.1 +0.0720009 37267.6 +0.0730009 37011.4 +0.0740009 36760.5 +0.0750009 36514.6 +0.0760009 36273.6 +0.0770009 36037.3 +0.0780009 35805.5 +0.0790009 35578.2 +0.0800009 35355.1 +0.0810009 35136.2 +0.0820009 34921.3 +0.0830009 34710.3 +0.0840009 34503.1 +0.0850009 34299.5 +0.0860009 34099.5 +0.0870009 33903 +0.0880009 33709.8 +0.0890009 33519.9 +0.0900009 33333.2 +0.0910009 33149.5 +0.0920009 32968.9 +0.0930009 32791.1 +0.0940009 32616.2 +0.0950009 32444.1 +0.0960009 32274.7 +0.0970009 32107.9 +0.0980009 31943.7 +0.0990009 31781.9 +0.100001 31622.6 +0.101001 31465.7 +0.102001 31311.1 +0.103001 31158.7 +0.104001 31008.6 +0.105001 30860.5 +0.106001 30714.6 +0.107001 30570.8 +0.108001 30428.9 +0.109001 30289 +0.110001 30151 +0.111001 30014.9 +0.112001 29880.6 +0.113001 29748.1 +0.114001 29617.3 +0.115001 29488.3 +0.116001 29360.9 +0.117001 29235.2 +0.118001 29111 +0.119001 28988.4 +0.120001 28867.4 +0.121001 28747.9 +0.122001 28629.8 +0.123001 28513.2 +0.124001 28398 +0.125001 28284.2 +0.126001 28171.7 +0.127001 28060.6 +0.128001 27950.8 +0.129001 27842.2 +0.130001 27734.9 +0.131001 27628.9 +0.132001 27524 +0.133001 27420.3 +0.134001 27317.8 +0.135001 27216.5 +0.136001 27116.2 +0.137001 27017.1 +0.138001 26919 +0.139001 26822 +0.140001 26726 +0.141001 26631.1 +0.142001 26537.2 +0.143001 26444.2 +0.144001 26352.2 +0.145001 26261.2 +0.146001 26171.1 +0.147001 26082 +0.148001 25993.7 +0.149001 25906.3 +0.150001 25819.8 +0.151001 25734.2 +0.152001 25649.4 +0.153001 25565.4 +0.154001 25482.3 +0.155001 25400 +0.156001 25318.4 +0.157001 25237.7 +0.158001 25157.7 +0.159001 25078.4 +0.160001 24999.9 +0.161001 24922.2 +0.162001 24845.1 +0.163001 24768.8 +0.164001 24693.2 +0.165001 24618.2 +0.166001 24544 +0.167001 24470.4 +0.168001 24397.4 +0.169001 24325.2 +0.170001 24253.5 +0.171001 24182.5 +0.172001 24112.1 +0.173001 24042.3 +0.174001 23973.1 +0.175001 23904.5 +0.176001 23836.5 +0.177001 23769.1 +0.178001 23702.2 +0.179001 23635.9 +0.180001 23570.2 +0.181001 23505 +0.182001 23440.3 +0.183001 23376.2 +0.184001 23312.6 +0.185001 23249.5 +0.186001 23186.9 +0.187001 23124.8 +0.188001 23063.2 +0.189001 23002.1 +0.190001 22941.5 +0.191001 22881.4 +0.192001 22821.7 +0.193001 22762.5 +0.194001 22703.8 +0.195001 22645.5 +0.196001 22587.7 +0.197001 22530.2 +0.198001 22473.3 +0.199001 22416.7 +0.200001 22360.6 +0.201001 22304.9 +0.202001 22249.7 +0.203001 22194.8 +0.204001 22140.3 +0.205001 22086.3 +0.206001 22032.6 +0.207001 21979.3 +0.208001 21926.4 +0.209001 21873.9 +0.210001 21821.7 +0.211001 21770 +0.212001 21718.6 +0.213001 21667.5 +0.214001 21616.8 +0.215001 21566.5 +0.216001 21516.5 +0.217001 21466.9 +0.218001 21417.6 +0.219001 21368.7 +0.220001 21320 +0.221001 21271.7 +0.222001 21223.8 +0.223001 21176.1 +0.224001 21128.8 +0.225001 21081.8 +0.226001 21035.1 +0.227001 20988.7 +0.228001 20942.7 +0.229001 20896.9 +0.230001 20851.4 +0.231001 20806.2 +0.232001 20761.3 +0.233001 20716.7 +0.234001 20672.4 +0.235001 20628.4 +0.236001 20584.6 +0.237001 20541.2 +0.238001 20498 +0.239001 20455 +0.240001 20412.4 +0.241001 20370 +0.242001 20327.9 +0.243001 20286 +0.244001 20244.4 +0.245001 20203 +0.246001 20161.9 +0.247001 20121.1 +0.248001 20080.5 +0.249001 20040.1 +0.250001 20000 +0.251001 19960.1 +0.252001 19920.4 +0.253001 19881 +0.254001 19841.9 +0.255001 19802.9 +0.256001 19764.2 +0.257001 19725.7 +0.258001 19687.5 +0.259001 19649.4 +0.260001 19611.6 +0.261001 19574 +0.262001 19536.6 +0.263001 19499.4 +0.264001 19462.4 +0.265001 19425.7 +0.266001 19389.1 +0.267001 19352.8 +0.268001 19316.7 +0.269001 19280.7 +0.270001 19245 +0.271001 19209.4 +0.272001 19174.1 +0.273001 19138.9 +0.274001 19104 +0.275001 19069.2 +0.276001 19034.6 +0.277001 19000.3 +0.278001 18966.1 +0.279001 18932 +0.280001 18898.2 +0.281001 18864.5 +0.282001 18831.1 +0.283001 18797.8 +0.284001 18764.6 +0.285001 18731.7 +0.286001 18698.9 +0.287001 18666.3 +0.288001 18633.9 +0.289001 18601.6 +0.290001 18569.5 +0.291001 18537.6 +0.292001 18505.8 +0.293001 18474.2 +0.294001 18442.8 +0.295001 18411.5 +0.296001 18380.3 +0.297001 18349.4 +0.298001 18318.6 +0.299001 18287.9 +0.300001 18257.4 +0.301001 18227 +0.302001 18196.8 +0.303001 18166.8 +0.304001 18136.9 +0.305001 18107.1 +0.306001 18077.5 +0.307001 18048.1 +0.308001 18018.7 +0.309001 17989.5 +0.310001 17960.5 +0.311001 17931.6 +0.312001 17902.9 +0.313001 17874.2 +0.314001 17845.7 +0.315001 17817.4 +0.316001 17789.2 +0.317001 17761.1 +0.318001 17733.2 +0.319001 17705.3 +0.320001 17677.7 +0.321001 17650.1 +0.322001 17622.7 +0.323001 17595.4 +0.324001 17568.2 +0.325001 17541.1 +0.326001 17514.2 +0.327001 17487.4 +0.328001 17460.7 +0.329001 17434.2 +0.330001 17407.7 +0.331001 17381.4 +0.332001 17355.2 +0.333001 17329.2 +0.334001 17303.2 +0.335001 17277.4 +0.336001 17251.6 +0.337001 17226 +0.338001 17200.5 +0.339001 17175.1 +0.340001 17149.8 +0.341001 17124.7 +0.342001 17099.6 +0.343001 17074.7 +0.344001 17049.8 +0.345001 17025.1 +0.346001 17000.5 +0.347001 16976 +0.348001 16951.6 +0.349001 16927.3 +0.350001 16903.1 +0.351001 16879 +0.352001 16855 +0.353001 16831.1 +0.354001 16807.3 +0.355001 16783.6 +0.356001 16760 +0.357001 16736.5 +0.358001 16713.1 +0.359001 16689.8 +0.360001 16666.7 +0.361001 16643.6 +0.362001 16620.5 +0.363001 16597.6 +0.364001 16574.8 +0.365001 16552.1 +0.366001 16529.5 +0.367001 16506.9 +0.368001 16484.5 +0.369001 16462.1 +0.370001 16439.9 +0.371001 16417.7 +0.372001 16395.6 +0.373001 16373.6 +0.374001 16351.7 +0.375001 16329.9 +0.376001 16308.2 +0.377001 16286.5 +0.378001 16265 +0.379001 16243.5 +0.380001 16222.1 +0.381001 16200.8 +0.382001 16179.6 +0.383001 16158.5 +0.384001 16137.4 +0.385001 16116.4 +0.386001 16095.6 +0.387001 16074.7 +0.388001 16054 +0.389001 16033.4 +0.390001 16012.8 +0.391001 15992.3 +0.392001 15971.9 +0.393001 15951.6 +0.394001 15931.3 +0.395001 15911.1 +0.396001 15891 +0.397001 15871 +0.398001 15851.1 +0.399001 15831.2 +0.400001 15811.4 +0.401001 15791.6 +0.402001 15772 +0.403001 15752.4 +0.404001 15732.9 +0.405001 15713.5 +0.406001 15694.1 +0.407001 15674.8 +0.408001 15655.6 +0.409001 15636.4 +0.410001 15617.4 +0.411001 15598.4 +0.412001 15579.4 +0.413001 15560.5 +0.414001 15541.7 +0.415001 15523 +0.416001 15504.3 +0.417001 15485.7 +0.418001 15467.2 +0.419001 15448.7 +0.420001 15430.3 +0.421001 15412 +0.422001 15393.7 +0.423001 15375.5 +0.424001 15357.4 +0.425001 15339.3 +0.426001 15321.3 +0.427001 15303.3 +0.428001 15285.4 +0.429001 15267.6 +0.430001 15249.8 +0.431001 15232.1 +0.432001 15214.5 +0.433001 15196.9 +0.434001 15179.4 +0.435001 15162 +0.436001 15144.6 +0.437001 15127.2 +0.438001 15109.9 +0.439001 15092.7 +0.440001 15075.6 +0.441001 15058.5 +0.442001 15041.4 +0.443001 15024.4 +0.444001 15007.5 +0.445001 14990.6 +0.446001 14973.8 +0.447001 14957.1 +0.448001 14940.3 +0.449001 14923.7 +0.450001 14907.1 +0.451001 14890.6 +0.452001 14874.1 +0.453001 14857.7 +0.454001 14841.3 +0.455001 14825 +0.456001 14808.7 +0.457001 14792.5 +0.458001 14776.3 +0.459001 14760.2 +0.460001 14744.2 +0.461001 14728.2 +0.462001 14712.2 +0.463001 14696.3 +0.464001 14680.5 +0.465001 14664.7 +0.466001 14649 +0.467001 14633.3 +0.468001 14617.6 +0.469001 14602 +0.470001 14586.5 +0.471001 14571 +0.472001 14555.6 +0.473001 14540.2 +0.474001 14524.8 +0.475001 14509.5 +0.476001 14494.3 +0.477001 14479.1 +0.478001 14463.9 +0.479001 14448.8 +0.480001 14433.7 +0.481001 14418.7 +0.482001 14403.8 +0.483001 14388.9 +0.484001 14374 +0.485001 14359.2 +0.486001 14344.4 +0.487001 14329.6 +0.488001 14315 +0.489001 14300.3 +0.490001 14285.7 +0.491001 14271.2 +0.492001 14256.6 +0.493001 14242.2 +0.494001 14227.8 +0.495001 14213.4 +0.496001 14199 +0.497001 14184.7 +0.498001 14170.5 +0.499001 14156.3 +0.5 14142.1 +0.501 14128 +0.502 14113.9 +0.503 14099.9 +0.504 14085.9 +0.505 14071.9 +0.506 14058 +0.507 14044.2 +0.508 14030.3 +0.509 14016.5 +0.51 14002.8 +0.511 13989.1 +0.512 13975.4 +0.513 13961.8 +0.514 13948.2 +0.515 13934.7 +0.516 13921.1 +0.517 13907.7 +0.518 13894.2 +0.519 13880.9 +0.52 13867.5 +0.521 13854.2 +0.522 13840.9 +0.523 13827.7 +0.524 13814.5 +0.525 13801.3 +0.526 13788.2 +0.527 13775.1 +0.528 13762 +0.529 13749 +0.53 13736.1 +0.531 13723.1 +0.532 13710.2 +0.533 13697.3 +0.534 13684.5 +0.535 13671.7 +0.536 13659 +0.537 13646.2 +0.538 13633.5 +0.539 13620.9 +0.54 13608.3 +0.541 13595.7 +0.542 13583.1 +0.543 13570.6 +0.544 13558.1 +0.545 13545.7 +0.546 13533.3 +0.547 13520.9 +0.548 13508.6 +0.549 13496.3 +0.55 13484 +0.551 13471.8 +0.552 13459.5 +0.553 13447.4 +0.554 13435.2 +0.555 13423.1 +0.556 13411 +0.557 13399 +0.558 13387 +0.559 13375 +0.56 13363.1 +0.561 13351.1 +0.562 13339.3 +0.563 13327.4 +0.564 13315.6 +0.565 13303.8 +0.566 13292 +0.567 13280.3 +0.568 13268.6 +0.569 13257 +0.57 13245.3 +0.571 13233.7 +0.572 13222.1 +0.573 13210.6 +0.574 13199.1 +0.575 13187.6 +0.576 13176.2 +0.577 13164.7 +0.578 13153.3 +0.579 13142 +0.58 13130.6 +0.581 13119.3 +0.582 13108.1 +0.583 13096.8 +0.584 13085.6 +0.585 13074.4 +0.586 13063.2 +0.587 13052.1 +0.588 13041 +0.589 13029.9 +0.59 13018.9 +0.591 13007.9 +0.592 12996.9 +0.593 12985.9 +0.594 12975 +0.595 12964.1 +0.596 12953.2 +0.597 12942.3 +0.598 12931.5 +0.599 12920.7 +0.6 12909.9 +0.601 12899.2 +0.602 12888.5 +0.603 12877.8 +0.604 12867.1 +0.605 12856.5 +0.606 12845.9 +0.607 12835.3 +0.608 12824.7 +0.609 12814.2 +0.61 12803.7 +0.611 12793.2 +0.612 12782.7 +0.613 12772.3 +0.614 12761.9 +0.615 12751.5 +0.616 12741.2 +0.617 12730.8 +0.618 12720.5 +0.619 12710.3 +0.62 12700 +0.621 12689.8 +0.622 12679.6 +0.623 12669.4 +0.624 12659.2 +0.625 12649.1 +0.626 12639 +0.627 12628.9 +0.628 12618.9 +0.629 12608.8 +0.63 12598.8 +0.631 12588.8 +0.632 12578.9 +0.633 12568.9 +0.634 12559 +0.635 12549.1 +0.636 12539.2 +0.637 12529.4 +0.638 12519.6 +0.639 12509.8 +0.64 12500 +0.641 12490.2 +0.642 12480.5 +0.643 12470.8 +0.644 12461.1 +0.645 12451.5 +0.646 12441.8 +0.647 12432.2 +0.648 12422.6 +0.649 12413 +0.65 12403.5 +0.651 12393.9 +0.652 12384.4 +0.653 12374.9 +0.654 12365.5 +0.655 12356 +0.656 12346.6 +0.657 12337.2 +0.658 12327.8 +0.659 12318.5 +0.66 12309.1 +0.661 12299.8 +0.662 12290.5 +0.663 12281.3 +0.664 12272 +0.665 12262.8 +0.666 12253.6 +0.667 12244.4 +0.668 12235.2 +0.669 12226.1 +0.67 12216.9 +0.671 12207.8 +0.672 12198.7 +0.673 12189.7 +0.674 12180.6 +0.675 12171.6 +0.676 12162.6 +0.677 12153.6 +0.678 12144.7 +0.679 12135.7 +0.68 12126.8 +0.681 12117.9 +0.682 12109 +0.683 12100.1 +0.684 12091.3 +0.685 12082.4 +0.686 12073.6 +0.687 12064.8 +0.688 12056.1 +0.689 12047.3 +0.69 12038.6 +0.691 12029.9 +0.692 12021.2 +0.693 12012.5 +0.694 12003.8 +0.695 11995.2 +0.696 11986.6 +0.697 11978 +0.698 11969.4 +0.699 11960.8 +0.7 11952.3 +0.701 11943.8 +0.702 11935.2 +0.703 11926.8 +0.704 11918.3 +0.705 11909.8 +0.706 11901.4 +0.707 11893 +0.708 11884.6 +0.709 11876.2 +0.71 11867.8 +0.711 11859.5 +0.712 11851.1 +0.713 11842.8 +0.714 11834.5 +0.715 11826.2 +0.716 11818 +0.717 11809.7 +0.718 11801.5 +0.719 11793.3 +0.72 11785.1 +0.721 11776.9 +0.722 11768.8 +0.723 11760.6 +0.724 11752.5 +0.725 11744.4 +0.726 11736.3 +0.727 11728.2 +0.728 11720.2 +0.729 11712.1 +0.73 11704.1 +0.731 11696.1 +0.732 11688.1 +0.733 11680.1 +0.734 11672.2 +0.735 11664.2 +0.736 11656.3 +0.737 11648.4 +0.738 11640.5 +0.739 11632.6 +0.74 11624.8 +0.741 11616.9 +0.742 11609.1 +0.743 11601.3 +0.744 11593.5 +0.745 11585.7 +0.746 11577.9 +0.747 11570.2 +0.748 11562.4 +0.749 11554.7 +0.75 11547 +0.751 11539.3 +0.752 11531.6 +0.753 11524 +0.754 11516.3 +0.755 11508.7 +0.756 11501.1 +0.757 11493.5 +0.758 11485.9 +0.759 11478.3 +0.76 11470.8 +0.761 11463.2 +0.762 11455.7 +0.763 11448.2 +0.764 11440.7 +0.765 11433.2 +0.766 11425.8 +0.767 11418.3 +0.768 11410.9 +0.769 11403.5 +0.77 11396.1 +0.771 11388.7 +0.772 11381.3 +0.773 11373.9 +0.774 11366.6 +0.775 11359.2 +0.776 11351.9 +0.777 11344.6 +0.778 11337.3 +0.779 11330 +0.78 11322.8 +0.781 11315.5 +0.782 11308.3 +0.783 11301.1 +0.784 11293.8 +0.785 11286.7 +0.786 11279.5 +0.787 11272.3 +0.788 11265.1 +0.789 11258 +0.79 11250.9 +0.791 11243.8 +0.792 11236.7 +0.793 11229.6 +0.794 11222.5 +0.795 11215.4 +0.796 11208.4 +0.797 11201.4 +0.798 11194.3 +0.799 11187.3 +0.8 11180.3 +0.801 11173.4 +0.802 11166.4 +0.803 11159.4 +0.804 11152.5 +0.805 11145.6 +0.806 11138.6 +0.807 11131.7 +0.808 11124.9 +0.809 11118 +0.81 11111.1 +0.811 11104.3 +0.812 11097.4 +0.813 11090.6 +0.814 11083.8 +0.815 11077 +0.816 11070.2 +0.817 11063.4 +0.818 11056.6 +0.819 11049.9 +0.82 11043.2 +0.821 11036.4 +0.822 11029.7 +0.823 11023 +0.824 11016.3 +0.825 11009.6 +0.826 11003 +0.827 10996.3 +0.828 10989.7 +0.829 10983 +0.83 10976.4 +0.831 10969.8 +0.832 10963.2 +0.833 10956.6 +0.834 10950.1 +0.835 10943.5 +0.836 10937 +0.837 10930.4 +0.838 10923.9 +0.839 10917.4 +0.84 10910.9 +0.841 10904.4 +0.842 10897.9 +0.843 10891.5 +0.844 10885 +0.845 10878.6 +0.846 10872.1 +0.847 10865.7 +0.848 10859.3 +0.849 10852.9 +0.85 10846.5 +0.851 10840.1 +0.852 10833.8 +0.853 10827.4 +0.854 10821.1 +0.855 10814.8 +0.856 10808.4 +0.857 10802.1 +0.858 10795.8 +0.859 10789.6 +0.86 10783.3 +0.861 10777 +0.862 10770.8 +0.863 10764.5 +0.864 10758.3 +0.865 10752.1 +0.866 10745.9 +0.867 10739.7 +0.868 10733.5 +0.869 10727.3 +0.87 10721.1 +0.871 10715 +0.872 10708.8 +0.873 10702.7 +0.874 10696.6 +0.875 10690.4 +0.876 10684.3 +0.877 10678.3 +0.878 10672.2 +0.879 10666.1 +0.88 10660 +0.881 10654 +0.882 10647.9 +0.883 10641.9 +0.884 10635.9 +0.885 10629.9 +0.886 10623.9 +0.887 10617.9 +0.888 10611.9 +0.889 10605.9 +0.89 10600 +0.891 10594 +0.892 10588.1 +0.893 10582.2 +0.894 10576.2 +0.895 10570.3 +0.896 10564.4 +0.897 10558.5 +0.898 10552.7 +0.899 10546.8 +0.9 10540.9 +0.901 10535.1 +0.902 10529.2 +0.903 10523.4 +0.904 10517.6 +0.905 10511.8 +0.906 10506 +0.907 10500.2 +0.908 10494.4 +0.909 10488.6 +0.91 10482.8 +0.911 10477.1 +0.912 10471.3 +0.913 10465.6 +0.914 10459.9 +0.915 10454.2 +0.916 10448.5 +0.917 10442.8 +0.918 10437.1 +0.919 10431.4 +0.92 10425.7 +0.921 10420.1 +0.922 10414.4 +0.923 10408.8 +0.924 10403.1 +0.925 10397.5 +0.926 10391.9 +0.927 10386.3 +0.928 10380.7 +0.929 10375.1 +0.93 10369.5 +0.931 10363.9 +0.932 10358.4 +0.933 10352.8 +0.934 10347.3 +0.935 10341.8 +0.936 10336.2 +0.937 10330.7 +0.938 10325.2 +0.939 10319.7 +0.94 10314.2 +0.941 10308.7 +0.942 10303.3 +0.943 10297.8 +0.944 10292.3 +0.945 10286.9 +0.946 10281.5 +0.947 10276 +0.948 10270.6 +0.949 10265.2 +0.95 10259.8 +0.951 10254.4 +0.952 10249 +0.953 10243.6 +0.954 10238.3 +0.955 10232.9 +0.956 10227.5 +0.957 10222.2 +0.958 10216.9 +0.959 10211.5 +0.96 10206.2 +0.961 10200.9 +0.962 10195.6 +0.963 10190.3 +0.964 10185 +0.965 10179.7 +0.966 10174.5 +0.967 10169.2 +0.968 10163.9 +0.969 10158.7 +0.97 10153.5 +0.971 10148.2 +0.972 10143 +0.973 10137.8 +0.974 10132.6 +0.975 10127.4 +0.976 10122.2 +0.977 10117 +0.978 10111.8 +0.979 10106.7 +0.98 10101.5 +0.981 10096.4 +0.982 10091.2 +0.983 10086.1 +0.984 10081 +0.985 10075.9 +0.986 10070.7 +0.987 10065.6 +0.988 10060.5 +0.989 10055.5 +0.99 10050.4 +0.991 10045.3 +0.992 10040.2 +0.993 10035.2 +0.994 10030.1 +0.995 10025.1 +0.996 10020.1 +0.997 10015 +0.998 10010 +0.999 10005 +1 10000